add ramp model

This commit is contained in:
Laura Klünder 2017-11-17 20:31:29 +01:00
parent 3556f33a75
commit aaabc7e37c
7 changed files with 60 additions and 4 deletions

View file

@ -11,7 +11,7 @@ from c3nav.editor.api import ChangeSetViewSet, EditorViewSet
from c3nav.mapdata.api import (AccessRestrictionViewSet, AreaViewSet, BuildingViewSet, ColumnViewSet, DoorViewSet,
HoleViewSet, LevelViewSet, LineObstacleViewSet, LocationGroupCategoryViewSet,
LocationGroupViewSet, LocationViewSet, MapViewSet, ObstacleViewSet, POIViewSet,
SourceViewSet, SpaceViewSet, StairViewSet)
RampViewSet, SourceViewSet, SpaceViewSet, StairViewSet)
router = SimpleRouter()
router.register(r'map', MapViewSet, base_name='map')
@ -22,6 +22,7 @@ router.register(r'doors', DoorViewSet)
router.register(r'holes', HoleViewSet)
router.register(r'areas', AreaViewSet)
router.register(r'stairs', StairViewSet)
router.register(r'ramps', RampViewSet)
router.register(r'obstacles', ObstacleViewSet)
router.register(r'lineobstacles', LineObstacleViewSet)
router.register(r'columns', ColumnViewSet)

View file

@ -178,6 +178,7 @@ class EditorViewSet(ViewSet):
space.areas.filter(Area.q_for_request(request)).prefetch_related('groups'),
space.holes.all(),
space.stairs.all(),
space.ramps.all(),
space.obstacles.all(),
space.lineobstacles.all(),
space.columns.all(),
@ -201,6 +202,7 @@ class EditorViewSet(ViewSet):
'door': '#ffffff',
'area': 'rgba(85, 170, 255, 0.2)',
'stair': '#a000a0',
'ramp': 'rgba(160, 0, 160, 0.2)',
'obstacle': '#999999',
'lineobstacle': '#999999',
'column': '#888888',

View file

@ -59,6 +59,7 @@ urlpatterns.extend(add_editor_urls('Door', 'Level'))
urlpatterns.extend(add_editor_urls('Hole', 'Space'))
urlpatterns.extend(add_editor_urls('Area', 'Space'))
urlpatterns.extend(add_editor_urls('Stair', 'Space'))
urlpatterns.extend(add_editor_urls('Ramp', 'Space'))
urlpatterns.extend(add_editor_urls('Obstacle', 'Space'))
urlpatterns.extend(add_editor_urls('LineObstacle', 'Space'))
urlpatterns.extend(add_editor_urls('Column', 'Space'))

View file

@ -81,8 +81,8 @@ def space_detail(request, level, pk):
'can_edit': request.changeset.can_edit(request),
'child_models': [child_model(request, model_name, kwargs={'space': pk}, parent=space)
for model_name in ('Hole', 'Area', 'Stair', 'Obstacle', 'LineObstacle', 'Column', 'POI',
'AltitudeMarker')],
for model_name in ('Hole', 'Area', 'Stair', 'Ramp', 'Obstacle', 'LineObstacle', 'Column',
'POI', 'AltitudeMarker')],
'geometry_url': '/api/editor/geometries/?space='+pk,
})

View file

@ -19,7 +19,8 @@ from rest_framework.viewsets import GenericViewSet, ReadOnlyModelViewSet, ViewSe
from c3nav.mapdata.models import AccessRestriction, Building, Door, Hole, LocationGroup, MapUpdate, Source, Space
from c3nav.mapdata.models.access import AccessPermission
from c3nav.mapdata.models.geometry.level import LevelGeometryMixin
from c3nav.mapdata.models.geometry.space import POI, Area, Column, LineObstacle, Obstacle, SpaceGeometryMixin, Stair
from c3nav.mapdata.models.geometry.space import (POI, Area, Column, LineObstacle, Obstacle, Ramp, SpaceGeometryMixin,
Stair)
from c3nav.mapdata.models.level import Level
from c3nav.mapdata.models.locations import (Location, LocationGroupCategory, LocationRedirect, LocationSlug,
SpecificLocation)
@ -208,6 +209,11 @@ class StairViewSet(MapdataViewSet):
queryset = Stair.objects.all()
class RampViewSet(MapdataViewSet):
""" Add ?geometry=1 to get geometries, add ?space=<id> to filter by space. """
queryset = Ramp.objects.all()
class ObstacleViewSet(MapdataViewSet):
""" Add ?geometry=1 to get geometries, add ?space=<id> to filter by space. """
queryset = Obstacle.objects.all()

View file

@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-11-17 19:24
from __future__ import unicode_literals
import c3nav.mapdata.fields
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('mapdata', '0047_remove_mapupdate_changed_geometries'),
]
operations = [
migrations.CreateModel(
name='Ramp',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('minx', models.DecimalField(db_index=True, decimal_places=2, max_digits=6, verbose_name='min x coordinate')),
('miny', models.DecimalField(db_index=True, decimal_places=2, max_digits=6, verbose_name='min y coordinate')),
('maxx', models.DecimalField(db_index=True, decimal_places=2, max_digits=6, verbose_name='max x coordinate')),
('maxy', models.DecimalField(db_index=True, decimal_places=2, max_digits=6, verbose_name='max y coordinate')),
('geometry', c3nav.mapdata.fields.GeometryField(default=None, geomtype='polygon')),
('space', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ramps', to='mapdata.Space', verbose_name='space')),
],
options={
'verbose_name': 'Ramp',
'verbose_name_plural': 'Ramps',
'default_related_name': 'ramps',
},
),
]

View file

@ -112,6 +112,18 @@ class Stair(SpaceGeometryMixin, models.Model):
default_related_name = 'stairs'
class Ramp(SpaceGeometryMixin, models.Model):
"""
A ramp
"""
geometry = GeometryField('polygon')
class Meta:
verbose_name = _('Ramp')
verbose_name_plural = _('Ramps')
default_related_name = 'ramps'
class Obstacle(SpaceGeometryMixin, models.Model):
"""
An obstacle