) {
filterRules.push({
rule_type: FILTER_TITLE_CONTENT,
- value: this._textFilter,
+ value: this._textFilter.trim(),
})
}
if (this._textFilter && this.textFilterTarget == TEXT_FILTER_TARGET_TITLE) {
) {
filterRules.push({
rule_type: FILTER_FULLTEXT_QUERY,
- value: this._textFilter,
+ value: this._textFilter.trim(),
})
}
if (
@extend_schema_field(serializers.CharField)
class TitleContentFilter(Filter):
def filter(self, qs, value):
+ value = value.strip() if isinstance(value, str) else value
if value:
return qs.filter(Q(title__icontains=value) | Q(content__icontains=value))
else:
@extend_schema_field(serializers.CharField)
class CustomFieldsFilter(Filter):
def filter(self, qs, value):
+ value = value.strip() if isinstance(value, str) else value
if value:
fields_with_matching_selects = CustomField.objects.filter(
extra_data__icontains=value,
class MimeTypeFilter(Filter):
def filter(self, qs, value):
+ value = value.strip() if isinstance(value, str) else value
if value:
return qs.filter(mime_type__icontains=value)
else:
results = response.data["results"]
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):
"""
GIVEN:
user = self.request.user if hasattr(self.request, "user") else None
if "term" in request.query_params:
- term = request.query_params["term"]
+ term = request.query_params["term"].strip()
else:
return HttpResponseBadRequest("Term required")