PonyConf/proposals/admin.py
2016-09-23 00:51:07 +02:00

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)