2016-10-13 13:55:02 +02:00
|
|
|
from rest_framework import serializers
|
|
|
|
|
2016-11-14 21:15:20 +01:00
|
|
|
from c3nav.mapdata.models.geometry import Area, Building, Door, Obstacle
|
2016-10-13 13:55:02 +02:00
|
|
|
from c3nav.mapdata.serializers.fields import GeometryField
|
|
|
|
|
|
|
|
|
2016-11-14 21:15:20 +01:00
|
|
|
class MapItemTypeSerializer(serializers.Serializer):
|
2016-10-13 13:55:02 +02:00
|
|
|
name = serializers.SerializerMethodField()
|
|
|
|
title = serializers.SerializerMethodField()
|
|
|
|
title_plural = serializers.SerializerMethodField()
|
|
|
|
endpoint = serializers.SerializerMethodField()
|
2016-10-16 13:41:14 +02:00
|
|
|
description = serializers.SerializerMethodField()
|
2016-10-13 13:55:02 +02:00
|
|
|
geomtype = serializers.CharField()
|
|
|
|
color = serializers.CharField()
|
|
|
|
|
|
|
|
def get_name(self, obj):
|
|
|
|
return obj.__name__.lower()
|
|
|
|
|
|
|
|
def get_title(self, obj):
|
|
|
|
return str(obj._meta.verbose_name)
|
|
|
|
|
|
|
|
def get_title_plural(self, obj):
|
|
|
|
return str(obj._meta.verbose_name_plural)
|
|
|
|
|
|
|
|
def get_endpoint(self, obj):
|
|
|
|
return obj._meta.default_related_name
|
|
|
|
|
2016-10-16 13:41:14 +02:00
|
|
|
def get_description(self, obj):
|
|
|
|
return str(obj.__doc__.strip())
|
|
|
|
|
2016-10-13 13:55:02 +02:00
|
|
|
|
2016-11-14 21:15:20 +01:00
|
|
|
class MapItemSerializer(serializers.ModelSerializer):
|
2016-10-13 13:55:02 +02:00
|
|
|
level = serializers.SlugRelatedField(slug_field='name', read_only=True)
|
|
|
|
package = serializers.SlugRelatedField(slug_field='name', read_only=True)
|
|
|
|
geometry = GeometryField()
|
|
|
|
|
2016-10-16 13:20:34 +02:00
|
|
|
|
2016-11-14 21:15:20 +01:00
|
|
|
class BuildingSerializer(MapItemSerializer):
|
2016-10-13 13:55:02 +02:00
|
|
|
class Meta:
|
2016-10-16 13:35:01 +02:00
|
|
|
model = Building
|
2016-10-13 13:55:02 +02:00
|
|
|
fields = ('name', 'level', 'package', 'geometry')
|
|
|
|
|
|
|
|
|
2016-11-14 21:15:20 +01:00
|
|
|
class AreaSerializer(MapItemSerializer):
|
2016-10-13 13:55:02 +02:00
|
|
|
class Meta:
|
2016-10-16 13:35:01 +02:00
|
|
|
model = Area
|
2016-10-13 13:55:02 +02:00
|
|
|
fields = ('name', 'level', 'package', 'geometry')
|
2016-10-16 13:20:34 +02:00
|
|
|
|
|
|
|
|
2016-11-14 21:15:20 +01:00
|
|
|
class ObstacleSerializer(MapItemSerializer):
|
2016-10-16 13:20:34 +02:00
|
|
|
class Meta:
|
|
|
|
model = Obstacle
|
2016-10-16 13:38:34 +02:00
|
|
|
fields = ('name', 'level', 'package', 'geometry', 'height')
|
2016-10-16 13:20:34 +02:00
|
|
|
|
|
|
|
|
2016-11-14 21:15:20 +01:00
|
|
|
class DoorSerializer(MapItemSerializer):
|
2016-10-16 13:20:34 +02:00
|
|
|
class Meta:
|
|
|
|
model = Door
|
|
|
|
fields = ('name', 'level', 'package', 'geometry')
|