from django.contrib import admin
from django.contrib import messages
from django.db.models.query import QuerySet
from django.http.request import HttpRequest

from .models import School, Student, Teacher, Notice, Carousel, Syllabus, Routine, President, Founder, ClassAdmin
# Register your models here.
class SchoolAdmin(admin.ModelAdmin):
    list_display = ['name', 'established_year', 'logo', 'address', 'motto']


class StudentAdmin(admin.ModelAdmin):
    list_display = ['name', 'photo', 'enrolled_class', 'shift', 'section', 'roll', 'registration_number', 'date_of_birth', 'address', 'phone', 'guardian_name', 'guardian_phone', 'guardian_address']
    list_filter = ['enrolled_class', 'shift', 'section']

    def get_queryset(self, request: HttpRequest):
        if request.user.is_superuser:
            return super().get_queryset(request)
        elif request.user.is_staff:
            try:
                this_user = ClassAdmin.objects.get(user=request.user)
                return super().get_queryset(request).filter(enrolled_class=this_user.enrolled_class, shift=this_user.shift, section=this_user.section)

            except ClassAdmin.DoesNotExist:
                return super().get_queryset(request).none()
        return super().get_queryset(request).filter(enrolled_class=2, shift="Morning", section="A")

class ClassAdminAdmin(admin.ModelAdmin):
    list_display = ['id', 'name', 'enrolled_class', 'section', 'shift']

class TeacherAdmin(admin.ModelAdmin):
    list_display = ['id', 'name', 'photo', 'designation', 'phone', 'address', 'joining_date', 'about', 'former']

    def save_model(self, request, obj, form, change):
        try:
            super(TeacherAdmin, self).save_model(request, obj, form, change)
        except Exception as e:
            messages.set_level(request, messages.ERROR)
            messages.error(request, e)


class NoticeAdmin(admin.ModelAdmin):
    list_display = ['name', 'file', 'updated_at']


class CarouselAdmin(admin.ModelAdmin):
    list_display = ['id', 'photo_one', 'photo_two', 'photo_three']


class SyllabusAdmin(admin.ModelAdmin):
    list_display = ['id', 'name', 'file', 'updated_at']


class RoutineAdmin(admin.ModelAdmin):
    list_display = ['id', 'name', 'file', 'updated_at']


class PresidentAdmin(admin.ModelAdmin):
    list_display = ['name', 'photo']


class FounderAdmin(admin.ModelAdmin):
    list_display = ['name', 'photo']




admin.site.register(School, SchoolAdmin)
admin.site.register(Student, StudentAdmin)
admin.site.register(Teacher, TeacherAdmin)
admin.site.register(ClassAdmin, ClassAdminAdmin)
admin.site.register(Notice, NoticeAdmin)
admin.site.register(Carousel, CarouselAdmin)
admin.site.register(Syllabus, SyllabusAdmin)
admin.site.register(Routine, RoutineAdmin)
admin.site.register(President, PresidentAdmin)
admin.site.register(Founder, FounderAdmin)