diff --git a/localized_fields/value.py b/localized_fields/value.py index 085256c..6b47fc7 100644 --- a/localized_fields/value.py +++ b/localized_fields/value.py @@ -136,6 +136,15 @@ class LocalizedValue(dict): return None + def is_empty(self) -> bool: + """Gets whether all the languages contain the default value.""" + + for lang_code, _ in settings.LANGUAGES: + if self.get(lang_code) != self.default_value: + return False + + return True + def __str__(self) -> str: """Gets the value in the current language or falls back to the next language if there's no value in the current language.""" diff --git a/tests/test_value.py b/tests/test_value.py index 688cbfc..9722b58 100644 --- a/tests/test_value.py +++ b/tests/test_value.py @@ -38,6 +38,17 @@ class LocalizedValueTestCase(TestCase): for lang_code, _ in settings.LANGUAGES: assert getattr(value, lang_code) is None + @staticmethod + def test_is_empty(): + """Tests whether a newly constructed :see:LocalizedValue without any + content is considered "empty".""" + + value = LocalizedValue() + assert value.is_empty() + + value.set(settings.LANGUAGE_CODE, "my value") + assert not value.is_empty() + @staticmethod def test_init_array(): """Tests whether the __init__ function of :see:LocalizedValue properly