aircox/aircox/admin/episode.py
2023-10-11 10:53:42 +02:00

41 lines
1.4 KiB
Python

from adminsortable2.admin import SortableAdminBase
from django.contrib import admin
from django.forms import ModelForm
from aircox.models import Episode
from .page import PageAdmin
from .sound import SoundInline, TrackInline
from .diffusion import DiffusionInline
class EpisodeAdminForm(ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields["parent"].required = True
@admin.register(Episode)
class EpisodeAdmin(SortableAdminBase, PageAdmin):
form = EpisodeAdminForm
list_display = PageAdmin.list_display
list_filter = tuple(f for f in PageAdmin.list_filter if f != "pub_date") + (
"diffusion__start",
"pub_date",
)
search_fields = PageAdmin.search_fields + ("parent__title",)
# readonly_fields = ('parent',)
inlines = [TrackInline, SoundInline, DiffusionInline]
def add_view(self, request, object_id, form_url="", context=None):
context = context or {}
context["init_app"] = True
context["init_el"] = "#inline-tracks"
return super().change_view(request, object_id, form_url, context)
def change_view(self, request, object_id, form_url="", context=None):
context = context or {}
context["init_app"] = True
context["init_el"] = "#inline-tracks"
return super().change_view(request, object_id, form_url, context)