2025-11-12 11:51:27 +00:00
|
|
|
from django.contrib import admin
|
2025-11-28 15:52:06 +00:00
|
|
|
from .models import CustomUser, UserProfile, ContactMessage
|
2025-11-12 11:51:27 +00:00
|
|
|
|
|
|
|
|
@admin.register(CustomUser)
|
|
|
|
|
class UserAdmin(admin.ModelAdmin):
|
2025-11-13 00:52:34 +00:00
|
|
|
list_display = ('email', 'first_name', 'last_name', 'is_staff')
|
|
|
|
|
search_fields = ('email', 'first_name', 'last_name')
|
2025-11-12 11:51:27 +00:00
|
|
|
ordering = ('email',)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@admin.register(UserProfile)
|
|
|
|
|
class UserProfileAdmin(admin.ModelAdmin):
|
|
|
|
|
list_display = ('user', 'timezone', 'created_at', 'updated_at')
|
2025-11-13 00:52:34 +00:00
|
|
|
search_fields = ('user__email', 'user__first_name', 'user__last_name')
|
2025-11-12 11:51:27 +00:00
|
|
|
ordering = ('user__email',)
|
|
|
|
|
|
|
|
|
|
|
2025-11-28 15:52:06 +00:00
|
|
|
|
|
|
|
|
@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"
|
|
|
|
|
|
|
|
|
|
|