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 .level import Level # noqa
from .source import Source # noqa from .source import Source # noqa
from .collections import Elevator # noqa
from .geometry import LevelFeature # noqa from .geometry import LevelFeature # noqa
from c3nav.mapdata.models.base import GEOMETRY_FEATURE_TYPES from c3nav.mapdata.models.base import GEOMETRY_FEATURE_TYPES
from .locations import AreaLocation, LocationGroup # noqa 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 collections import OrderedDict
from django.db import models from django.db import models
from django.utils.functional import cached_property
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from shapely.geometry import CAP_STYLE, JOIN_STYLE from shapely.geometry import CAP_STYLE, JOIN_STYLE
from shapely.geometry.geo import mapping from shapely.geometry.geo import mapping
from c3nav.mapdata.models import Elevator
from c3nav.mapdata.models.base import GeometryFeature from c3nav.mapdata.models.base import GeometryFeature
from c3nav.mapdata.utils.json import format_geojson from c3nav.mapdata.utils.json import format_geojson
@ -227,34 +225,3 @@ class Hole(LevelFeature):
verbose_name = _('Hole') verbose_name = _('Hole')
verbose_name_plural = _('Holes') verbose_name_plural = _('Holes')
default_related_name = '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._shortest_path import shortest_path
from scipy.sparse.csgraph._tools import csgraph_from_dense 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.mapdata.models.locations import AreaLocation, Location, LocationGroup, PointLocation
from c3nav.routing.connection import GraphConnection from c3nav.routing.connection import GraphConnection
from c3nav.routing.exceptions import AlreadyThere, NoRouteFound, NotYetRoutable from c3nav.routing.exceptions import AlreadyThere, NoRouteFound, NotYetRoutable