Files
Student-Management-System-I…/app/admin.py
T
2025-01-07 23:30:30 +05:45

125 lines
3.0 KiB
Python

from django.contrib import admin
from app.models import (
Teacher,
Student,
Staff,
Course,
AcademicYear,
Subject,
NewsEvent,
Attendance,
Result,
Library,
)
# BaseUserAdmin to handle common behavior for BaseUser-based models
class BaseUserAdmin(admin.ModelAdmin):
exclude = ["user"]
def save_model(self, request, obj, form, change):
super().save_model(request, obj, form, change)
if obj.user:
obj.user.groups.set(obj.group.all())
obj.user.save()
@admin.register(Teacher)
class TeacherAdmin(BaseUserAdmin):
list_display = ("id", "first_name", "last_name", "email", "phone", "active_status")
search_fields = ("first_name", "last_name", "email", "phone")
list_filter = ("active_status", "gender", "group")
@admin.register(Student)
class StudentAdmin(BaseUserAdmin):
list_display = (
"id",
"first_name",
"last_name",
"father_name",
"mother_name",
"email",
"phone",
"course",
"academic_year",
"active_status",
)
search_fields = (
"first_name",
"last_name",
"father_name",
"mother_name",
"email",
"phone",
)
list_filter = ("active_status", "gender", "course", "academic_year")
@admin.register(Staff)
class StaffAdmin(BaseUserAdmin):
list_display = (
"id",
"first_name",
"last_name",
"email",
"phone",
"position",
"active_status",
)
search_fields = ("first_name", "last_name", "email", "phone")
list_filter = ("active_status", "position", "group")
@admin.register(Course)
class CourseAdmin(admin.ModelAdmin):
list_display = ("id", "name", "course_type", "duration")
search_fields = ("name",)
list_filter = ("course_type",)
@admin.register(AcademicYear)
class AcademicYearAdmin(admin.ModelAdmin):
list_display = ("id", "year")
search_fields = ("year",)
@admin.register(Subject)
class SubjectAdmin(admin.ModelAdmin):
list_display = ("id", "name", "course", "semester_or_year_number")
search_fields = ("name", "course__name")
list_filter = ("course", "semester_or_year_number")
@admin.register(NewsEvent)
class NewsEventAdmin(admin.ModelAdmin):
list_display = ("id", "title", "type", "created_at")
search_fields = ("title", "summary")
list_filter = ("type", "created_at")
@admin.register(Attendance)
class AttendanceAdmin(admin.ModelAdmin):
list_display = ("id", "student", "subject", "date", "status")
@admin.register(Result)
class ResultAdmin(admin.ModelAdmin):
list_display = (
"student",
"subject",
"practical_marks",
"exam_marks",
"total_marks",
)
readonly_fields = ("total_marks",)
def save_model(self, request, obj, form, change):
obj.total_marks = obj.get_total()
super().save_model(request, obj, form, change)
@admin.register(Library)
class LibraryAdmin(admin.ModelAdmin):
list_display = ("book_name", "author", "publication_year")