forked from rc/aircox
cfr #121 Co-authored-by: Christophe Siraut <d@tobald.eu.org> Co-authored-by: bkfox <thomas bkfox net> Co-authored-by: Thomas Kairos <thomas@bkfox.net> Reviewed-on: rc/aircox#131 Co-authored-by: Chris Tactic <ctactic@noreply.git.radiocampus.be> Co-committed-by: Chris Tactic <ctactic@noreply.git.radiocampus.be>
51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
from django.contrib import admin
|
|
from django.utils.translation import gettext as _
|
|
|
|
from aircox.models import Diffusion
|
|
|
|
|
|
__all__ = ("DiffusionBaseAdmin", "DiffusionAdmin", "DiffusionInline")
|
|
|
|
|
|
class DiffusionBaseAdmin:
|
|
fields = ("type", "start", "end", "schedule")
|
|
readonly_fields = ("schedule",)
|
|
|
|
def get_readonly_fields(self, request, obj=None):
|
|
fields = super().get_readonly_fields(request, obj)
|
|
if not request.user.has_perm("aircox_program.scheduling"):
|
|
fields = fields + ("program", "start", "end")
|
|
return [field for field in fields if field in self.fields]
|
|
|
|
|
|
@admin.register(Diffusion)
|
|
class DiffusionAdmin(DiffusionBaseAdmin, admin.ModelAdmin):
|
|
def start_date(self, obj):
|
|
return obj.local_start.strftime("%Y/%m/%d %H:%M")
|
|
|
|
start_date.short_description = _("start")
|
|
|
|
def end_date(self, obj):
|
|
return obj.local_end.strftime("%H:%M")
|
|
|
|
end_date.short_description = _("end")
|
|
|
|
list_display = ("episode", "start", "end", "type", "initial")
|
|
list_filter = ("type", "start", "program")
|
|
list_editable = ("type", "start", "end")
|
|
ordering = ("-start", "id")
|
|
search_fields = ("program__title", "episode__title")
|
|
|
|
fields = ("type", "start", "end", "initial", "program", "schedule")
|
|
autocomplete_fields = ("episode", "program", "initial")
|
|
readonly_fields = ("schedule",)
|
|
|
|
|
|
class DiffusionInline(DiffusionBaseAdmin, admin.TabularInline):
|
|
model = Diffusion
|
|
fk_name = "episode"
|
|
extra = 0
|
|
|
|
def has_add_permission(self, request, obj):
|
|
return request.user.has_perm("aircox_program.scheduling")
|