from rest_framework_guardian.filters import ObjectPermissionsFilter
from documents.models import Correspondent
+from documents.models import CustomField
from documents.models import Document
from documents.models import DocumentType
from documents.models import Log
)
+class CustomFieldFilterSet(FilterSet):
+ class Meta:
+ model = CustomField
+ fields = {
+ "id": ID_KWARGS,
+ "name": CHAR_KWARGS,
+ }
+
+
class CustomFieldsFilter(Filter):
def filter(self, qs, value):
if value:
self.assertEqual(resp.status_code, status.HTTP_200_OK)
self.assertEqual(doc5.custom_fields.first().value, [1])
+
+ def test_custom_field_filters(self):
+ custom_field_string = CustomField.objects.create(
+ name="Test Custom Field String",
+ data_type=CustomField.FieldDataType.STRING,
+ )
+ custom_field_date = CustomField.objects.create(
+ name="Test Custom Field Date",
+ data_type=CustomField.FieldDataType.DATE,
+ )
+ custom_field_int = CustomField.objects.create(
+ name="Test Custom Field Int",
+ data_type=CustomField.FieldDataType.INT,
+ )
+
+ response = self.client.get(
+ f"{self.ENDPOINT}?id={custom_field_string.id}",
+ )
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
+ results = response.data["results"]
+ self.assertEqual(len(results), 1)
+
+ response = self.client.get(
+ f"{self.ENDPOINT}?id__in={custom_field_string.id},{custom_field_date.id}",
+ )
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
+ results = response.data["results"]
+ self.assertEqual(len(results), 2)
+
+ response = self.client.get(
+ f"{self.ENDPOINT}?name__icontains=Int",
+ )
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
+ results = response.data["results"]
+ self.assertEqual(len(results), 1)
+ self.assertEqual(results[0]["name"], custom_field_int.name)
from documents.data_models import DocumentMetadataOverrides
from documents.data_models import DocumentSource
from documents.filters import CorrespondentFilterSet
+from documents.filters import CustomFieldFilterSet
from documents.filters import DocumentFilterSet
from documents.filters import DocumentTypeFilterSet
from documents.filters import ObjectOwnedOrGrantedPermissionsFilter
serializer_class = CustomFieldSerializer
pagination_class = StandardPagination
+ filter_backends = (
+ DjangoFilterBackend,
+ OrderingFilter,
+ )
+ filterset_class = CustomFieldFilterSet
model = CustomField