From eb7e96c07ad61a6e66fa8fd94f80fa317a99afb0 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 26 Nov 2020 13:06:35 +0100 Subject: Refactor custom widgets templates - ISSN/ISBN check --- ishtar_common/widgets.py | 57 +++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 30 deletions(-) (limited to 'ishtar_common/widgets.py') 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 -- cgit v1.2.3