Skip to content

Commit acf8867

Browse files
authored
Merge pull request #52 from SectorLabs/localized-integer-field-widget
Add LocalizedIntegerFieldWidget
2 parents 88e2d29 + 4922a1b commit acf8867

File tree

5 files changed

+31
-2
lines changed

5 files changed

+31
-2
lines changed

localized_fields/fields/integer_field.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
from .field import LocalizedField
77
from ..value import LocalizedValue, LocalizedIntegerValue
8+
from ..forms import LocalizedIntegerFieldForm
89

910

1011
class LocalizedIntegerField(LocalizedField):
@@ -63,6 +64,15 @@ def get_prep_value(self, value: LocalizedIntegerValue) -> dict:
6364

6465
return prepped_value
6566

67+
def formfield(self, **kwargs):
68+
"""Gets the form field associated with this field."""
69+
defaults = {
70+
'form_class': LocalizedIntegerFieldForm
71+
}
72+
73+
defaults.update(kwargs)
74+
return super().formfield(**defaults)
75+
6676
@staticmethod
6777
def _convert_localized_value(value: LocalizedValue) -> LocalizedIntegerValue:
6878
"""Converts from :see:LocalizedValue to :see:LocalizedIntegerValue."""

localized_fields/forms.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
from django.forms.widgets import FILE_INPUT_CONTRADICTION
77

88
from .value import LocalizedValue, LocalizedStringValue, \
9-
LocalizedFileValue
9+
LocalizedFileValue, LocalizedIntegerValue
1010
from .widgets import LocalizedFieldWidget, LocalizedCharFieldWidget, \
11-
LocalizedFileWidget
11+
LocalizedFileWidget, AdminLocalizedIntegerFieldWidget
1212

1313

1414
class LocalizedFieldForm(forms.MultiValueField):
@@ -79,6 +79,14 @@ class LocalizedTextFieldForm(LocalizedFieldForm):
7979
value_class = LocalizedStringValue
8080

8181

82+
class LocalizedIntegerFieldForm(LocalizedFieldForm):
83+
"""Form for a localized integer field, allows editing
84+
the field in multiple languages."""
85+
86+
widget = AdminLocalizedIntegerFieldWidget
87+
value_class = LocalizedIntegerValue
88+
89+
8290
class LocalizedFileFieldForm(LocalizedFieldForm, forms.FileField):
8391
"""Form for a localized file field, allows editing
8492
the field in multiple languages."""

localized_fields/value.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,3 +228,9 @@ def __int__(self):
228228
return self.default_value
229229

230230
return int(value)
231+
232+
def __str__(self) -> str:
233+
"""Returns string representation of value"""
234+
235+
value = self.translate()
236+
return str(value) if value is not None else None

localized_fields/widgets.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,3 +120,7 @@ class AdminLocalizedCharFieldWidget(AdminLocalizedFieldWidget):
120120

121121
class AdminLocalizedFileFieldWidget(AdminLocalizedFieldWidget):
122122
widget = widgets.AdminFileWidget
123+
124+
125+
class AdminLocalizedIntegerFieldWidget(AdminLocalizedFieldWidget):
126+
widget = widgets.AdminIntegerFieldWidget

tests/test_integer_field.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from django.db import connection
55
from django.utils import translation
66

7+
from localized_fields.value import LocalizedIntegerValue
78
from localized_fields.fields import LocalizedIntegerField
89

910
from .fake_model import get_fake_model

0 commit comments

Comments
 (0)