Merge pull request #52 from SectorLabs/localized-integer-field-widget

Add LocalizedIntegerFieldWidget
This commit is contained in:
Swen Kooij 2018-09-24 15:16:55 +03:00 committed by GitHub
commit acf8867974
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 31 additions and 2 deletions

View File

@ -5,6 +5,7 @@ from django.db.utils import IntegrityError
from .field import LocalizedField
from ..value import LocalizedValue, LocalizedIntegerValue
from ..forms import LocalizedIntegerFieldForm
class LocalizedIntegerField(LocalizedField):
@ -63,6 +64,15 @@ class LocalizedIntegerField(LocalizedField):
return prepped_value
def formfield(self, **kwargs):
"""Gets the form field associated with this field."""
defaults = {
'form_class': LocalizedIntegerFieldForm
}
defaults.update(kwargs)
return super().formfield(**defaults)
@staticmethod
def _convert_localized_value(value: LocalizedValue) -> LocalizedIntegerValue:
"""Converts from :see:LocalizedValue to :see:LocalizedIntegerValue."""

View File

@ -6,9 +6,9 @@ from django.core.exceptions import ValidationError
from django.forms.widgets import FILE_INPUT_CONTRADICTION
from .value import LocalizedValue, LocalizedStringValue, \
LocalizedFileValue
LocalizedFileValue, LocalizedIntegerValue
from .widgets import LocalizedFieldWidget, LocalizedCharFieldWidget, \
LocalizedFileWidget
LocalizedFileWidget, AdminLocalizedIntegerFieldWidget
class LocalizedFieldForm(forms.MultiValueField):
@ -79,6 +79,14 @@ class LocalizedTextFieldForm(LocalizedFieldForm):
value_class = LocalizedStringValue
class LocalizedIntegerFieldForm(LocalizedFieldForm):
"""Form for a localized integer field, allows editing
the field in multiple languages."""
widget = AdminLocalizedIntegerFieldWidget
value_class = LocalizedIntegerValue
class LocalizedFileFieldForm(LocalizedFieldForm, forms.FileField):
"""Form for a localized file field, allows editing
the field in multiple languages."""

View File

@ -228,3 +228,9 @@ class LocalizedIntegerValue(LocalizedValue):
return self.default_value
return int(value)
def __str__(self) -> str:
"""Returns string representation of value"""
value = self.translate()
return str(value) if value is not None else None

View File

@ -120,3 +120,7 @@ class AdminLocalizedCharFieldWidget(AdminLocalizedFieldWidget):
class AdminLocalizedFileFieldWidget(AdminLocalizedFieldWidget):
widget = widgets.AdminFileWidget
class AdminLocalizedIntegerFieldWidget(AdminLocalizedFieldWidget):
widget = widgets.AdminIntegerFieldWidget

View File

@ -4,6 +4,7 @@ from django.conf import settings
from django.db import connection
from django.utils import translation
from localized_fields.value import LocalizedIntegerValue
from localized_fields.fields import LocalizedIntegerField
from .fake_model import get_fake_model