forked from rc/aircox
#93 Co-authored-by: bkfox <thomas bkfox net> Reviewed-on: rc/aircox#95
This commit is contained in:
55
aircox/admin/schedule.py
Normal file
55
aircox/admin/schedule.py
Normal file
@ -0,0 +1,55 @@
|
||||
from django.contrib import admin
|
||||
from django.forms import ModelForm
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from aircox.models import Schedule
|
||||
|
||||
|
||||
__all__ = ("ScheduleInlineForm", "ScheduleInline", "ScheduleAdmin")
|
||||
|
||||
|
||||
# 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
|
||||
|
||||
|
||||
@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_display()
|
||||
|
||||
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 []
|
Reference in New Issue
Block a user