from django.contrib import admin from .models import CustomUser, UserProfile, ContactMessage @admin.register(CustomUser) class UserAdmin(admin.ModelAdmin): list_display = ('email', 'first_name', 'last_name', 'is_staff') search_fields = ('email', 'first_name', 'last_name') ordering = ('email',) @admin.register(UserProfile) class UserProfileAdmin(admin.ModelAdmin): list_display = ('user', 'timezone', 'created_at', 'updated_at') search_fields = ('user__email', 'user__first_name', 'user__last_name') ordering = ('user__email',) @admin.register(ContactMessage) class ContactMessageAdmin(admin.ModelAdmin): list_display = ['name', 'email', 'phone', 'created_at', 'is_read', 'is_responded'] list_filter = ['is_read', 'is_responded', 'created_at'] search_fields = ['name', 'email', 'phone', 'message'] readonly_fields = ['created_at'] date_hierarchy = 'created_at' fieldsets = ( ('Contact Information', { 'fields': ('name', 'email', 'phone') }), ('Message', { 'fields': ('message',) }), ('Status', { 'fields': ('is_read', 'is_responded', 'created_at') }), ) def get_queryset(self, request): qs = super().get_queryset(request) return qs.select_related() actions = ['mark_as_read', 'mark_as_responded'] def mark_as_read(self, request, queryset): updated = queryset.update(is_read=True) self.message_user(request, f'{updated} message(s) marked as read.') mark_as_read.short_description = "Mark selected as read" def mark_as_responded(self, request, queryset): updated = queryset.update(is_responded=True) self.message_user(request, f'{updated} message(s) marked as responded.') mark_as_responded.short_description = "Mark selected as responded"