From b0aeec4c435addc8e7e0fc54886ac27d0900911e Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 10 Jan 2024 13:21:51 -0800 Subject: [PATCH] Fix: Coerce language app config field to None if empty --- src/documents/tests/test_api_app_config.py | 6 ++++-- src/paperless/serialisers.py | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/documents/tests/test_api_app_config.py b/src/documents/tests/test_api_app_config.py index ed3a4b12f..a12d2a695 100644 --- a/src/documents/tests/test_api_app_config.py +++ b/src/documents/tests/test_api_app_config.py @@ -76,10 +76,10 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase): config = ApplicationConfiguration.objects.first() self.assertEqual(config.color_conversion_strategy, ColorConvertChoices.RGB) - def test_api_update_config_empty_json_field(self): + def test_api_update_config_empty_fields(self): """ GIVEN: - - API request to update app config with empty string for user_args JSONField + - API request to update app config with empty string for user_args JSONField and language field WHEN: - API is called THEN: @@ -91,6 +91,7 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase): json.dumps( { "user_args": "", + "language": "", }, ), content_type="application/json", @@ -98,3 +99,4 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) config = ApplicationConfiguration.objects.first() self.assertEqual(config.user_args, None) + self.assertEqual(config.language, None) diff --git a/src/paperless/serialisers.py b/src/paperless/serialisers.py index 50407564b..fb366f808 100644 --- a/src/paperless/serialisers.py +++ b/src/paperless/serialisers.py @@ -125,8 +125,11 @@ class ApplicationConfigurationSerializer(serializers.ModelSerializer): user_args = serializers.JSONField(binary=True, allow_null=True) def run_validation(self, data): + # Empty strings treated as None to avoid unexpected behavior if "user_args" in data and data["user_args"] == "": data["user_args"] = None + if "language" in data and data["language"] == "": + data["language"] = None return super().run_validation(data) class Meta: