From 8b37059af863b686b9e2a115319cfe66b82d0fec Mon Sep 17 00:00:00 2001 From: Trenton Holmes <797416+stumpylog@users.noreply.github.com> Date: Sat, 4 Nov 2023 12:53:00 -0700 Subject: [PATCH] Moves where the validation happens --- src/documents/serialisers.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py index 074e6e12f..3cbcea5a9 100644 --- a/src/documents/serialisers.py +++ b/src/documents/serialisers.py @@ -2,7 +2,6 @@ import datetime import math import re import zoneinfo -from typing import Any import magic from celery import states @@ -461,13 +460,16 @@ class CustomFieldInstanceSerializer(serializers.ModelSerializer): def get_value(self, obj: CustomFieldInstance): return obj.value - def run_validation(self, data: Any = ...) -> Any: - # other fields get validated by db - field = CustomField.objects.get(pk=data["field"]) + def validate(self, data): + """ + For some reason, URLField validation is not run against the value + automatically. Force it to run against the value + """ + data = super().validate(data) + field: CustomField = data["field"] if field.data_type == CustomField.FieldDataType.URL: - validator = URLValidator() - URLValidator.__call__(validator, data["value"]) - return super().run_validation(data) + URLValidator()(data["value"]) + return data class Meta: model = CustomFieldInstance