diff --git a/api/funkwhale_api/tags/filters.py b/api/funkwhale_api/tags/filters.py index 4ef865927..af1d7774f 100644 --- a/api/funkwhale_api/tags/filters.py +++ b/api/funkwhale_api/tags/filters.py @@ -16,10 +16,11 @@ class TagFilter(filters.FilterSet): ("__size", "length"), ) ) + name = filters.CharFilter(field_name="tag_deterministic", lookup_expr="startswith") class Meta: model = models.Tag - fields = {"name": ["exact", "startswith"]} + fields = {"name"} def get_by_similar_tags(qs, tags): diff --git a/api/tests/tags/test_views.py b/api/tests/tags/test_views.py index b42e9ab37..2a2c646c8 100644 --- a/api/tests/tags/test_views.py +++ b/api/tests/tags/test_views.py @@ -19,6 +19,22 @@ def test_tags_list(factories, logged_in_api_client): assert response.data == expected +def test_tags_list_filter(factories, logged_in_api_client): + url = reverse("api:v1:tags-list") + "?name_icontains=fz" + tag = factories["tags.Tag"](name="fzl") + + expected = { + "count": 1, + "next": None, + "previous": None, + "results": [serializers.TagSerializer(tag).data], + } + + response = logged_in_api_client.get(url) + + assert response.data == expected + + def test_tags_list_ordering_length(factories, logged_in_api_client): url = reverse("api:v1:tags-list") tags = [ diff --git a/changes/changelog.d/2325.bugfix b/changes/changelog.d/2325.bugfix new file mode 100644 index 000000000..01ebfe21f --- /dev/null +++ b/changes/changelog.d/2325.bugfix @@ -0,0 +1 @@ +Resolve forbidden tags due to filter database error (#2325)