Refactor code structure and remove redundant changes

This commit is contained in:
pacnpal
2025-11-09 16:31:34 -05:00
parent 2884bc23ce
commit eb68cf40c6
1080 changed files with 27361 additions and 56687 deletions

View File

@@ -0,0 +1,115 @@
"""
Django admin interface for Contact submissions.
"""
from django.contrib import admin
from django.utils.html import format_html
from django.utils import timezone
from .models import ContactSubmission
@admin.register(ContactSubmission)
class ContactSubmissionAdmin(admin.ModelAdmin):
"""Admin interface for managing contact submissions."""
list_display = [
'ticket_number',
'name',
'email',
'category',
'status_badge',
'assigned_to',
'created_at',
]
list_filter = [
'status',
'category',
'created_at',
'assigned_to',
]
search_fields = [
'ticket_number',
'name',
'email',
'subject',
'message',
]
readonly_fields = [
'id',
'ticket_number',
'user',
'created_at',
'updated_at',
'resolved_at',
]
fieldsets = (
('Contact Information', {
'fields': ('ticket_number', 'name', 'email', 'user', 'category')
}),
('Message', {
'fields': ('subject', 'message')
}),
('Status & Assignment', {
'fields': ('status', 'assigned_to', 'admin_notes')
}),
('Resolution', {
'fields': ('resolved_at', 'resolved_by'),
'classes': ('collapse',)
}),
('Metadata', {
'fields': ('id', 'created_at', 'updated_at'),
'classes': ('collapse',)
}),
)
def status_badge(self, obj):
"""Display status with colored badge."""
colors = {
'pending': '#ff9800',
'in_progress': '#2196f3',
'resolved': '#4caf50',
'archived': '#9e9e9e',
}
color = colors.get(obj.status, '#9e9e9e')
return format_html(
'<span style="background-color: {}; color: white; padding: 3px 10px; '
'border-radius: 3px; font-weight: bold;">{}</span>',
color,
obj.get_status_display()
)
status_badge.short_description = 'Status'
def save_model(self, request, obj, form, change):
"""Auto-set resolved_by when status changes to resolved."""
if change and 'status' in form.changed_data:
if obj.status == 'resolved' and not obj.resolved_by:
obj.resolved_by = request.user
obj.resolved_at = timezone.now()
super().save_model(request, obj, form, change)
actions = ['mark_as_in_progress', 'mark_as_resolved', 'assign_to_me']
def mark_as_in_progress(self, request, queryset):
"""Mark selected submissions as in progress."""
updated = queryset.update(status='in_progress')
self.message_user(request, f'{updated} submission(s) marked as in progress.')
mark_as_in_progress.short_description = "Mark as In Progress"
def mark_as_resolved(self, request, queryset):
"""Mark selected submissions as resolved."""
updated = queryset.filter(status__in=['pending', 'in_progress']).update(
status='resolved',
resolved_at=timezone.now(),
resolved_by=request.user
)
self.message_user(request, f'{updated} submission(s) marked as resolved.')
mark_as_resolved.short_description = "Mark as Resolved"
def assign_to_me(self, request, queryset):
"""Assign selected submissions to current user."""
updated = queryset.update(assigned_to=request.user)
self.message_user(request, f'{updated} submission(s) assigned to you.')
assign_to_me.short_description = "Assign to Me"