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)
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)
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)