#93: reorganise Rerun, Diffusion, Schedule module (#95)

#93

Co-authored-by: bkfox <thomas bkfox net>
Reviewed-on: rc/aircox#95
This commit is contained in:
Thomas Kairos
2023-04-02 20:37:47 +02:00
parent 695e4d7c5d
commit cd19c26e82
37 changed files with 4791 additions and 842 deletions

View File

@ -1,26 +1,12 @@
from django.contrib import admin
from django.forms import ModelForm
from django.utils.translation import gettext_lazy as _
from ..models import Program, Schedule, Stream
from aircox.models import Program, Schedule, Stream
from .page import PageAdmin
from .schedule import ScheduleInline
# In order to simplify schedule_post_save algorithm, an existing schedule can't
# update the following fields: "frequency", "date"
class ScheduleInlineForm(ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if self.initial:
self.fields["date"].disabled = True
self.fields["frequency"].disabled = True
class ScheduleInline(admin.TabularInline):
model = Schedule
form = ScheduleInlineForm
readonly_fields = ("timezone",)
extra = 1
__all__ = ("ProgramAdmin", "StreamInline", "StreamAdmin")
class StreamInline(admin.TabularInline):
@ -58,36 +44,6 @@ class ProgramAdmin(PageAdmin):
return fields
@admin.register(Schedule)
class ScheduleAdmin(admin.ModelAdmin):
def program_title(self, obj):
return obj.program.title
program_title.short_description = _("Program")
def freq(self, obj):
return obj.get_frequency_verbose()
freq.short_description = _("Day")
list_filter = ["frequency", "program"]
list_display = [
"program_title",
"freq",
"time",
"timezone",
"duration",
"initial",
]
list_editable = ["time", "duration", "initial"]
def get_readonly_fields(self, request, obj=None):
if obj:
return ["program", "date", "frequency"]
else:
return []
@admin.register(Stream)
class StreamAdmin(admin.ModelAdmin):
list_display = ("id", "program", "delay", "begin", "end")