diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2020-11-26 13:06:35 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-02-28 12:15:21 +0100 |
commit | eb7e96c07ad61a6e66fa8fd94f80fa317a99afb0 (patch) | |
tree | 32524e3090ec9ab19d15da5aa8f82b713597f0dd /ishtar_common/widgets.py | |
parent | 1a64a5f096f1d34c5526ca64b963588feef10add (diff) | |
download | Ishtar-eb7e96c07ad61a6e66fa8fd94f80fa317a99afb0.tar.bz2 Ishtar-eb7e96c07ad61a6e66fa8fd94f80fa317a99afb0.zip |
Refactor custom widgets templates - ISSN/ISBN check
Diffstat (limited to 'ishtar_common/widgets.py')
-rw-r--r-- | ishtar_common/widgets.py | 57 |
1 files changed, 27 insertions, 30 deletions
diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index 93352ccf3..724e5d08c 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -475,57 +475,54 @@ class ImageFileInput(ClearableFileInput): return value -class SquareMeterWidget(forms.TextInput): +class CustomWidget(forms.TextInput): + TEMPLATE = "" + EXTRA_DCT = {} + def render(self, name, value, attrs=None, renderer=None): if not value: value = u"" final_attrs = flatatt( self.build_attrs(attrs, {"name": name, "value": value})) dct = {'final_attrs': final_attrs, - 'unit': settings.SURFACE_UNIT_LABEL, 'id': attrs['id'], "safe_id": attrs['id'].replace('-', '_')} - t = loader.get_template('blocks/SquareMeterWidget.html') + dct.update(self.EXTRA_DCT) + t = loader.get_template(self.TEMPLATE) rendered = t.render(dct) return mark_safe(rendered) -class GramKilogramWidget(forms.TextInput): - def render(self, name, value, attrs=None, renderer=None): - if not value: - value = u"" - final_attrs = flatatt( - self.build_attrs(attrs, {"name": name, "value": value})) - dct = {'final_attrs': final_attrs, - 'unit': u"g", - 'id': attrs['id'], - "safe_id": attrs['id'].replace('-', '_')} - t = loader.get_template('blocks/GramKilogramWidget.html') - rendered = t.render(dct) - return mark_safe(rendered) +class SquareMeterWidget(CustomWidget): + TEMPLATE = 'widgets/SquareMeterWidget.html' + EXTRA_DCT = {'unit': settings.SURFACE_UNIT_LABEL} -class CentimeterMeterWidget(forms.TextInput): - def render(self, name, value, attrs=None, renderer=None): - if not value: - value = u"" - final_attrs = flatatt( - self.build_attrs(attrs, {"name": name, "value": value})) - dct = {'final_attrs': final_attrs, - 'unit': u"cm", - 'id': attrs['id'], - "safe_id": attrs['id'].replace('-', '_')} - t = loader.get_template('blocks/CentimeterMeterWidget.html') - rendered = t.render(dct) - return mark_safe(rendered) +class GramKilogramWidget(CustomWidget): + TEMPLATE = 'widgets/GramKilogramWidget.html' + EXTRA_DCT = {'unit': "g"} -AreaWidget = forms.TextInput +class CentimeterMeterWidget(CustomWidget): + TEMPLATE = 'widgets/CentimeterMeterWidget.html' + EXTRA_DCT = {'unit': "cm"} + +AreaWidget = forms.TextInput if settings.SURFACE_UNIT == 'square-metre': AreaWidget = SquareMeterWidget +class ISBNWidget(CustomWidget): + TEMPLATE = 'widgets/CheckTextWidget.html' + EXTRA_DCT = {'validator': "is_valid_isbn"} + + +class ISSNWidget(CustomWidget): + TEMPLATE = 'widgets/CheckTextWidget.html' + EXTRA_DCT = {'validator': "is_valid_issn"} + + class CheckboxInput(forms.CheckboxInput): NO_FORM_CONTROL = True |