From 2b34b6751e961c2fdde4124ea5efaff29c9b4421 Mon Sep 17 00:00:00 2001 From: seroy Date: Mon, 26 Jun 2017 18:08:15 +0300 Subject: [PATCH 1/2] Added test for `value_to_string` method --- tests/test_file_field.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/test_file_field.py b/tests/test_file_field.py index 00a8975..923ebb8 100644 --- a/tests/test_file_field.py +++ b/tests/test_file_field.py @@ -2,6 +2,7 @@ import os import shutil import tempfile as sys_tempfile import pickle +import json from django import forms from django.test import TestCase, override_settings @@ -118,6 +119,20 @@ class LocalizedFileFieldTestCase(TestCase): filename = field.generate_filename(instance, 'test', 'en') assert filename == 'en_test' + @classmethod + @override_settings(LANGUAGES=(('en', 'English'),)) + def test_value_to_string(cls): + """Tests whether the :see:LocalizedFileField + class's :see:value_to_string function works properly.""" + + temp_file = File(tempfile.NamedTemporaryFile()) + instance = cls.FileFieldModel() + field = cls.FileFieldModel._meta.get_field('file') + field.upload_to = '' + instance.file.en.save('testfilename', temp_file) + expected_value_to_string = json.dumps({'en': 'testfilename'}) + assert field.value_to_string(instance) == expected_value_to_string + @staticmethod def test_get_prep_value(): """Tests whether the :see:get_prep_value function returns correctly From 0b4bb7295e64ea0e4482d8aa9d16417afa246a37 Mon Sep 17 00:00:00 2001 From: seroy Date: Mon, 26 Jun 2017 18:27:03 +0300 Subject: [PATCH 2/2] Added `value_to_string` method --- localized_fields/fields/file_field.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/localized_fields/fields/file_field.py b/localized_fields/fields/file_field.py index 76980d7..49bbf86 100644 --- a/localized_fields/fields/file_field.py +++ b/localized_fields/fields/file_field.py @@ -1,3 +1,4 @@ +import json import datetime import posixpath @@ -149,3 +150,11 @@ class LocalizedFileField(LocalizedField): defaults['required'] = False defaults.update(kwargs) return super().formfield(**defaults) + + def value_to_string(self, obj): + value = self.value_from_object(obj) + if isinstance(value, LocalizedFileValue): + return json.dumps({k: v.name for k, v + in value.__dict__.items()}) + else: + return super().value_to_string(obj)