mirror of
https://github.com/SectorLabs/django-localized-fields.git
synced 2025-04-25 11:42:54 +03:00
Make sure values are strings before saving LocalizedIntegerValue
This commit is contained in:
parent
bca94a3508
commit
fb233e8f25
@ -41,13 +41,18 @@ class LocalizedIntegerField(LocalizedField):
|
|||||||
|
|
||||||
# make sure all values are proper integers
|
# make sure all values are proper integers
|
||||||
for lang_code, _ in settings.LANGUAGES:
|
for lang_code, _ in settings.LANGUAGES:
|
||||||
|
local_value = prepped_value[lang_code]
|
||||||
try:
|
try:
|
||||||
if prepped_value[lang_code] is not None:
|
if local_value is not None:
|
||||||
int(prepped_value[lang_code])
|
int(local_value)
|
||||||
except (TypeError, ValueError):
|
except (TypeError, ValueError):
|
||||||
raise IntegrityError('non-integer value in column "%s.%s" violates '
|
raise IntegrityError('non-integer value in column "%s.%s" violates '
|
||||||
'integer constraint' % (self.name, lang_code))
|
'integer constraint' % (self.name, lang_code))
|
||||||
|
|
||||||
|
# convert to a string before saving because the underlying
|
||||||
|
# type is hstore, which only accept strings
|
||||||
|
prepped_value[lang_code] = str(local_value) if local_value else None
|
||||||
|
|
||||||
return prepped_value
|
return prepped_value
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
5
setup.py
5
setup.py
@ -18,8 +18,9 @@ setup(
|
|||||||
author_email='open-source@sectorlabs.ro',
|
author_email='open-source@sectorlabs.ro',
|
||||||
keywords=['django', 'localized', 'language', 'models', 'fields'],
|
keywords=['django', 'localized', 'language', 'models', 'fields'],
|
||||||
install_requires=[
|
install_requires=[
|
||||||
'django-postgres-extra>=1.11',
|
'django-postgres-extra>=1.21a',
|
||||||
'Django>=1.11'
|
'Django>=1.11',
|
||||||
|
'deprecation==2.0.3'
|
||||||
],
|
],
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Environment :: Web Environment',
|
'Environment :: Web Environment',
|
||||||
|
@ -152,3 +152,14 @@ class LocalizedIntegerFieldTestCase(TestCase):
|
|||||||
|
|
||||||
obj.refresh_from_db()
|
obj.refresh_from_db()
|
||||||
assert obj.score.get(settings.LANGUAGE_CODE) is None
|
assert obj.score.get(settings.LANGUAGE_CODE) is None
|
||||||
|
|
||||||
|
def test_default_value(self):
|
||||||
|
"""Tests whether a default is properly set
|
||||||
|
when specified."""
|
||||||
|
|
||||||
|
model = get_fake_model({
|
||||||
|
'score': LocalizedIntegerField(default={settings.LANGUAGE_CODE: 75})
|
||||||
|
})
|
||||||
|
|
||||||
|
obj = model.objects.create()
|
||||||
|
assert obj.score.get(settings.LANGUAGE_CODE) == 75
|
||||||
|
Loading…
x
Reference in New Issue
Block a user