summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ishtar/furnitures/forms.py15
-rw-r--r--ishtar/furnitures/widgets.py48
-rw-r--r--ishtar/settings.py.example2
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('</td></tr>')
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'<input class="area_widget" type="text"%s> %s '\
+ u'(<span id="ha_%s">0</span> ha)' % (final_attrs,
+ settings.SURFACE_UNIT_LABEL, attrs['id'])
+ output += """
+<script type="text/javascript"><!--//
+ function evaluate_%(safe_id)s(){
+ value = parseFloat($("#%(id)s").val());
+ if(!isNaN(value)){
+ value = value/10000;
+ } else {
+ value = 0;
+ }
+ $("#ha_%(id)s").html(value);
+ }
+ $("#%(id)s").keyup(evaluate_%(safe_id)s);
+ $(document).ready(evaluate_%(safe_id)s());
+//--></script>
+""" % {"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 += """
+<script type="text/javascript"><!--//
+ $(function() {
+ $("#id_%(name)s").datepicker($.datepicker.regional["%(country)s"]);
+ var val = $("#id_%(name)s").val();
+ if(val){
+ var dtp = $.datepicker.parseDate('yy-mm-dd', val);
+ val = $.datepicker.formatDate(
+ $.datepicker.regional["%(country)s"]['dateFormat'],
+ dtp);
+ $("#id_%(name)s").val(val);
+ }
+ });
+//--></script>
+""" % {"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 = ""