-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathadmin.py
More file actions
118 lines (86 loc) · 3.4 KB
/
admin.py
File metadata and controls
118 lines (86 loc) · 3.4 KB
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
# pylint: disable=missing-class-docstring, wildcard-import
"""TCF Django Admin."""
from django.contrib import admin
# Register your models here.
from .models import *
admin.site.register(User)
admin.site.register(Review)
admin.site.register(Vote)
admin.site.register(Question)
admin.site.register(Answer)
class SchoolAdmin(admin.ModelAdmin):
ordering = ["name"]
search_fields = ["name"]
class SubdepartmentAdmin(admin.ModelAdmin):
ordering = ["name"]
search_fields = ["name"]
class DepartmentAdmin(admin.ModelAdmin):
ordering = ["name"]
search_fields = ["name"]
class SemesterAdmin(admin.ModelAdmin):
ordering = ["-number"]
search_fields = ["season", "year"]
class DisciplineAdmin(admin.ModelAdmin):
ordering = ["name"]
search_fields = ["name"]
class CourseAdmin(admin.ModelAdmin):
ordering = ["subdepartment__mnemonic", "number", "title"]
search_fields = ["subdepartment__mnemonic", "number"]
class InstructorAdmin(admin.ModelAdmin):
ordering = ["last_name", "first_name"]
search_fields = ["first_name", "last_name"]
class SectionAdmin(admin.ModelAdmin):
search_fields = [
"course__subdepartment__mnemonic",
"course__number",
"course__title",
]
autocomplete_fields = ["instructors"]
def get_queryset(self, request):
qs = super().get_queryset(request)
qs = qs.prefetch_related("instructors")
return qs
class SectionTimeAdmin(admin.ModelAdmin):
list_display = ["section", "get_days_display", "start_time", "end_time"]
list_filter = ["monday", "tuesday", "wednesday", "thursday", "friday", "start_time", "end_time"]
search_fields = [
"section__course__subdepartment__mnemonic",
"section__course__number",
"section__course__title",
]
autocomplete_fields = ["section"]
def get_days_display(self, obj):
"""Return formatted string of meeting days."""
days = []
if getattr(obj, "monday", False):
days.append("MON")
if getattr(obj, "tuesday", False):
days.append("TUE")
if getattr(obj, "wednesday", False):
days.append("WED")
if getattr(obj, "thursday", False):
days.append("THU")
if getattr(obj, "friday", False):
days.append("FRI")
return ", ".join(days)
get_days_display.short_description = "Days"
def get_queryset(self, request):
qs = super().get_queryset(request)
return qs.select_related("section__course__subdepartment")
class CourseGradeAdmin(admin.ModelAdmin):
ordering = ["course__subdepartment", "course__number", "course__title"]
search_fields = ["course__subdepartment", "course__number"]
class CourseInstructorGradeAdmin(admin.ModelAdmin):
ordering = ["instructor__last_name", "instructor__first_name"]
search_fields = ["instructor__first_name", "instructor__last_name"]
admin.site.register(Section, SectionAdmin)
admin.site.register(Instructor, InstructorAdmin)
admin.site.register(Discipline, DisciplineAdmin)
admin.site.register(Course, CourseAdmin)
admin.site.register(School, SchoolAdmin)
admin.site.register(Department, DepartmentAdmin)
admin.site.register(Subdepartment, SubdepartmentAdmin)
admin.site.register(Semester, SemesterAdmin)
admin.site.register(CourseGrade, CourseGradeAdmin)
admin.site.register(CourseInstructorGrade, CourseInstructorGradeAdmin)
admin.site.register(SectionTime, SectionTimeAdmin)