1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
from django.contrib import admin
from django.utils.text import slugify
from django.utils.translation import gettext as _
from . import models
@admin.register(models.Office)
class OfficeAdmin(admin.ModelAdmin):
pass
@admin.register(models.Term)
class TermAdmin(admin.ModelAdmin):
pass
@admin.register(models.BoardMember)
class BoardMemberAdmin(admin.ModelAdmin):
list_display = ("full_name", "office", "term")
list_filter = ("office", "term")
list_select_related = True
raw_id_fields = ("account",)
@admin.display(ordering="account__last_name")
def full_name(self, obj):
return obj.account.get_full_name()
@admin.register(models.NonBoardAttendee)
class NonBoardAttendeeAdmin(admin.ModelAdmin):
pass
class GrantInline(admin.TabularInline):
model = models.ApprovedGrant
class IndividualMemberInline(admin.TabularInline):
model = models.ApprovedIndividualMember
class CorporateMemberInline(admin.TabularInline):
model = models.ApprovedCorporateMember
class BusinessInline(admin.StackedInline):
model = models.Business
class ActionItemInline(admin.StackedInline):
model = models.ActionItem
@admin.register(models.Banner)
class BannerAdmin(admin.ModelAdmin):
list_display = ["title", "is_active", "created_at", "updated_at"]
list_editable = ["is_active"]
readonly_fields = ["created_by", "created_at", "updated_by", "updated_at"]
fieldsets = [
(None, {"fields": ["title", "body", "is_active"]}),
(
"Call to action",
{
"description": (
"Both fields should be defined for the CTA button to be displayed."
),
"fields": ["cta_label", "cta_url"],
},
),
(
"Metadata",
{"fields": ["created_by", "created_at", "updated_by", "updated_at"]},
),
]
def save_model(self, request, obj, form, change):
if not change:
obj.created_by = request.user
obj.updated_by = request.user
super().save_model(request, obj, form, change)
@admin.register(models.Meeting)
class MeetingAdmin(admin.ModelAdmin):
fieldsets = (
(
"Metadata",
{
"fields": (
"title",
"slug",
"date",
"leader",
"board_attendees",
"non_board_attendees",
),
},
),
(
"Treasurer report",
{
"fields": ("treasurer_balance", "treasurer_report"),
},
),
)
filter_horizontal = ("board_attendees", "non_board_attendees")
inlines = [
GrantInline,
IndividualMemberInline,
CorporateMemberInline,
BusinessInline,
ActionItemInline,
]
list_display = ("title", "date")
list_filter = ("date",)
prepopulated_fields = {"slug": ("title",)}
def get_changeform_initial_data(self, request):
title = _("DSF Board monthly meeting")
return {
"title": title,
"slug": slugify(title),
}
class CoreAwardAdmin(admin.ModelAdmin):
list_display = ["recipient", "cohort"]
admin.site.register(models.CoreAward, CoreAwardAdmin)
admin.site.register(models.CoreAwardCohort)
|