adding GeoCourse to API
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user