diff --git a/fet2020/members/models.py b/fet2020/members/models.py index 6f64d3d6..485ee602 100644 --- a/fet2020/members/models.py +++ b/fet2020/members/models.py @@ -9,7 +9,7 @@ from datetime import timedelta from easy_thumbnails.fields import ThumbnailerImageField -class ActiveMemberManager(models.Manager): +class ActiveJobMemberManager(models.Manager): ''' return a list of active member, and members who are still working ''' @@ -18,14 +18,15 @@ class ActiveMemberManager(models.Manager): def get_queryset(self): date_today = timezone.now().date() + qs = super().get_queryset().order_by('member__firstname') - return super().get_queryset().filter( + return qs.filter( Q(member__role=Member.MemberRole.ACTIVE) & (Q(job_end__gt=date_today) | Q(job_end__isnull=True)) ) -class InactiveMemberManager(models.Manager): +class InactiveJobMemberManager(models.Manager): ''' return a list of inactive member ''' @@ -34,16 +35,19 @@ class InactiveMemberManager(models.Manager): def get_queryset(self): date_today = timezone.now().date() + qs = super().get_queryset().order_by('member__firstname') - return super().get_queryset().filter( + return qs.filter( Q(member__role=Member.MemberRole.PENSION) | (Q(job_end__lt=date_today + timedelta(days=1)) & Q(job_end__isnull=False)) ) -class MemberManager(models.Manager): +class JobMemberManager(models.Manager): def get_members(self, role): - return self.get_queryset().filter(Q(member__role=role)) + qs = self.get_queryset().order_by('member__firstname') + + return qs.filter(Q(member__role=role)) class JobGroupManager(models.Manager): @@ -76,6 +80,11 @@ class JobGroupManager(models.Manager): return job_groups +class MemberManager(models.Manager): + def get_queryset(self): + return super().get_queryset().order_by('firstname') + + class Member(models.Model): firstname = models.CharField("Vorname", max_length=128) surname = models.CharField("Nachname", max_length=128) @@ -110,7 +119,7 @@ class Member(models.Model): date_created = models.DateTimeField(auto_now_add=True) # Managers - all_members = models.Manager() + all_members = MemberManager() class Meta: verbose_name = "Mitglied" @@ -207,6 +216,6 @@ class JobMember(models.Model): job_role = models.CharField(max_length=2, choices=JobRole.choices, default=JobRole.MEMBER) - members = MemberManager() - active_member = ActiveMemberManager() - inactive_member = InactiveMemberManager() + members = JobMemberManager() + active_member = ActiveJobMemberManager() + inactive_member = InactiveJobMemberManager() diff --git a/fet2020/members/views.py b/fet2020/members/views.py index b8f0e672..1d267e55 100644 --- a/fet2020/members/views.py +++ b/fet2020/members/views.py @@ -93,7 +93,7 @@ class MemberViewSet(viewsets.ModelViewSet): """ API endpoint that allows users to be viewed or edited. """ - queryset = Member.all_members.all().order_by('nickname') + queryset = Member.all_members.order_by('nickname') serializer_class = MemberSerializer #permission_classes = [permissions.IsAuthenticated] diff --git a/fet2020/templates/layout.html b/fet2020/templates/layout.html index 019f597a..e326fa12 100644 --- a/fet2020/templates/layout.html +++ b/fet2020/templates/layout.html @@ -8,7 +8,7 @@