Files
thrillwiki_django_no_react/parks/admin.py
2024-10-31 22:32:01 +00:00

50 lines
2.0 KiB
Python

from django.contrib import admin
from django.utils.html import format_html
from simple_history.admin import SimpleHistoryAdmin
from .models import Park, ParkArea
class ParkAdmin(SimpleHistoryAdmin):
list_display = ('name', 'location', 'status', 'owner', 'created_at', 'updated_at')
list_filter = ('status', 'country', 'region', 'city')
search_fields = ('name', 'location', 'description')
readonly_fields = ('created_at', 'updated_at')
prepopulated_fields = {'slug': ('name',)}
def get_history_list_display(self, request):
"""Customize the list display for history records"""
return ('name', 'location', 'status', 'history_date', 'history_user')
class ParkAreaAdmin(SimpleHistoryAdmin):
list_display = ('name', 'park', 'created_at', 'updated_at')
list_filter = ('park',)
search_fields = ('name', 'description', 'park__name')
readonly_fields = ('created_at', 'updated_at')
prepopulated_fields = {'slug': ('name',)}
def get_history_list_display(self, request):
"""Customize the list display for history records"""
return ('name', 'park', 'history_date', 'history_user')
# Register the models with their admin classes
admin.site.register(Park, ParkAdmin)
admin.site.register(ParkArea, ParkAreaAdmin)
# Register the historical records for direct editing
from simple_history.models import HistoricalRecords
from .models import Park
class HistoricalParkAdmin(admin.ModelAdmin):
list_display = ('name', 'location', 'status', 'history_date', 'history_user', 'history_type')
list_filter = ('status', 'country', 'region', 'city', 'history_type')
search_fields = ('name', 'location', 'description')
readonly_fields = ('history_date', 'history_type', 'history_id')
def has_add_permission(self, request):
return False # Prevent adding new historical records directly
def has_delete_permission(self, request, obj=None):
return False # Prevent deleting historical records
# Register the historical model
admin.site.register(Park.history.model, HistoricalParkAdmin)