mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-11-17 04:16:54 -06:00
Fixhancement: trim whitespace for some text searches (#11357)
This commit is contained in:
@@ -747,7 +747,7 @@ export class FilterEditorComponent
|
|||||||
) {
|
) {
|
||||||
filterRules.push({
|
filterRules.push({
|
||||||
rule_type: FILTER_TITLE_CONTENT,
|
rule_type: FILTER_TITLE_CONTENT,
|
||||||
value: this._textFilter,
|
value: this._textFilter.trim(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if (this._textFilter && this.textFilterTarget == TEXT_FILTER_TARGET_TITLE) {
|
if (this._textFilter && this.textFilterTarget == TEXT_FILTER_TARGET_TITLE) {
|
||||||
@@ -805,7 +805,7 @@ export class FilterEditorComponent
|
|||||||
) {
|
) {
|
||||||
filterRules.push({
|
filterRules.push({
|
||||||
rule_type: FILTER_FULLTEXT_QUERY,
|
rule_type: FILTER_FULLTEXT_QUERY,
|
||||||
value: this._textFilter,
|
value: this._textFilter.trim(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
|
|||||||
@@ -160,6 +160,7 @@ class InboxFilter(Filter):
|
|||||||
@extend_schema_field(serializers.CharField)
|
@extend_schema_field(serializers.CharField)
|
||||||
class TitleContentFilter(Filter):
|
class TitleContentFilter(Filter):
|
||||||
def filter(self, qs, value):
|
def filter(self, qs, value):
|
||||||
|
value = value.strip() if isinstance(value, str) else value
|
||||||
if value:
|
if value:
|
||||||
return qs.filter(Q(title__icontains=value) | Q(content__icontains=value))
|
return qs.filter(Q(title__icontains=value) | Q(content__icontains=value))
|
||||||
else:
|
else:
|
||||||
@@ -214,6 +215,7 @@ class CustomFieldFilterSet(FilterSet):
|
|||||||
@extend_schema_field(serializers.CharField)
|
@extend_schema_field(serializers.CharField)
|
||||||
class CustomFieldsFilter(Filter):
|
class CustomFieldsFilter(Filter):
|
||||||
def filter(self, qs, value):
|
def filter(self, qs, value):
|
||||||
|
value = value.strip() if isinstance(value, str) else value
|
||||||
if value:
|
if value:
|
||||||
fields_with_matching_selects = CustomField.objects.filter(
|
fields_with_matching_selects = CustomField.objects.filter(
|
||||||
extra_data__icontains=value,
|
extra_data__icontains=value,
|
||||||
@@ -244,6 +246,7 @@ class CustomFieldsFilter(Filter):
|
|||||||
|
|
||||||
class MimeTypeFilter(Filter):
|
class MimeTypeFilter(Filter):
|
||||||
def filter(self, qs, value):
|
def filter(self, qs, value):
|
||||||
|
value = value.strip() if isinstance(value, str) else value
|
||||||
if value:
|
if value:
|
||||||
return qs.filter(mime_type__icontains=value)
|
return qs.filter(mime_type__icontains=value)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -941,6 +941,23 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
|
|||||||
results = response.data["results"]
|
results = response.data["results"]
|
||||||
self.assertEqual(len(results), 0)
|
self.assertEqual(len(results), 0)
|
||||||
|
|
||||||
|
def test_documents_title_content_filter_strips_boundary_whitespace(self):
|
||||||
|
doc = Document.objects.create(
|
||||||
|
title="Testwort",
|
||||||
|
content="",
|
||||||
|
checksum="A",
|
||||||
|
mime_type="application/pdf",
|
||||||
|
)
|
||||||
|
|
||||||
|
response = self.client.get(
|
||||||
|
"/api/documents/",
|
||||||
|
{"title_content": " Testwort "},
|
||||||
|
)
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
results = response.data["results"]
|
||||||
|
self.assertEqual(len(results), 1)
|
||||||
|
self.assertEqual(results[0]["id"], doc.id)
|
||||||
|
|
||||||
def test_document_permissions_filters(self):
|
def test_document_permissions_filters(self):
|
||||||
"""
|
"""
|
||||||
GIVEN:
|
GIVEN:
|
||||||
|
|||||||
@@ -1863,7 +1863,7 @@ class SearchAutoCompleteView(GenericAPIView):
|
|||||||
user = self.request.user if hasattr(self.request, "user") else None
|
user = self.request.user if hasattr(self.request, "user") else None
|
||||||
|
|
||||||
if "term" in request.query_params:
|
if "term" in request.query_params:
|
||||||
term = request.query_params["term"]
|
term = request.query_params["term"].strip()
|
||||||
else:
|
else:
|
||||||
return HttpResponseBadRequest("Term required")
|
return HttpResponseBadRequest("Term required")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user