Skip to content

Commit

Permalink
ideas/admin: limit choices for categories, labels and moderation task…
Browse files Browse the repository at this point in the history
…s to the ones belonging to module
  • Loading branch information
rine committed Nov 18, 2022
1 parent b5ad2b4 commit 5f88327
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions meinberlin/apps/ideas/admin.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
from django import forms
from django.contrib import admin

from adhocracy4.categories.models import Category
from adhocracy4.labels.models import Label
from adhocracy4.modules import admin as module_admin
from meinberlin.apps.moderationtasks.models import ModerationTask

from . import models


class ItemAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['category'].required = True
self.fields['labels'].required = False
self.fields['completed_tasks'].required = False


class IdeaAdmin(module_admin.ItemAdmin):
Expand All @@ -18,5 +23,25 @@ class IdeaAdmin(module_admin.ItemAdmin):
def has_add_permission(self, request, obj=None):
return False

def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == 'category':
kwargs['queryset'] = \
Category.objects.filter(module=self.get_module(request))
return super().formfield_for_foreignkey(db_field, request, **kwargs)

def formfield_for_manytomany(self, db_field, request, **kwargs):
if db_field.name == 'labels':
kwargs['queryset'] = \
Label.objects.filter(module=self.get_module(request))
elif db_field.name == 'completed_tasks':
kwargs['queryset'] = \
ModerationTask.objects.filter(module=self.get_module(request))
return super().formfield_for_manytomany(db_field, request, **kwargs)

def get_module(self, request):
item = self.get_object(
request, request.resolver_match.kwargs['object_id'])
return item.module


admin.site.register(models.Idea, IdeaAdmin)

0 comments on commit 5f88327

Please sign in to comment.