move elevators to area model

This commit is contained in:
Laura Klünder 2017-05-05 13:26:25 +02:00
parent 5973ca3211
commit 74e9acd8b6
6 changed files with 61 additions and 51 deletions

View file

@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2017-05-05 11:14
from __future__ import unicode_literals
from django.db import migrations
def elevatorlevel_to_area(apps, schema_editor):
Area = apps.get_model('mapdata', 'Area')
ElevatorLevel = apps.get_model('mapdata', 'ElevatorLevel')
for obj in ElevatorLevel.objects.all():
Area.objects.create(
name=obj.name,
geometry=obj.geometry,
level=obj.level,
public=obj.public,
category='elevator',
layer='',
)
class Migration(migrations.Migration):
dependencies = [
('mapdata', '0047_auto_20170505_1002'),
]
operations = [
migrations.RunPython(elevatorlevel_to_area),
]

View file

@ -0,0 +1,29 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2017-05-05 11:25
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('mapdata', '0048_elevator_area'),
]
operations = [
migrations.RemoveField(
model_name='elevatorlevel',
name='elevator',
),
migrations.RemoveField(
model_name='elevatorlevel',
name='level',
),
migrations.DeleteModel(
name='Elevator',
),
migrations.DeleteModel(
name='ElevatorLevel',
),
]

View file

@ -1,6 +1,5 @@
from .level import Level # noqa
from .source import Source # noqa
from .collections import Elevator # noqa
from .geometry import LevelFeature # noqa
from c3nav.mapdata.models.base import GEOMETRY_FEATURE_TYPES
from .locations import AreaLocation, LocationGroup # noqa

View file

@ -1,16 +0,0 @@
from django.utils.translation import ugettext_lazy as _
from c3nav.mapdata.models.base import Feature
class Elevator(Feature):
"""
An elevator.
"""
class Meta:
verbose_name = _('Elevator')
verbose_name_plural = _('Elevators')
default_related_name = 'elevators'
def __str__(self):
return self.name

View file

@ -1,11 +1,9 @@
from collections import OrderedDict
from django.db import models
from django.utils.functional import cached_property
from django.utils.translation import ugettext_lazy as _
from shapely.geometry import CAP_STYLE, JOIN_STYLE
from shapely.geometry.geo import mapping
from c3nav.mapdata.models import Elevator
from c3nav.mapdata.models.base import GeometryFeature
from c3nav.mapdata.utils.json import format_geojson
@ -227,34 +225,3 @@ class Hole(LevelFeature):
verbose_name = _('Hole')
verbose_name_plural = _('Holes')
default_related_name = 'holes'
class ElevatorLevel(LevelFeature):
"""
An elevator Level
"""
elevator = models.ForeignKey(Elevator, on_delete=models.PROTECT)
button = models.SlugField(_('Button label'), max_length=10)
override_altitude = models.DecimalField(_('override level altitude'),
blank=True, null=True, max_digits=6, decimal_places=2)
public = models.BooleanField(verbose_name=_('public'))
geomtype = 'polygon'
class Meta:
verbose_name = _('Elevator Level')
verbose_name_plural = _('Elevator Levels')
default_related_name = 'elevatorlevels'
def get_geojson_properties(self):
result = super().get_geojson_properties()
result['public'] = self.public
result['elevator'] = self.elevator.name
result['button'] = self.button
return result
@cached_property
def altitude(self):
if self.override_altitude is not None:
return self.override_altitude
return self.level.altitude

View file

@ -8,7 +8,7 @@ from django.conf import settings
from scipy.sparse.csgraph._shortest_path import shortest_path
from scipy.sparse.csgraph._tools import csgraph_from_dense
from c3nav.mapdata.models import Elevator, Level
from c3nav.mapdata.models import Level
from c3nav.mapdata.models.locations import AreaLocation, Location, LocationGroup, PointLocation
from c3nav.routing.connection import GraphConnection
from c3nav.routing.exceptions import AlreadyThere, NoRouteFound, NotYetRoutable