HH/apps/feedback/admin.py
2025-12-24 13:40:01 +03:00

110 lines
3.5 KiB
Python

"""
Feedback admin configuration
"""
from django.contrib import admin
from .models import Feedback, FeedbackAttachment, FeedbackResponse
@admin.register(Feedback)
class FeedbackAdmin(admin.ModelAdmin):
"""Admin interface for Feedback model"""
list_display = [
'id', 'feedback_type', 'title', 'get_contact_name', 'hospital',
'status', 'sentiment', 'rating', 'is_featured', 'created_at'
]
list_filter = [
'feedback_type', 'status', 'sentiment', 'category',
'priority', 'is_featured', 'is_deleted', 'created_at'
]
search_fields = [
'title', 'message', 'patient__first_name', 'patient__last_name',
'patient__mrn', 'contact_name', 'contact_email'
]
readonly_fields = [
'id', 'created_at', 'updated_at', 'assigned_at', 'reviewed_at',
'acknowledged_at', 'closed_at', 'deleted_at'
]
fieldsets = (
('Basic Information', {
'fields': (
'id', 'feedback_type', 'title', 'message', 'category',
'subcategory', 'rating', 'priority'
)
}),
('Patient/Contact', {
'fields': (
'patient', 'is_anonymous', 'contact_name', 'contact_email',
'contact_phone'
)
}),
('Organization', {
'fields': ('hospital', 'department', 'physician', 'encounter_id')
}),
('Status & Workflow', {
'fields': (
'status', 'assigned_to', 'assigned_at', 'reviewed_by',
'reviewed_at', 'acknowledged_by', 'acknowledged_at',
'closed_by', 'closed_at'
)
}),
('Sentiment Analysis', {
'fields': ('sentiment', 'sentiment_score')
}),
('Flags', {
'fields': (
'is_featured', 'is_public', 'requires_follow_up',
'is_deleted', 'deleted_at', 'deleted_by'
)
}),
('Metadata', {
'fields': ('source', 'metadata', 'created_at', 'updated_at'),
'classes': ('collapse',)
}),
)
date_hierarchy = 'created_at'
ordering = ['-created_at']
@admin.register(FeedbackAttachment)
class FeedbackAttachmentAdmin(admin.ModelAdmin):
"""Admin interface for FeedbackAttachment model"""
list_display = [
'id', 'feedback', 'filename', 'file_type', 'file_size',
'uploaded_by', 'created_at'
]
list_filter = ['file_type', 'created_at']
search_fields = ['filename', 'feedback__title']
readonly_fields = ['id', 'created_at', 'updated_at']
date_hierarchy = 'created_at'
ordering = ['-created_at']
@admin.register(FeedbackResponse)
class FeedbackResponseAdmin(admin.ModelAdmin):
"""Admin interface for FeedbackResponse model"""
list_display = [
'id', 'feedback', 'response_type', 'created_by',
'is_internal', 'created_at'
]
list_filter = ['response_type', 'is_internal', 'created_at']
search_fields = ['message', 'feedback__title']
readonly_fields = ['id', 'created_at', 'updated_at']
fieldsets = (
('Response Information', {
'fields': (
'id', 'feedback', 'response_type', 'message',
'created_by', 'is_internal'
)
}),
('Status Change', {
'fields': ('old_status', 'new_status')
}),
('Metadata', {
'fields': ('metadata', 'created_at', 'updated_at'),
'classes': ('collapse',)
}),
)
date_hierarchy = 'created_at'
ordering = ['-created_at']