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
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
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: