def test_validators(self):
        with self.assertRaises(ValidationError):
            validate_latitude(90.1)

        with self.assertRaises(ValidationError):
            validate_latitude(-91)

        with self.assertRaises(ValidationError):
            validate_longitude(180.1)

        with self.assertRaises(ValidationError):
            validate_longitude(-180)
Example #2
0
 def to_python(self, value):
     if not value or value == 'None':
         return None
     if isinstance(value, GeoCoordinates):
         return value
     if isinstance(value, list):
         if None in value:
             return None
         latitude = value[0]
         longitude = value[1]
     else:
         value_parts = value.rsplit(',')
         try:
             latitude = value_parts[0]
         except IndexError:
             latitude = '0.0'
         try:
             longitude = value_parts[1]
         except IndexError:
             longitude = '0.0'
     validate_latitude(latitude)
     validate_longitude(longitude)
     return GeoCoordinates(latitude, longitude)
Example #3
0
    def to_python(self, value):
        if not value or value == 'None':
            return None
        if isinstance(value, GeoLocation):
            return value
        if isinstance(value, list):
            if None in value:
                return None
            timestamp, coordinates_raw = value
            coordinates = GeoCoordinates(*coordinates_raw)
        else:
            # default case is string
            value_parts = value.rsplit(':')
            try:
                timestamp = value_parts[0]
            except IndexError:
                timestamp = '0.0'

            try:
                coords_parts = value_parts[1].rsplit(',')
            except IndexError:
                latitude = '0.0'
                longitude = '0.0'
            else:
                try:
                    latitude = coords_parts[0]
                except IndexError:
                    latitude = '0.0'
                try:
                    longitude = coords_parts[1]
                except IndexError:
                    longitude = '0.0'
            validate_latitude(latitude)
            validate_longitude(longitude)
            coordinates = GeoCoordinates(latitude, longitude)
        return GeoLocation(timestamp, coordinates)