add Escalator and EscalatorSlope (with no support for rendermap and buildgraph so far)

This commit is contained in:
Laura Klünder 2016-12-18 01:15:25 +01:00
parent 5a0d628bf3
commit 03b07d8a76
6 changed files with 119 additions and 5 deletions

View file

@ -3,7 +3,6 @@ import time
from collections import OrderedDict
from django.conf import settings
from django.db.models import Field
from django.forms import CharField, ModelForm, ValidationError
from django.forms.models import ModelChoiceField
from django.forms.widgets import HiddenInput

View file

@ -282,7 +282,9 @@ editor = {
'levelconnector': '#FFFF00',
'shadow': '#000000',
'stair': '#FF0000',
'arealocation': '#0099FF'
'arealocation': '#0099FF',
'escalator': '#FF9900',
'escalatorslope': '#DD7700'
},
_line_draw_geometry_style: function(style) {
style.stroke = true;

View file

@ -0,0 +1,33 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2016-12-17 23:54
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', '0021_auto_20161217_2333'),
]
operations = [
migrations.CreateModel(
name='Escalator',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.SlugField(unique=True, verbose_name='Name')),
('geometry', c3nav.mapdata.fields.GeometryField()),
('direction', models.BooleanField(choices=[(True, 'up'), (False, 'down')], verbose_name='direction')),
('level', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='escalators', to='mapdata.Level', verbose_name='level')),
('package', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='escalators', to='mapdata.Package', verbose_name='map package')),
],
options={
'verbose_name': 'Escalator',
'default_related_name': 'escalators',
'verbose_name_plural': 'Escalators',
},
),
]

View file

@ -0,0 +1,32 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2016-12-18 00:12
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', '0022_escalator'),
]
operations = [
migrations.CreateModel(
name='EscalatorSlope',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.SlugField(unique=True, verbose_name='Name')),
('geometry', c3nav.mapdata.fields.GeometryField()),
('level', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='escalatorslopes', to='mapdata.Level', verbose_name='level')),
('package', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='escalatorslopes', to='mapdata.Package', verbose_name='map package')),
],
options={
'verbose_name': 'Escalator Slope',
'verbose_name_plural': 'Escalator Slopes',
'default_related_name': 'escalatorslopes',
},
),
]

View file

@ -165,6 +165,54 @@ class Outside(GeometryMapItemWithLevel):
default_related_name = 'outsides'
class Escalator(GeometryMapItemWithLevel):
"""
An escalator area
"""
DIRECTIONS = (
(True, _('up')),
(False, _('down')),
)
direction = models.BooleanField(verbose_name=_('direction'), choices=DIRECTIONS)
geomtype = 'polygon'
class Meta:
verbose_name = _('Escalator')
verbose_name_plural = _('Escalators')
default_related_name = 'escalators'
@classmethod
def fromfile(cls, data, file_path):
kwargs = super().fromfile(data, file_path)
if 'direction' not in data:
raise ValueError('missing direction.')
kwargs['direction'] = data['direction']
return kwargs
def get_geojson_properties(self):
result = super().get_geojson_properties()
result['direction'] = 'up' if self.direction else 'down'
return result
def tofile(self):
result = super().tofile()
result['direction'] = self.direction
return result
class EscalatorSlope(DirectedLineGeometryMapItemWithLevel):
"""
An escalator slope, indicating which side of the escalator is up
"""
class Meta:
verbose_name = _('Escalator Slope')
verbose_name_plural = _('Escalator Slopes')
default_related_name = 'escalatorslopes'
class Stair(DirectedLineGeometryMapItemWithLevel):
"""
A stair

View file

@ -1,8 +1,8 @@
from c3nav.mapdata.models import AreaLocation, Level, LocationGroup, Package, Source
from c3nav.mapdata.models.collections import Elevator
from c3nav.mapdata.models.geometry import (Building, Door, ElevatorLevel, Hole, LevelConnector, LineObstacle, Obstacle,
Outside, Room, Stair)
from c3nav.mapdata.models.geometry import (Building, Door, ElevatorLevel, Escalator, EscalatorSlope, Hole,
LevelConnector, LineObstacle, Obstacle, Outside, Room, Stair)
ordered_models = (Package, Level, LevelConnector, Source, Building, Room, Outside, Door, Obstacle, Hole)
ordered_models += (Elevator, ElevatorLevel, LineObstacle, Stair)
ordered_models += (Elevator, ElevatorLevel, LineObstacle, Stair, Escalator, EscalatorSlope)
ordered_models += (LocationGroup, AreaLocation)