uredjen serializer
This commit is contained in:
parent
f46bc8337e
commit
44a9b4570b
Binary file not shown.
@ -1,6 +1,8 @@
|
||||
from rest_framework import serializers
|
||||
from django.contrib.gis.geos import Point
|
||||
from .models import ObjektSigurnosti
|
||||
import json
|
||||
from rest_framework.exceptions import ValidationError
|
||||
|
||||
class ObjektSigurnostiSerializer(serializers.ModelSerializer):
|
||||
|
||||
@ -10,16 +12,26 @@ class ObjektSigurnostiSerializer(serializers.ModelSerializer):
|
||||
|
||||
def create(self, validated_data):
|
||||
lokacija_data = validated_data.pop('lokacija', None)
|
||||
lokacija = Point(lokacija_data['lon'], lokacija_data['lat'], srid=3765)
|
||||
objekt = ObjektSigurnosti.objects.create(lokacija=lokacija, **validated_data)
|
||||
return objekt
|
||||
|
||||
def to_representation(self, instance):
|
||||
return {'lon': instance.lokacija.x, 'lat': instance.lokacija.y}
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
lokacija_data = validated_data.pop('lokacija', None)
|
||||
lokacija = Point(lokacija_data['lon'], lokacija_data['lat'], srid=3765) if lokacija_data else None
|
||||
instance.lokacija = lokacija
|
||||
instance.save()
|
||||
return super().update(instance, validated_data)
|
||||
try:
|
||||
lokacija_data = json.loads(lokacija_data)
|
||||
except (json.JSONDecodeError, TypeError):
|
||||
raise ValidationError("Nevaljan format za 'lokacija'. Mora biti JSON.")
|
||||
|
||||
if isinstance(lokacija_data, dict):
|
||||
lon = lokacija_data.get('lon')
|
||||
lat = lokacija_data.get('lat')
|
||||
|
||||
if lon is not None and lat is not None:
|
||||
lokacija = Point(lon, lat, srid=3765)
|
||||
objekt = ObjektSigurnosti.objects.create(lokacija=lokacija, **validated_data)
|
||||
return objekt
|
||||
|
||||
raise ValidationError("Invalid 'lon' or 'lat' vrijednosti za 'lokacija'.")
|
||||
|
||||
|
||||
def to_representation(self, instance): #u sklopu ovog definiran i update
|
||||
representation = super().to_representation(instance) #da se prikažu sva polja
|
||||
representation['lon'] = instance.lokacija.x
|
||||
representation['lat'] = instance.lokacija.y
|
||||
return representation
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user