Example #1
0
    def clean(self):
        cleaned_data = self.cleaned_data

        if cleaned_data['method'] in ('html5', 'html5request', 'gears', 'manual', 'geocoded', 'other', 'favourite'):
            if cleaned_data['method'] == 'geocoded':
                results = geocode(cleaned_data['name'])
                if len(results) > 0:
                    cleaned_data.update(results[0])
                    cleaned_data['longitude'], cleaned_data['latitude'] = cleaned_data['location']
                    cleaned_data['alternatives'] = results[1:]
                else:
                    raise forms.ValidationError("Unable to find a location that matches '%s'." % cleaned_data['name'])

            for key in ('latitude', 'longitude', 'accuracy'):
                if cleaned_data.get(key) is None:
                    self._errors[key] = ErrorList(['method requires that ' + key + ' must be specified'])

            if not self._errors:
                cleaned_data['location'] = cleaned_data['longitude'], cleaned_data['latitude']
                if not cleaned_data.get('name'):
                    try:
                        cleaned_data['name'] = reverse_geocode(
                            self.cleaned_data['longitude'],
                            self.cleaned_data['latitude'])[0]['name']
                    except:
                        cleaned_data['name'] = None
        elif cleaned_data['method'] in ('denied', 'error'):
            for key in ('latitude', 'longitude', 'accuracy'):
                if cleaned_data.get(key) is None:
                    self._errors[key] = ErrorList(['method requires that ' + key + ' must be specified'])
        else:
            self._errors['method'] = ErrorList(['method is required'])

        return cleaned_data
Example #2
0
    def clean(self):
        cleaned_data = self.cleaned_data

        if cleaned_data['method'] in ('html5', 'html5request', 'gears',
                                      'manual', 'geocoded', 'other',
                                      'favourite'):
            if cleaned_data['method'] == 'geocoded':

                if not cleaned_data['name'].strip():
                    raise forms.ValidationError(_("You must enter a location"))

                results = geocode(cleaned_data['name'])
                if len(results) > 0:
                    cleaned_data.update(results[0])
                    cleaned_data['longitude'], cleaned_data[
                        'latitude'] = cleaned_data['location']
                    # Ignore alternatives for postcodes
                    if not re.match(POSTCODE_RE, cleaned_data['name'].upper()):
                        cleaned_data['alternatives'] = results[1:]
                    else:
                        cleaned_data['alternatives'] = []
                else:
                    raise forms.ValidationError(
                        _("Unable to find a location that matches '%s'.") %
                        cleaned_data['name'])

            for key in ('latitude', 'longitude', 'accuracy'):
                if cleaned_data.get(key) is None:
                    self._errors[key] = ErrorList(
                        ['method requires that ' + key + ' must be specified'])

            if not self._errors:
                cleaned_data['location'] = cleaned_data[
                    'longitude'], cleaned_data['latitude']
                if not cleaned_data.get('name'):
                    try:
                        cleaned_data['name'] = reverse_geocode(
                            self.cleaned_data['longitude'],
                            self.cleaned_data['latitude'])[0]['name']
                    except:
                        cleaned_data['name'] = u"↝ %f, %f" % (
                            self.cleaned_data['longitude'],
                            self.cleaned_data['latitude'])
        elif cleaned_data['method'] in ('denied', 'error'):
            for key in ('latitude', 'longitude', 'accuracy'):
                if cleaned_data.get(key) is None:
                    self._errors[key] = ErrorList(
                        ['method requires that ' + key + ' must be specified'])
        else:
            self._errors['method'] = ErrorList(['method is required'])

        return cleaned_data
Example #3
0
    def clean(self):
        cleaned_data = self.cleaned_data

        if cleaned_data['method'] in ('html5', 'html5request', 'gears',
                                      'manual', 'geocoded', 'other',
                                      'favourite'):
            if cleaned_data['method'] == 'geocoded':
                results = geocode(cleaned_data['name'])
                if len(results) > 0:
                    cleaned_data.update(results[0])
                    cleaned_data['longitude'], cleaned_data[
                        'latitude'] = cleaned_data['location']
                    cleaned_data['alternatives'] = results[1:]
                else:
                    raise forms.ValidationError(
                        "Unable to find a location that matches '%s'." %
                        cleaned_data['name'])

            for key in ('latitude', 'longitude', 'accuracy'):
                if cleaned_data.get(key) is None:
                    self._errors[key] = ErrorList(
                        ['method requires that ' + key + ' must be specified'])

            if not self._errors:
                cleaned_data['location'] = cleaned_data[
                    'longitude'], cleaned_data['latitude']
                if not cleaned_data.get('name'):
                    try:
                        cleaned_data['name'] = reverse_geocode(
                            self.cleaned_data['longitude'],
                            self.cleaned_data['latitude'])[0]['name']
                    except:
                        cleaned_data['name'] = None
        elif cleaned_data['method'] in ('denied', 'error'):
            for key in ('latitude', 'longitude', 'accuracy'):
                if cleaned_data.get(key) is None:
                    self._errors[key] = ErrorList(
                        ['method requires that ' + key + ' must be specified'])
        else:
            self._errors['method'] = ErrorList(['method is required'])

        return cleaned_data
Example #4
0
    def clean(self):
        cleaned_data = self.cleaned_data

        if cleaned_data['method'] in ('html5', 'html5request', 'gears','manual', 'geocoded', 'other', 'favourite'):
            if cleaned_data['method'] == 'geocoded':
                
                if not cleaned_data['name'].strip():
                    raise forms.ValidationError(_("You must enter a location"))
                
                results = geocode(cleaned_data['name'])
                if len(results) > 0:
                    cleaned_data.update(results[0])
                    cleaned_data['longitude'], cleaned_data['latitude'] = cleaned_data['location']
                    # Ignore alternatives for postcodes
                    if not re.match(POSTCODE_RE, cleaned_data['name'].upper()):
                        cleaned_data['alternatives'] = results[1:]
                    else:
                        cleaned_data['alternatives'] = []
                else:
                    raise forms.ValidationError(_("Unable to find a location that matches '%s'.") % cleaned_data['name'])

            for key in ('latitude', 'longitude', 'accuracy'):
                if cleaned_data.get(key) is None:
                    self._errors[key] = ErrorList(['method requires that ' + key + ' must be specified'])

            if not self._errors:
                cleaned_data['location'] = cleaned_data['longitude'], cleaned_data['latitude']
                if not cleaned_data.get('name'):
                    try:
                        cleaned_data['name'] = reverse_geocode(
                            self.cleaned_data['longitude'],
                            self.cleaned_data['latitude'])[0]['name']
                    except:
                        cleaned_data['name'] = u"↝ %f, %f" % (self.cleaned_data['longitude'], self.cleaned_data['latitude'])
        elif cleaned_data['method'] in ('denied', 'error'):
            for key in ('latitude', 'longitude', 'accuracy'):
                if cleaned_data.get(key) is None:
                    self._errors[key] = ErrorList(['method requires that ' + key + ' must be specified'])
        else:
            self._errors['method'] = ErrorList(['method is required'])

        return cleaned_data
Example #5
0
    def clean(self):
        cleaned_data = self.cleaned_data

        if cleaned_data["method"] in ("html5", "html5request", "gears", "manual", "geocoded", "other", "favourite"):
            if cleaned_data["method"] == "geocoded":
                results = geocode(cleaned_data["name"])
                if len(results) > 0:
                    cleaned_data.update(results[0])
                    cleaned_data["longitude"], cleaned_data["latitude"] = cleaned_data["location"]
                    # Ignore alternatives for postcodes
                    if not re.match(POSTCODE_RE, cleaned_data["name"].upper()):
                        cleaned_data["alternatives"] = results[1:]
                    else:
                        cleaned_data["alternatives"] = []
                else:
                    raise forms.ValidationError("Unable to find a location that matches '%s'." % cleaned_data["name"])

            for key in ("latitude", "longitude", "accuracy"):
                if cleaned_data.get(key) is None:
                    self._errors[key] = ErrorList(["method requires that " + key + " must be specified"])

            if not self._errors:
                cleaned_data["location"] = cleaned_data["longitude"], cleaned_data["latitude"]
                if not cleaned_data.get("name"):
                    try:
                        cleaned_data["name"] = reverse_geocode(
                            self.cleaned_data["longitude"], self.cleaned_data["latitude"]
                        )[0]["name"]
                    except:
                        cleaned_data["name"] = u"↝ %f, %f" % (
                            self.cleaned_data["longitude"],
                            self.cleaned_data["latitude"],
                        )
        elif cleaned_data["method"] in ("denied", "error"):
            for key in ("latitude", "longitude", "accuracy"):
                if cleaned_data.get(key) is None:
                    self._errors[key] = ErrorList(["method requires that " + key + " must be specified"])
        else:
            self._errors["method"] = ErrorList(["method is required"])

        return cleaned_data