team-3/src/c3nav/mapdata/serializers/features.py

60 lines
1.7 KiB
Python
Raw Normal View History

2016-10-13 13:55:02 +02:00
from rest_framework import serializers
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
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()
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
def get_description(self, obj):
return str(obj.__doc__.strip())
2016-10-13 13:55:02 +02: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
class BuildingSerializer(MapItemSerializer):
2016-10-13 13:55:02 +02:00
class Meta:
model = Building
2016-10-13 13:55:02 +02:00
fields = ('name', 'level', 'package', 'geometry')
class AreaSerializer(MapItemSerializer):
2016-10-13 13:55:02 +02:00
class Meta:
model = Area
2016-10-13 13:55:02 +02:00
fields = ('name', 'level', 'package', 'geometry')
2016-10-16 13:20:34 +02: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
class DoorSerializer(MapItemSerializer):
2016-10-16 13:20:34 +02:00
class Meta:
model = Door
fields = ('name', 'level', 'package', 'geometry')