started templates for members and jobs

This commit is contained in:
2020-08-15 14:56:31 +00:00
parent b5f632dffe
commit 41deac2ee3
10 changed files with 146 additions and 5 deletions

View File

@@ -56,6 +56,8 @@ class Member(models.Model):
('P', _('Pension')),
]
role = models.CharField(max_length=1, choices=__choices, default='A')
role_choices=[c[0] for c in __choices] # Letter from choices
description = models.TextField(null=True, blank=True)
image = models.ImageField(null=True, blank=True)
@@ -85,7 +87,11 @@ class Member(models.Model):
all_members = models.Manager()
active_member = MemberManager()
pension_member = PensionManager()
@property
def all_jobs(self):
return [j.job for j in self.jobs.all()]
class Meta:
verbose_name = "Mitglied"
verbose_name_plural = "Mitglieder"
@@ -125,13 +131,33 @@ class Job(models.Model):
description = models.TextField(null=True, blank=True)
image = models.ImageField(null=True, blank=True)
#objects = models.Manager()
job_group = models.ForeignKey(
JobGroup,
on_delete=models.CASCADE,
verbose_name="Job Gruppe",
)
@property
def active_members(self):
"Active Members for this job"
def sorted_jobmembers():
return sorted(list(self.jobmembers.all()), # filter active fehlt noch
key=lambda x: (JobMember._role_sort[x.job_role], JobMember.job_start))
m =[jm.member_with_role for jm in sorted_jobmembers()]
return m
@property
def active_members_count(self):
"Count Active Members"
return self.jobmembers.count()
@property
def inactive_members(self):
"return the inactive members"
return [jm.member for jm in self.jobmembers.all()] # filter inactive fehlt noch
class Meta:
verbose_name = "Tätigkeit"
verbose_name_plural = "Tätigkeiten"
@@ -151,17 +177,29 @@ class JobMember(models.Model):
Member,
on_delete=models.CASCADE,
verbose_name="Mitglied",
related_name="jobs"
)
job = models.ForeignKey(
Job,
on_delete=models.CASCADE,
verbose_name="Tätigkeit",
related_name="jobmembers"
)
job_start = models.DateField('Job Start')
job_end = models.DateField('Job Ende', null=True, blank=True)
__choices = [
@property
def member_with_role(self):
"return the member with added role and job start and job end"
m=self.member
m.job_start=self.job_start
m.job_end=self.job_end
m.job_role=self.job_role
m.job_role_text=dict(JobMember._choices)[self.job_role]
return m
_choices = [
('1V', _('VorsitzendeR')),
('2V', _('stv VorsitzendeR')),
('3V', _('2. stv VorsitzendeR')),
@@ -169,7 +207,16 @@ class JobMember(models.Model):
('E', _('Ersatzmitglied')),
('V', _('VerantwortlicheR'))
]
job_role = models.CharField(max_length=2, choices=__choices, default='M')
_role_sort = {
'1V': 1,
'2V': 2,
'3V': 3,
'4V': 4,
'M':5,
'E':6,
'V':7
}
job_role = models.CharField(max_length=2, choices=_choices, default='M')
jobmember = models.Manager()
active_member = ActiveMemberManager()

View File

@@ -5,4 +5,7 @@ from . import views
urlpatterns = [
path('', views.index, name='members.index'),
path('list', views.list, name='members.list'),
path('list/<str:filter>', views.list, name='members.list'),
path('<str:slug>', views.show_job, name='members.show_job')
]

View File

@@ -26,6 +26,20 @@ def index(request):
return render(request, 'members/index.html', context)
def show_job(request, slug=None):
job=Job.objects.get(slug=slug)
return render(request, 'members/show_job.html', {"job": job})
def list(request, filter=None):
"""
View for a list of members filtered or not
"""
if filter is None:
members = deque(Member.all_members.all())
if filter in Member.role_choices:
members=deque(Member.all_members.filter(role=filter).all())
return render(request, 'members/list.html',{"members": members})
class MemberViewSet(viewsets.ModelViewSet):
"""