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

1from django.contrib import admin 

2from django.contrib.admin import ModelAdmin 

3from django.utils.translation import gettext_lazy as _ 

4 

5from documents import forms 

6from documents.models import ( 

7 AnnualDocument, 

8 AssociationDocument, 

9 GeneralMeeting, 

10 Minutes, 

11 MiscellaneousDocument, 

12) 

13 

14 

15class MinutesInline(admin.StackedInline): 

16 """Inline for minutes of a general meeting.""" 

17 

18 model = Minutes 

19 form = forms.MinutesForm 

20 extra = 0 

21 

22 

23@admin.register(GeneralMeeting) 

24class GeneralMeetingAdmin(ModelAdmin): 

25 """Manage the general meetings.""" 

26 

27 form = forms.GeneralMeetingForm 

28 inlines = [ 

29 MinutesInline, 

30 ] 

31 list_filter = ("datetime",) 

32 

33 

34class LectureYearFilter(admin.SimpleListFilter): 

35 """Filter the memberships on those started or ended in a lecture year.""" 

36 

37 title = _("lecture year") 

38 parameter_name = "lecture_year" 

39 

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 

44 

45 return [ 

46 (year, f"{year}-{year + 1}") 

47 for year in range(last_year, first_year - 1, -1) 

48 ] 

49 return [] 

50 

51 def queryset(self, request, queryset): 

52 if not self.value(): 

53 return queryset 

54 

55 year = int(self.value()) 

56 

57 return queryset.filter(year=year) 

58 

59 

60@admin.register(AnnualDocument) 

61class AnnualDocumentAdmin(ModelAdmin): 

62 """Manage the annual documents.""" 

63 

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 ) 

75 

76 

77@admin.register(AssociationDocument) 

78class AssociationDocumentAdmin(ModelAdmin): 

79 """Manage the association documents.""" 

80 

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 ) 

91 

92 

93@admin.register(MiscellaneousDocument) 

94class MiscellaneousDocumentAdmin(ModelAdmin): 

95 """Manage the miscellaneous documents.""" 

96 

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 )