def update_address(self, request, pk=None): s = AddressSerializer(data=request.data, many=False) s.is_valid(raise_exception=True) u = Address.objects.filter(user=request.user).first() if u == None: s.create(s.validated_data) else: s.save(address=u.address) return Response(status=200)
def post(self, request, format=None): data = JSONParser().parse(request) lat, lon = geo.getAddressData(data["address"]) if lat == None or lon == None: return Response(serializer.errors, status=404) data["latitude"] = round(lat, 8) data["longitude"] = round(lon, 8) elevation = geo.getElevation(lat, lon) if elevation == None: return Response(serializer.errors, status=404) data["elevation"] = round(elevation, 2) serializer = AddressSerializer(data=data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=201) return Response(serializer.errors, status=400)
def test_address_serializer_create_object(self): json_payload = """ { "uprn": "12345678", "address_line_1": "Dataland", "address_line_2": "Dataland Village Main Street", "city": "Dataland City", "county": "Cucumberland", "postcode": "AA11 1ZZ", "country_code": "GB", "point": { "type": "Point", "coordinates": [55.4168769443259, -1.83356713993623] }, "srid": 4326 } """ data = json.loads(json_payload) serializer = AddressSerializer(data=data) self.assertTrue(serializer.is_valid()) serializer.save() self.assertEqual(Address.objects.count(), 1)