Coverage for website/documents/admin.py: 72.34%
43 statements
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
1from django.contrib import admin
2from django.contrib.admin import ModelAdmin
3from django.utils.translation import gettext_lazy as _
5from documents import forms
6from documents.models import (
7 AnnualDocument,
8 AssociationDocument,
9 GeneralMeeting,
10 Minutes,
11 MiscellaneousDocument,
12)
15class MinutesInline(admin.StackedInline):
16 """Inline for minutes of a general meeting."""
18 model = Minutes
19 form = forms.MinutesForm
20 extra = 0
23@admin.register(GeneralMeeting)
24class GeneralMeetingAdmin(ModelAdmin):
25 """Manage the general meetings."""
27 form = forms.GeneralMeetingForm
28 inlines = [
29 MinutesInline,
30 ]
31 list_filter = ("datetime",)
34class LectureYearFilter(admin.SimpleListFilter):
35 """Filter the memberships on those started or ended in a lecture year."""
37 title = _("lecture year")
38 parameter_name = "lecture_year"
40 def lookups(self, request, model_admin):
41 if AnnualDocument.objects.exists():
42 first_year = AnnualDocument.objects.order_by("year").first().year
43 last_year = AnnualDocument.objects.order_by("year").last().year
45 return [
46 (year, f"{year}-{year + 1}")
47 for year in range(last_year, first_year - 1, -1)
48 ]
49 return []
51 def queryset(self, request, queryset):
52 if not self.value():
53 return queryset
55 year = int(self.value())
57 return queryset.filter(year=year)
60@admin.register(AnnualDocument)
61class AnnualDocumentAdmin(ModelAdmin):
62 """Manage the annual documents."""
64 form = forms.AnnualDocumentForm
65 list_filter = (
66 LectureYearFilter,
67 "created",
68 "last_updated",
69 "members_only",
70 )
71 list_display = (
72 "__str__",
73 "members_only",
74 )
77@admin.register(AssociationDocument)
78class AssociationDocumentAdmin(ModelAdmin):
79 """Manage the association documents."""
81 form = forms.AssociationDocumentForm
82 list_filter = (
83 "created",
84 "last_updated",
85 "members_only",
86 )
87 list_display = (
88 "__str__",
89 "members_only",
90 )
93@admin.register(MiscellaneousDocument)
94class MiscellaneousDocumentAdmin(ModelAdmin):
95 """Manage the miscellaneous documents."""
97 form = forms.MiscellaneousDocumentForm
98 list_filter = (
99 "created",
100 "last_updated",
101 "members_only",
102 )
103 list_display = (
104 "__str__",
105 "members_only",
106 )