35 lines
1.3 KiB
Python
35 lines
1.3 KiB
Python
from django.contrib import admin
|
|
|
|
from proposals.models import Conference, Talk, Topic, Track, Event
|
|
|
|
|
|
class TalkAdmin(admin.ModelAdmin):
|
|
# Disable add button in django admin has it is too dangerous
|
|
# (it is easy to obtain incoherent data due to site framework)
|
|
def has_add_permission(self, request):
|
|
return False
|
|
# Filter for 'on site' topics, tracks and events
|
|
def get_form(self, request, obj=None, **kwargs):
|
|
form = super(TalkAdmin, self).get_form(request, obj, **kwargs)
|
|
# in fact, obj should never be none as 'add' button is disabled
|
|
if obj:
|
|
form.base_fields['topics'].queryset = Topic.objects.filter(site=obj.site)
|
|
form.base_fields['track'].queryset = Track.objects.filter(site=obj.site)
|
|
form.base_fields['event'].queryset = Event.objects.filter(site=obj.site)
|
|
return form
|
|
|
|
|
|
class TopicAdmin(admin.ModelAdmin):
|
|
# Filter for 'on site' tracks
|
|
def get_form(self, request, obj=None, **kwargs):
|
|
form = super().get_form(request, obj, **kwargs)
|
|
if obj:
|
|
form.base_fields['track'].queryset = Track.objects.filter(site=obj.site)
|
|
return form
|
|
|
|
admin.site.register(Conference)
|
|
admin.site.register(Topic, TopicAdmin)
|
|
admin.site.register(Track)
|
|
admin.site.register(Talk, TalkAdmin)
|
|
admin.site.register(Event)
|