diff --git a/cfp/admin.py b/cfp/admin.py index dc2d484..c01570f 100644 --- a/cfp/admin.py +++ b/cfp/admin.py @@ -1,11 +1,11 @@ from django.contrib import admin 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 -class ConferenceAdmin(SiteAdminMixin, admin.ModelAdmin): +class ConferenceAdmin(OnSiteAdminMixin, admin.ModelAdmin): filter_horizontal = ('staff',) def has_add_permission(self, request): @@ -15,19 +15,19 @@ class ConferenceAdmin(SiteAdminMixin, admin.ModelAdmin): return False -class ParticipantAdmin(SiteAdminMixin, admin.ModelAdmin): +class ParticipantAdmin(OnSiteAdminMixin, admin.ModelAdmin): pass -class TrackAdmin(SiteAdminMixin, admin.ModelAdmin): +class TrackAdmin(OnSiteAdminMixin, admin.ModelAdmin): pass -class TalkCategoryAdmin(SiteAdminMixin, admin.ModelAdmin): +class TalkCategoryAdmin(OnSiteAdminMixin, admin.ModelAdmin): pass -class TalkAdmin(SiteAdminMixin, admin.ModelAdmin): +class TalkAdmin(OnSiteAdminMixin, admin.ModelAdmin): def get_form(self, request, obj=None, **kwargs): form = super().get_form(request, obj, **kwargs) form.base_fields['speakers'].queryset = Participant.objects.filter(site=request.conference.site) @@ -36,8 +36,13 @@ class TalkAdmin(SiteAdminMixin, admin.ModelAdmin): 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(Participant, ParticipantAdmin) admin.site.register(Talk, TalkAdmin) admin.site.register(TalkCategory, TalkCategoryAdmin) -admin.site.register(Vote) +admin.site.register(Vote, VoteAdmin) diff --git a/cfp/mixins.py b/cfp/mixins.py index a916d61..a7b802d 100644 --- a/cfp/mixins.py +++ b/cfp/mixins.py @@ -11,3 +11,15 @@ class StaffRequiredMixin(UserPassesTestMixin): class OnSiteMixin: def get_queryset(self): 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) diff --git a/ponyconf/admin.py b/ponyconf/admin.py deleted file mode 100644 index 5d79940..0000000 --- a/ponyconf/admin.py +++ /dev/null @@ -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)