update member view
This commit is contained in:
@@ -98,6 +98,7 @@ INSTALLED_APPS = [
|
|||||||
MIDDLEWARE = [
|
MIDDLEWARE = [
|
||||||
'django.middleware.security.SecurityMiddleware',
|
'django.middleware.security.SecurityMiddleware',
|
||||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
|
'django.middleware.locale.LocaleMiddleware',
|
||||||
'django.middleware.common.CommonMiddleware',
|
'django.middleware.common.CommonMiddleware',
|
||||||
'django.middleware.csrf.CsrfViewMiddleware',
|
'django.middleware.csrf.CsrfViewMiddleware',
|
||||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||||
@@ -121,6 +122,7 @@ TEMPLATES = [
|
|||||||
'django.template.context_processors.request',
|
'django.template.context_processors.request',
|
||||||
'django.contrib.auth.context_processors.auth',
|
'django.contrib.auth.context_processors.auth',
|
||||||
'django.contrib.messages.context_processors.messages',
|
'django.contrib.messages.context_processors.messages',
|
||||||
|
'django.template.context_processors.i18n',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class ActiveJobMemberManager(models.Manager):
|
|||||||
return a list of active member, and members who are still working
|
return a list of active member, and members who are still working
|
||||||
'''
|
'''
|
||||||
def get_all_by_slug(self, slug):
|
def get_all_by_slug(self, slug):
|
||||||
return self.get_queryset().filter(job__job_group__slug=slug)
|
return self.get_queryset().filter(job__job_group__slug=slug).order_by('job__slug', 'job_role', 'member__firstname')
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
date_today = timezone.now().date()
|
date_today = timezone.now().date()
|
||||||
@@ -31,7 +31,7 @@ class InactiveJobMemberManager(models.Manager):
|
|||||||
return a list of inactive member
|
return a list of inactive member
|
||||||
'''
|
'''
|
||||||
def get_all_by_slug(self, slug):
|
def get_all_by_slug(self, slug):
|
||||||
return self.get_queryset().filter(job__job_group__slug=slug)
|
return self.get_queryset().filter(job__job_group__slug=slug).order_by('job__slug', 'job_role', 'member__firstname')
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
date_today = timezone.now().date()
|
date_today = timezone.now().date()
|
||||||
@@ -221,12 +221,12 @@ class JobMember(models.Model):
|
|||||||
job_end = models.DateField('Job Ende', null=True, blank=True)
|
job_end = models.DateField('Job Ende', null=True, blank=True)
|
||||||
|
|
||||||
class JobRole(models.TextChoices):
|
class JobRole(models.TextChoices):
|
||||||
PRESIDENT = '1V', _('VorsitzendeR')
|
PRESIDENT = ('10', _('VorsitzendeR'))
|
||||||
VICE_PRESIDENT = '2V', _('stv VorsitzendeR')
|
VICE_PRESIDENT = ('20', _('stv VorsitzendeR'))
|
||||||
SECOND_VICE_PRESIDENT = '3V', _('2. stv VorsitzendeR')
|
SECOND_VICE_PRESIDENT = ('30', _('2. stv VorsitzendeR'))
|
||||||
MEMBER = 'M', _('Mitglied')
|
PERSON_RESPONSIBLE = ('40', _('VerantwortlicheR'))
|
||||||
SUBSTITUTE_MEMBER = 'E', _('Ersatzmitglied')
|
MEMBER = ('50', _('Mitglied'))
|
||||||
PERSON_RESPONSIBLE = 'V', _('VerantwortlicheR')
|
SUBSTITUTE_MEMBER = ('60', _('Ersatzmitglied'))
|
||||||
|
|
||||||
job_role = models.CharField(max_length=2, choices=JobRole.choices, default=JobRole.MEMBER)
|
job_role = models.CharField(max_length=2, choices=JobRole.choices, default=JobRole.MEMBER)
|
||||||
|
|
||||||
|
|||||||
@@ -11,10 +11,23 @@ from rest_framework import viewsets
|
|||||||
#from rest_framework import permissions
|
#from rest_framework import permissions
|
||||||
|
|
||||||
|
|
||||||
|
def __remove_if_zero_active_mem(job_group):
|
||||||
|
for elem in job_group:
|
||||||
|
job_members = JobMember.active_member.get_all_by_slug(slug=elem.slug)
|
||||||
|
if not job_members:
|
||||||
|
job_group.remove(elem)
|
||||||
|
|
||||||
|
return job_group
|
||||||
|
|
||||||
|
|
||||||
def __get_job_groups():
|
def __get_job_groups():
|
||||||
pinned_job_groups = JobGroup.all_jobgroups.get_pinned_active_jobgroups()
|
pinned_job_groups = JobGroup.all_jobgroups.get_pinned_active_jobgroups()
|
||||||
unpinned_job_groups = JobGroup.all_jobgroups.get_unpinned_active_jobgroups()
|
unpinned_job_groups = JobGroup.all_jobgroups.get_unpinned_active_jobgroups()
|
||||||
|
|
||||||
|
# remove job group if there is no longer an active member
|
||||||
|
pinned_job_groups = __remove_if_zero_active_mem(pinned_job_groups)
|
||||||
|
unpinned_job_groups = __remove_if_zero_active_mem(unpinned_job_groups)
|
||||||
|
|
||||||
# show max 5 pinned jobgroups
|
# show max 5 pinned jobgroups
|
||||||
if len(pinned_job_groups) > 5:
|
if len(pinned_job_groups) > 5:
|
||||||
for idx, val in enumerate(pinned_job_groups[5:]):
|
for idx, val in enumerate(pinned_job_groups[5:]):
|
||||||
|
|||||||
@@ -23,19 +23,23 @@
|
|||||||
<div class="grid-x grid-padding-x padding-top-1">
|
<div class="grid-x grid-padding-x padding-top-1">
|
||||||
|
|
||||||
{% for job in pinned_job_groups %}
|
{% for job in pinned_job_groups %}
|
||||||
<div class="cell large-2 medium-4 small-6"><a class="button {% if job.slug in request.path %} active {% endif %}" style="width: 100%;" href="/members/jobs/{{job.slug}}">{{job.name}}</a></div>
|
<div class="cell large-2 medium-4 small-6">
|
||||||
|
<a class="button expanded {% if job.slug in request.path %} active {% endif %}" href="/members/jobs/{{job.slug}}">
|
||||||
|
{{job.name}}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% for job in unpinned_job_groups %}
|
{% for job in unpinned_job_groups %}
|
||||||
<div class="cell large-2 medium-4 small-6">
|
<div class="cell large-2 medium-4 small-6">
|
||||||
<a class="button {% if job.slug in request.path %} active {% endif %}" style="width: 100%;" href="/members/jobs/{{job.slug}}">
|
<a class="button expanded {% if job.slug in request.path %} active {% endif %}" href="/members/jobs/{{job.slug}}">
|
||||||
{{ job.name|softhyphen|safe }}
|
{{ job.name|softhyphen|safe }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
<div class="cell large-2 medium-4 small-6"><a class="button memb {% if '/members/' == request.path %} active {% endif %}" style="width: 100%;" href="/members">Alle Mitglieder</a></div>
|
<div class="cell large-2 medium-4 small-6"><a class="button memb expanded {% if '/members/P' == request.path %} active {% endif %}" href="/members/P">Pension</a></div>
|
||||||
<div class="cell large-2 medium-4 small-6"><a class="button memb {% if '/members/P' == request.path %} active {% endif %}" style="width: 100%;" href="/members/P">Pension Mitglieder</a></div>
|
<div class="cell large-2 medium-4 small-6"><a class="button memb expanded {% if '/members/' == request.path %} active {% endif %}" href="/members">Alle Mitglieder</a></div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -72,20 +76,16 @@
|
|||||||
|
|
||||||
{% for jobmem in all_jobmem_list %}
|
{% for jobmem in all_jobmem_list %}
|
||||||
|
|
||||||
<div class="padding-top-1 padding-left-1 padding-bottom-1 padding-right-1" style="background-color: white;">
|
<div class="padding-top-1 padding-left-1 padding-right-1" style="background-color: white;">
|
||||||
|
|
||||||
<h2>{{jobmem.grouper}}<a class="headerlink" href="#{{jobmem.list.0.job.slug}}" title="Permalink to {{jobmem.grouper}}"> #</a></h2>
|
<h2>{{jobmem.grouper}}<a class="headerlink" href="#{{jobmem.list.0.job.slug}}" title="Permalink to {{jobmem.grouper}}"> #</a></h2>
|
||||||
<b>Aktuelle Mitglieder:</b>
|
<b>Aktuelle Mitglieder:</b>
|
||||||
|
|
||||||
<div class="grid-x">
|
<div class="grid-x align-bottom">
|
||||||
|
|
||||||
{% for jm in jobmem.list %}
|
{% for jm in jobmem.list %}
|
||||||
{% with member=jm.member %}
|
{% with member=jm.member %}
|
||||||
<div class="medium-3 large-2 small-6 cell">
|
{% include 'members/partials/_job_membership_grid.html' %}
|
||||||
<h2>{{member.firstname}} {{member.surname}}</h2>
|
|
||||||
{% include 'members/partials/_member.html' %}
|
|
||||||
{{jm.get_job_role_display}} ({{jm.job_start|date}} - {{jm.job_end|date}})
|
|
||||||
</div>
|
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
<div class="grid-x">
|
<div class="grid-x align-bottom">
|
||||||
{% for member in members %}
|
{% for member in members %}
|
||||||
<div class="cell large-2 medium-3 small-6">
|
<div class="cell large-2 medium-3 small-6 padding-right-1">
|
||||||
<h2>{{member.firstname}} {{member.surname}}</h2>
|
<h2>{{member.firstname}} {{member.surname}}</h2>
|
||||||
{% include 'members/partials/_member.html' %}
|
{% include 'members/partials/_member.html' %}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,11 +1,15 @@
|
|||||||
<div class="grid-x">
|
{% load i18n %}
|
||||||
{% for mem in job_memberships %}
|
|
||||||
{% with member=mem.member %}
|
<div class="cell medium-3 large-2 small-6 padding-right-1 padding-bottom-1">
|
||||||
<div class="medium-3 large-2 small-6 cell">
|
|
||||||
<h2>{{member.firstname}} {{member.surname}}</h2>
|
<h2>{{member.firstname}} {{member.surname}}</h2>
|
||||||
{% include 'members/partials/_member.html' %}
|
{% include 'members/partials/_member.html' %}
|
||||||
<h2>{{mem.get_job_role_display}} ({{mem.job_start|date}} - {{mem.job_end|date}})</h2>
|
<br>
|
||||||
</div>
|
{{ jm.get_job_role_display }}<br>
|
||||||
{% endwith %}
|
({{ jm.job_start|date }} -
|
||||||
{% endfor %}
|
|
||||||
|
{% if jm.job_end %}
|
||||||
|
{{ jm.job_end|date }})<br>
|
||||||
|
{% else %}
|
||||||
|
)<br><br>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
@@ -4,7 +4,6 @@
|
|||||||
<div class="thumb-layer">
|
<div class="thumb-layer">
|
||||||
<div>
|
<div>
|
||||||
<h1>{{member.nickname}}</h1>
|
<h1>{{member.nickname}}</h1>
|
||||||
<p>{{member.firstname}} {{member.surname}}</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
Reference in New Issue
Block a user