Private
Public Access
1
0

adding GeoCourse to API

This commit is contained in:
Sander Roosendaal
2020-07-19 09:58:10 +02:00
parent 0f19a5d077
commit 2666f3f78f
4 changed files with 90 additions and 4 deletions

View File

@@ -10,7 +10,7 @@ from rest_framework import serializers
from rowers.models import (
Workout,Rower,FavoriteChart,VirtualRaceResult,
VirtualRace,GeoCourse,StandardCollection, CourseStandard,
GeoCourse, GeoPolygon, GeoPoint,
)
import datetime
@@ -245,3 +245,67 @@ class StrokeDataSerializer(serializers.Serializer):
# do something
return 1
class GeoPointSerializer(serializers.ModelSerializer):
class Meta:
model = GeoPoint
fields = (
'id',
'latitude',
'longitude',
'order_in_poly',
)
extra_kwargs = {'id': {'read_only': False, 'required': True}}
class GeoPolygonSerializer(serializers.ModelSerializer):
points = GeoPointSerializer(many=True)
class Meta:
model = GeoPolygon
fields = (
'id',
'name',
'order_in_course',
'points',
)
extra_kwargs = {'id': {'read_only': False, 'required': True}}
class GeoCourseSerializer(serializers.ModelSerializer):
polygons = GeoPolygonSerializer(many=True)
class Meta:
model = GeoCourse
fields = (
'id',
'name',
'distance',
'country',
'notes',
'polygons',
)
def update(self, instance, validated_data):
instance.name = validated_data.get('name',instance.name)
instance.country = validated_data.get('country',instance.country)
instance.notes = validated_data.get('notes',instance.notes)
instance.save()
polygons = validated_data.get('polygons')
for polygon in polygons:
polygon_id = polygon.get('id',None)
if polygon_id:
p = GeoPolygon.objects.get(id=polygon_id)
p.name = polygon.get('name',p.name)
p.order_in_course = polygon.get('order_in_course',p.order_in_course)
p.save()
points = polygon.get('points')
for point in points:
point_id = point.get('id',None)
if point_id:
pt = GeoPoint.objects.get(id=point_id)
pt.latitude = point.get('latitude',pt.latitude)
pt.longitude = point.get('longitude',pt.longitude)
pt.order_in_poly = point.get('order_in_poly',pt.order_in_poly)
pt.save()
return instance