django admin: show only on site votes
This commit is contained in:
parent
b332b72065
commit
fca9a1eb1a
19
cfp/admin.py
19
cfp/admin.py
|
@ -1,11 +1,11 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.contrib.sites.models import Site
|
from django.contrib.sites.models import Site
|
||||||
|
|
||||||
from ponyconf.admin import SiteAdminMixin
|
from .mixins import OnSiteAdminMixin
|
||||||
from .models import Conference, Participant, Talk, TalkCategory, Track, Vote
|
from .models import Conference, Participant, Talk, TalkCategory, Track, Vote
|
||||||
|
|
||||||
|
|
||||||
class ConferenceAdmin(SiteAdminMixin, admin.ModelAdmin):
|
class ConferenceAdmin(OnSiteAdminMixin, admin.ModelAdmin):
|
||||||
filter_horizontal = ('staff',)
|
filter_horizontal = ('staff',)
|
||||||
|
|
||||||
def has_add_permission(self, request):
|
def has_add_permission(self, request):
|
||||||
|
@ -15,19 +15,19 @@ class ConferenceAdmin(SiteAdminMixin, admin.ModelAdmin):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class ParticipantAdmin(SiteAdminMixin, admin.ModelAdmin):
|
class ParticipantAdmin(OnSiteAdminMixin, admin.ModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class TrackAdmin(SiteAdminMixin, admin.ModelAdmin):
|
class TrackAdmin(OnSiteAdminMixin, admin.ModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class TalkCategoryAdmin(SiteAdminMixin, admin.ModelAdmin):
|
class TalkCategoryAdmin(OnSiteAdminMixin, admin.ModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class TalkAdmin(SiteAdminMixin, admin.ModelAdmin):
|
class TalkAdmin(OnSiteAdminMixin, admin.ModelAdmin):
|
||||||
def get_form(self, request, obj=None, **kwargs):
|
def get_form(self, request, obj=None, **kwargs):
|
||||||
form = super().get_form(request, obj, **kwargs)
|
form = super().get_form(request, obj, **kwargs)
|
||||||
form.base_fields['speakers'].queryset = Participant.objects.filter(site=request.conference.site)
|
form.base_fields['speakers'].queryset = Participant.objects.filter(site=request.conference.site)
|
||||||
|
@ -36,8 +36,13 @@ class TalkAdmin(SiteAdminMixin, admin.ModelAdmin):
|
||||||
return form
|
return form
|
||||||
|
|
||||||
|
|
||||||
|
class VoteAdmin(admin.ModelAdmin):
|
||||||
|
def get_queryset(self, request):
|
||||||
|
return super().get_queryset(request).filter(talk__site=request.conference.site)
|
||||||
|
|
||||||
|
|
||||||
admin.site.register(Conference, ConferenceAdmin)
|
admin.site.register(Conference, ConferenceAdmin)
|
||||||
admin.site.register(Participant, ParticipantAdmin)
|
admin.site.register(Participant, ParticipantAdmin)
|
||||||
admin.site.register(Talk, TalkAdmin)
|
admin.site.register(Talk, TalkAdmin)
|
||||||
admin.site.register(TalkCategory, TalkCategoryAdmin)
|
admin.site.register(TalkCategory, TalkCategoryAdmin)
|
||||||
admin.site.register(Vote)
|
admin.site.register(Vote, VoteAdmin)
|
||||||
|
|
|
@ -11,3 +11,15 @@ class StaffRequiredMixin(UserPassesTestMixin):
|
||||||
class OnSiteMixin:
|
class OnSiteMixin:
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return super().get_queryset().filter(site=self.request.conference.site)
|
return super().get_queryset().filter(site=self.request.conference.site)
|
||||||
|
|
||||||
|
|
||||||
|
class OnSiteAdminMixin:
|
||||||
|
exclude = ('site',)
|
||||||
|
|
||||||
|
def get_queryset(self, request):
|
||||||
|
return super().get_queryset(request).filter(site=request.conference.site)
|
||||||
|
|
||||||
|
def save_model(self, request, obj, form, change):
|
||||||
|
if not change:
|
||||||
|
obj.site = get_current_site(request)
|
||||||
|
super().save_model(request, obj, form, change)
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
from django.contrib.sites.shortcuts import get_current_site
|
|
||||||
|
|
||||||
|
|
||||||
class SiteAdminMixin:
|
|
||||||
exclude = ('site',)
|
|
||||||
|
|
||||||
def get_queryset(self, request):
|
|
||||||
return super().get_queryset(request).filter(site=get_current_site(request))
|
|
||||||
|
|
||||||
def save_model(self, request, obj, form, change):
|
|
||||||
if not change:
|
|
||||||
obj.site = get_current_site(request)
|
|
||||||
super().save_model(request, obj, form, change)
|
|
Loading…
Reference in New Issue