started templates for members and jobs
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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')
|
||||
]
|
||||
|
||||
@@ -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):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user