diff --git a/fet2020/members/admin.py b/fet2020/members/admin.py index bb09f9d6..efe528de 100644 --- a/fet2020/members/admin.py +++ b/fet2020/members/admin.py @@ -1,6 +1,13 @@ from django.contrib import admin -from .forms import JobForm, JobGroupForm, JobInlineForm, MemberForm +from .forms import ( + ActiveMemberForm, + InactiveMemberForm, + JobForm, + JobGroupForm, + JobInlineForm, + MemberForm, +) from .models import Job, JobGroup, JobMember, Member @@ -30,6 +37,7 @@ class JobOverviewInline(JobMemberInline): class ActiveMemberInline(JobMemberInline): + form = ActiveMemberForm verbose_name = "Mitglied" verbose_name_plural = "Aktive Mitglieder Liste" @@ -38,6 +46,7 @@ class ActiveMemberInline(JobMemberInline): class InactiveMemberInline(JobMemberInline): + form = InactiveMemberForm verbose_name = "Mitglied" verbose_name_plural = "Inaktive Mitglieder Liste" diff --git a/fet2020/members/forms.py b/fet2020/members/forms.py index 6eed6372..e411101d 100644 --- a/fet2020/members/forms.py +++ b/fet2020/members/forms.py @@ -1,7 +1,7 @@ from ckeditor_uploader.widgets import CKEditorUploadingWidget from django import forms -from .models import Job, JobGroup, Member +from .models import Job, JobGroup, JobMember, Member class JobInlineForm(forms.ModelForm): @@ -10,6 +10,31 @@ class JobInlineForm(forms.ModelForm): fields = ["name"] +class ActiveMemberForm(forms.ModelForm): + class Meta: + fields = "__all__" + model = JobMember + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields["member"].queryset = ( + self.fields["member"] + .queryset.filter(role="A") + .order_by("firstname", "surname") + ) + + +class InactiveMemberForm(forms.ModelForm): + class Meta: + fields = "__all__" + model = JobMember + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + member_qs = self.fields["member"].queryset.order_by("firstname", "surname") + self.fields["member"].queryset = member_qs + + class MemberForm(forms.ModelForm): class Meta: fields = "__all__" diff --git a/fet2020/members/managers.py b/fet2020/members/managers.py index a3fb6106..435078c0 100644 --- a/fet2020/members/managers.py +++ b/fet2020/members/managers.py @@ -12,12 +12,16 @@ class ActiveJobMemberManager(models.Manager): return ( self.get_queryset() .filter(job__job_group__slug=slug) - .order_by("job__slug", "job_role", "member__firstname") + .order_by("job__slug", "job_role", "member__firstname", "member__surname") ) def get_queryset(self): date_today = timezone.now().date() - qs = super().get_queryset().order_by("member__firstname") + qs = ( + super() + .get_queryset() + .order_by("job_role", "member__firstname", "member__surname", "job_start") + ) return qs.filter( Q(member__role="A") & (Q(job_end__gt=date_today) | Q(job_end__isnull=True)) @@ -36,7 +40,11 @@ class InactiveJobMemberManager(models.Manager): def get_queryset(self): date_today = timezone.now().date() - qs = super().get_queryset().order_by("member__firstname") + qs = ( + super() + .get_queryset() + .order_by("member__firstname", "member__surname", "-job_start") + ) return qs.filter( Q(member__role="P")