diff --git a/meinberlin/apps/ideas/admin.py b/meinberlin/apps/ideas/admin.py index bc9b77fa52..0ed57b0e24 100644 --- a/meinberlin/apps/ideas/admin.py +++ b/meinberlin/apps/ideas/admin.py @@ -1,7 +1,10 @@ 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 @@ -9,7 +12,9 @@ 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): @@ -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)