Closes #11541: Support for limiting tag assignments by object type (#12982)

* Initial work on #11541

* Merge migrations

* Limit tags by object type during assignment

* Add tests for object type validation

* Fix form field parameters
This commit is contained in:
Jeremy Stretch
2023-06-23 14:08:14 -04:00
committed by GitHub
parent 69b818ed33
commit 1056e513b1
14 changed files with 156 additions and 27 deletions

View File

@@ -258,10 +258,13 @@ class TagFilterSet(ChangeLoggedModelFilterSet):
content_type_id = MultiValueNumberFilter(
method='_content_type_id'
)
for_object_type_id = MultiValueNumberFilter(
method='_for_object_type'
)
class Meta:
model = Tag
fields = ['id', 'name', 'slug', 'color', 'description']
fields = ['id', 'name', 'slug', 'color', 'description', 'object_types']
def search(self, queryset, name, value):
if not value.strip():
@@ -298,6 +301,11 @@ class TagFilterSet(ChangeLoggedModelFilterSet):
return queryset.filter(extras_taggeditem_items__content_type__in=content_types).distinct()
def _for_object_type(self, queryset, name, values):
return queryset.filter(
Q(object_types__id__in=values) | Q(object_types__isnull=True)
)
class ConfigContextFilterSet(ChangeLoggedModelFilterSet):
q = django_filters.CharFilter(