From b740b53b92d5276f48449c333ee90001abfb2a48 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 31 Mar 2011 21:23:08 +0200 Subject: Create specific widget to manage surfaces (closes #60) --- ishtar/furnitures/forms.py | 15 +++++++++----- ishtar/furnitures/widgets.py | 48 ++++++++++++++++++++++++++++++++++++++++++++ ishtar/settings.py.example | 2 ++ 3 files changed, 60 insertions(+), 5 deletions(-) diff --git a/ishtar/furnitures/forms.py b/ishtar/furnitures/forms.py index 30fcefa3d..4a7ef745f 100644 --- a/ishtar/furnitures/forms.py +++ b/ishtar/furnitures/forms.py @@ -923,7 +923,9 @@ class FileFormGeneralRO(FileFormGeneral): class FileFormAddress(forms.Form): form_label = _("Address") associated_models = {'town':models.Town} - total_surface = forms.IntegerField(label=_("Total surface"), + total_surface = forms.IntegerField(required=False, + widget=widgets.AreaWidget, + label=_(u"Total surface"), validators=[validators.MinValueValidator(0), validators.MaxValueValidator(999999999)]) address = forms.CharField(label=_(u"Main address"), widget=forms.Textarea) @@ -1035,9 +1037,9 @@ class FileFormPreventive(forms.Form): choices=models.PermitType.get_types()) permit_reference = forms.CharField(label=_(u"Permit reference"), required=False, validators=[validators.MaxLengthValidator(60)]) - total_developed_surface = forms.IntegerField( - label=_("Total developed surface"), - validators=[validators.MinValueValidator(0), + total_developed_surface = forms.IntegerField(widget=widgets.AreaWidget, + label=_(u"Total developed surface"), + required=False, validators=[validators.MinValueValidator(0), validators.MaxValueValidator(999999999)]) if settings.COUNTRY == 'fr': saisine_type = forms.ChoiceField(label=_("Saisine type"), @@ -1501,7 +1503,10 @@ class OperationFormGeneral(forms.Form): choices=models.OperationType.get_types()) start_date = forms.DateField(label=_(u"Start date"), required=False, widget=widgets.JQueryDate) - surface = forms.IntegerField(label=_(u"Surface (m²)"), required=False,) + surface = forms.IntegerField(required=False, widget=widgets.AreaWidget, + label=_(u"Total surface"), + validators=[validators.MinValueValidator(0), + validators.MaxValueValidator(999999999)]) year = forms.IntegerField(label=_("Year"), initial=lambda:datetime.datetime.now().year, validators=[validators.MinValueValidator(1900), diff --git a/ishtar/furnitures/widgets.py b/ishtar/furnitures/widgets.py index 4217d5194..1ef83dd6e 100644 --- a/ishtar/furnitures/widgets.py +++ b/ishtar/furnitures/widgets.py @@ -39,6 +39,54 @@ class DeleteWidget(forms.CheckboxInput): output.append('') return mark_safe('\n'.join(output)) +class SquareMeterWidget(forms.TextInput): + def render(self, name, value, attrs=None): + final_attrs = flatatt(self.build_attrs(attrs, name=name, value=value)) + output = u' %s '\ + u'(0 ha)' % (final_attrs, + settings.SURFACE_UNIT_LABEL, attrs['id']) + output += """ + +""" % {"id":attrs['id'], "safe_id":attrs['id'].replace('-', '_')} + return mark_safe(output) + +AreaWidget = forms.TextInput +if settings.SURFACE_UNIT == 'square-metre': + global AreaWidget + AreaWidget = SquareMeterWidget + +class JQueryDate(forms.TextInput): + def render(self, name, value=None, attrs=None): + rendered = super(JQueryDate, self).render(name, value, attrs) + rendered += """ + +""" % {"name":name, "country":settings.COUNTRY} + return rendered + class JQueryDate(forms.TextInput): def render(self, name, value=None, attrs=None): rendered = super(JQueryDate, self).render(name, value, attrs) diff --git a/ishtar/settings.py.example b/ishtar/settings.py.example index 4b3388389..192f13108 100644 --- a/ishtar/settings.py.example +++ b/ishtar/settings.py.example @@ -6,6 +6,8 @@ # Ishtar custom SRID = 27572 ENCODING = '' # specific encoding for CSV export - default to utf-8 +SURFACE_UNIT = 'square-metre' +SURFACE_UNIT_LABEL = 'm²' ROOT_PATH = "/var/local/webapp/ishtar/ishtar/" URL_PATH = "" -- cgit v1.2.3