from django.contrib import admin from picampaign.campaign.models import Campaign, CampaignContact, Argumentary from picampaign.organization.models import Organization class InlineContact(admin.TabularInline): model = CampaignContact class CampaignAdmin(admin.ModelAdmin): inlines = [InlineContact] def get_queryset(self, request): qs = super(CampaignAdmin, self).get_queryset(request) if request.user.is_superuser: return qs user_orgs = [x.id for x in request.user.organizations.all()] return qs.filter(organization__in=user_orgs) def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == "organization": query = {'id__in': [x.id for x in request.user.organizations.all()]} kwargs["queryset"] = Organization.objects.filter(**query) return super(CampaignAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) class CampaignContactAdmin(admin.ModelAdmin): def get_queryset(self, request): qs = super(CampaignContactAdmin, self).get_queryset(request) if request.user.is_superuser: return qs user_orgs = [x.id for x in request.user.organizations.all()] return qs.filter(campaign__organization__in=user_orgs) class ArgumentaryAdmin(admin.ModelAdmin): def get_queryset(self, request): qs = super(ArgumentaryAdmin, self).get_queryset(request) if request.user.is_superuser: return qs user_orgs = [x.id for x in request.user.organizations.all()] return qs.filter(campaign__organization__in=user_orgs) def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == "campaign": orgs = request.user.organizations.all() query = {'organization__in': orgs} kwargs["queryset"] = Campaign.objects.filter(**query) return super(ArgumentaryAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) admin.site.register(Campaign, CampaignAdmin) admin.site.register(CampaignContact, CampaignContactAdmin) admin.site.register(Argumentary, ArgumentaryAdmin)