File size: 2,006 Bytes
6991322
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User, Doctor, Appointment, Notification

class CustomUserAdmin(UserAdmin):
    model = User
    list_display = ('email', 'full_name', 'is_staff', 'is_active')
    list_filter = ('is_staff', 'is_active')
    fieldsets = (
        (None, {'fields': ('email', 'password')}),
        ('Personal Info', {'fields': ('full_name',)}),
        ('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
        ('Important dates', {'fields': ('last_login', 'date_joined')}),
    )
    search_fields = ('email', 'full_name')
    ordering = ('email',)

admin.site.register(User, CustomUserAdmin)

@admin.register(Doctor)
class DoctorAdmin(admin.ModelAdmin):
    list_display = ('name', 'specialty', 'verification_status', 'rating', 'experience')
    search_fields = ('name', 'specialty', 'user__email')
    list_filter = ('verification_status', 'specialty')
    actions = ['approve_doctors', 'reject_doctors']

    def approve_doctors(self, request, queryset):
        queryset.update(verification_status='verified')
    approve_doctors.short_description = "Approve selected doctor applications"

    def reject_doctors(self, request, queryset):
        queryset.update(verification_status='rejected')
    reject_doctors.short_description = "Reject selected doctor applications"

@admin.register(Appointment)
class AppointmentAdmin(admin.ModelAdmin):
    list_display = ('patient_name', 'user', 'doctor', 'date', 'time', 'type', 'is_rescheduled', 'created_at')
    search_fields = ('patient_name', 'user__email', 'doctor__name')
    list_filter = ('is_rescheduled', 'type', 'date')
    date_hierarchy = 'created_at'

@admin.register(Notification)
class NotificationAdmin(admin.ModelAdmin):
    list_display = ('title', 'user', 'is_read', 'created_at')
    search_fields = ('title', 'message', 'user__email')
    list_filter = ('is_read',)
    date_hierarchy = 'created_at'