Browse Source

Member/Subscriber field are now integer, latitude&longitude are checked

Gu1 11 years ago
parent
commit
e8e765f823
1 changed files with 13 additions and 5 deletions
  1. 13 5
      ffdnispdb/forms.py

+ 13 - 5
ffdnispdb/forms.py

@@ -2,7 +2,8 @@ from functools import partial
 import itertools
 from flask.ext.wtf import Form
 from wtforms import Form as InsecureForm
-from wtforms import TextField, DateField, DecimalField, SelectField, SelectMultipleField, FieldList, FormField
+from wtforms import (TextField, DateField, DecimalField, IntegerField, SelectField,
+                     SelectMultipleField, FieldList, FormField)
 from wtforms.widgets import TextInput, ListWidget, html_params, HTMLString, CheckboxInput, Select
 from wtforms.validators import DataRequired, Optional, URL, Email, Length, NumberRange, ValidationError
 from flask.ext.babel import Babel, gettext as _
@@ -84,15 +85,22 @@ class ProjectForm(Form):
                                                     '<code>xmpp:isp@chat.isp.net?join</code>')])
     covered_areas = FieldList(MyFormField(CoveredArea, widget=partial(InputListWidget(), class_='formfield')), min_entries=1, widget=InputListWidget(),
                                           description=[None, _(u'Descriptive name of the covered areas and technologies deployed')])
-    latitude      = DecimalField(_(u'latitude'), validators=[Optional()],
+    latitude      = DecimalField(_(u'latitude'), validators=[Optional(), NumberRange(min=-90, max=90)],
                              description=[None, _(u'Geographical coordinates of your registered office or usual meeting location.')])
-    longitude     = DecimalField(_(u'longitude'), validators=[Optional()])
+    longitude     = DecimalField(_(u'longitude'), validators=[Optional(), NumberRange(min=-180, max=180)])
     step          = SelectField(_(u'step'), choices=[(k, u'%u - %s' % (k, STEPS[k])) for k in STEPS], coerce=int)
-    member_count     = DecimalField(_(u'members'), validators=[Optional(), NumberRange(min=0)],
+    member_count     = IntegerField(_(u'members'), validators=[Optional(), NumberRange(min=0)],
                                     description=[None, _('Number of members')])
-    subscriber_count = DecimalField(_(u'subscribers'), validators=[Optional(), NumberRange(min=0)],
+    subscriber_count = IntegerField(_(u'subscribers'), validators=[Optional(), NumberRange(min=0)],
                                     description=[None, _('Number of subscribers to an internet access')])
 
+    def validate(self, *args, **kwargs):
+        r=super(ProjectForm, self).validate(*args, **kwargs)
+        if (self.latitude.data is None) != (self.longitude.data is None):
+            self._fields['longitude'].errors += [_(u'You must fill both fields')]
+            r=False
+        return r
+
     def to_json(self, json=None):
         if json is None:
             json={}