Enhancement: filter by file type (#8946)

This commit is contained in:
shamoon
2025-02-10 08:09:50 -08:00
committed by GitHub
parent 880f08599a
commit 63bb3644f6
11 changed files with 175 additions and 52 deletions

View File

@@ -215,6 +215,14 @@ class CustomFieldsFilter(Filter):
return qs
class MimeTypeFilter(Filter):
def filter(self, qs, value):
if value:
return qs.filter(mime_type__icontains=value)
else:
return qs
class SelectField(serializers.CharField):
def __init__(self, custom_field: CustomField):
self._options = custom_field.extra_data["select_options"]
@@ -710,6 +718,8 @@ class DocumentFilterSet(FilterSet):
shared_by__id = SharedByUser()
mime_type = MimeTypeFilter()
class Meta:
model = Document
fields = {

View File

@@ -62,6 +62,7 @@ class Migration(migrations.Migration):
(44, "created from"),
(45, "added to"),
(46, "added from"),
(47, "mime type is"),
],
verbose_name="rule type",
),

View File

@@ -526,6 +526,7 @@ class SavedViewFilterRule(models.Model):
(44, _("created from")),
(45, _("added to")),
(46, _("added from")),
(47, _("mime type is")),
]
saved_view = models.ForeignKey(

View File

@@ -639,6 +639,13 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
self.assertEqual(len(results), 1)
self.assertEqual(results[0]["id"], doc3.id)
response = self.client.get(
"/api/documents/?mime_type=pdf",
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
results = response.data["results"]
self.assertEqual(len(results), 3)
def test_custom_field_select_filter(self):
"""
GIVEN: