This commit is contained in:
Swen Kooij 2017-06-29 18:52:23 +03:00
commit cb7fda5abc
2 changed files with 24 additions and 0 deletions

View File

@ -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)

View File

@ -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