From 857788bcf6b0f109a85ad76c6af67d2b2c73a466 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Thu, 4 May 2017 12:08:17 +0200 Subject: [PATCH] merge Room and Outside into Area --- src/c3nav/editor/static/editor/js/editor.js | 3 +- .../migrations/0040_auto_20170504_0953.py | 118 ++++++++++++++++++ .../migrations/0041_room_outside_area.py | 31 +++++ .../migrations/0042_auto_20170504_1007.py | 29 +++++ src/c3nav/mapdata/models/geometry.py | 43 +++---- 5 files changed, 199 insertions(+), 25 deletions(-) create mode 100644 src/c3nav/mapdata/migrations/0040_auto_20170504_0953.py create mode 100644 src/c3nav/mapdata/migrations/0041_room_outside_area.py create mode 100644 src/c3nav/mapdata/migrations/0042_auto_20170504_1007.py diff --git a/src/c3nav/editor/static/editor/js/editor.js b/src/c3nav/editor/static/editor/js/editor.js index 6b4233b3..b976dcaf 100644 --- a/src/c3nav/editor/static/editor/js/editor.js +++ b/src/c3nav/editor/static/editor/js/editor.js @@ -212,8 +212,7 @@ editor = { }, _geometry_colors: { 'building': '#333333', - 'room': '#FFFFFF', - 'outside': '#EEFFEE', + 'area': '#FFFFFF', 'lineobstacle': '#999999', 'obstacle': '#999999', 'door': '#66FF00', diff --git a/src/c3nav/mapdata/migrations/0040_auto_20170504_0953.py b/src/c3nav/mapdata/migrations/0040_auto_20170504_0953.py new file mode 100644 index 00000000..0d18f528 --- /dev/null +++ b/src/c3nav/mapdata/migrations/0040_auto_20170504_0953.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.4 on 2017-05-04 09:53 +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', '0039_auto_20170501_1523'), + ] + + operations = [ + migrations.CreateModel( + name='Area', + 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()), + ('public', models.BooleanField(verbose_name='public')), + ('categories', models.CharField(choices=[('', 'normal'), ('stairs', 'stairs'), ('escalator', 'escalator'), ('elevator', 'elevator')], max_length=16, verbose_name='category')), + ('layer', models.CharField(choices=[('', 'normal'), ('upper', 'upper'), ('lowerr', 'lower')], max_length=16, verbose_name='layer')), + ], + options={ + 'default_related_name': 'areas', + 'verbose_name_plural': 'Areas', + 'verbose_name': 'Area', + }, + ), + migrations.RemoveField( + model_name='package', + name='depends', + ), + migrations.RemoveField( + model_name='arealocation', + name='package', + ), + migrations.RemoveField( + model_name='building', + name='package', + ), + migrations.RemoveField( + model_name='door', + name='package', + ), + migrations.RemoveField( + model_name='elevator', + name='package', + ), + migrations.RemoveField( + model_name='elevatorlevel', + name='package', + ), + migrations.RemoveField( + model_name='escalator', + name='package', + ), + migrations.RemoveField( + model_name='hole', + name='package', + ), + migrations.RemoveField( + model_name='level', + name='package', + ), + migrations.RemoveField( + model_name='levelconnector', + name='package', + ), + migrations.RemoveField( + model_name='lineobstacle', + name='package', + ), + migrations.RemoveField( + model_name='locationgroup', + name='package', + ), + migrations.RemoveField( + model_name='obstacle', + name='package', + ), + migrations.RemoveField( + model_name='outside', + name='package', + ), + migrations.RemoveField( + model_name='room', + name='package', + ), + migrations.RemoveField( + model_name='source', + name='package', + ), + migrations.RemoveField( + model_name='stair', + name='package', + ), + migrations.RemoveField( + model_name='stuffedarea', + name='package', + ), + migrations.AlterField( + model_name='arealocation', + name='routing_inclusion', + field=models.CharField(choices=[('default', 'Default, include it is unlocked'), ('allow_avoid', 'Included, but allow excluding'), ('allow_include', 'Avoided, but allow including'), ('needs_permission', 'Excluded, needs permission to include')], default='default', max_length=20, verbose_name='Routing Inclusion'), + ), + migrations.DeleteModel( + name='Package', + ), + migrations.AddField( + model_name='area', + name='level', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='areas', to='mapdata.Level', verbose_name='level'), + ), + ] diff --git a/src/c3nav/mapdata/migrations/0041_room_outside_area.py b/src/c3nav/mapdata/migrations/0041_room_outside_area.py new file mode 100644 index 00000000..d029482e --- /dev/null +++ b/src/c3nav/mapdata/migrations/0041_room_outside_area.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.4 on 2017-05-04 09:55 +from __future__ import unicode_literals + +from django.db import migrations + + +def fill_area_model(apps, schema_editor): + Area = apps.get_model('mapdata', 'Area') + for model_name in ('Room', 'Outside'): + Model_ = apps.get_model('mapdata', model_name) + for obj in Model_.objects.all(): + Area.objects.create( + name=obj.name, + geometry=obj.geometry, + level=obj.level, + public=obj.public, + categories='', + layer='', + ) + + +class Migration(migrations.Migration): + + dependencies = [ + ('mapdata', '0040_auto_20170504_0953'), + ] + + operations = [ + migrations.RunPython(fill_area_model), + ] diff --git a/src/c3nav/mapdata/migrations/0042_auto_20170504_1007.py b/src/c3nav/mapdata/migrations/0042_auto_20170504_1007.py new file mode 100644 index 00000000..5462726c --- /dev/null +++ b/src/c3nav/mapdata/migrations/0042_auto_20170504_1007.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.4 on 2017-05-04 10:07 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('mapdata', '0041_room_outside_area'), + ] + + operations = [ + migrations.RemoveField( + model_name='outside', + name='level', + ), + migrations.RemoveField( + model_name='room', + name='level', + ), + migrations.DeleteModel( + name='Outside', + ), + migrations.DeleteModel( + name='Room', + ), + ] diff --git a/src/c3nav/mapdata/models/geometry.py b/src/c3nav/mapdata/models/geometry.py index c8a36300..dd481c61 100644 --- a/src/c3nav/mapdata/models/geometry.py +++ b/src/c3nav/mapdata/models/geometry.py @@ -109,35 +109,32 @@ class Building(GeometryMapItemWithLevel): default_related_name = 'buildings' -class Room(GeometryMapItemWithLevel): +class Area(GeometryMapItemWithLevel): """ - An accessible area like a room. Can overlap. + An accessible area. Shouldn't overlap. """ geomtype = 'polygon' + + CATEGORIES = ( + ('', _('normal')), + ('stairs', _('stairs')), + ('escalator', _('escalator')), + ('elevator', _('elevator')), + ) + LAYERS = ( + ('', _('normal')), + ('upper', _('upper')), + ('lowerr', _('lower')), + ) + public = models.BooleanField(verbose_name=_('public')) + categories = models.CharField(verbose_name=_('category'), choices=CATEGORIES, max_length=16) + layer = models.CharField(verbose_name=_('layer'), choices=LAYERS, max_length=16) class Meta: - verbose_name = _('Room') - verbose_name_plural = _('Rooms') - default_related_name = 'rooms' - - def get_geojson_properties(self): - result = super().get_geojson_properties() - result['public'] = self.public - return result - - -class Outside(GeometryMapItemWithLevel): - """ - An accessible outdoor area like a court. Can overlap. - """ - geomtype = 'polygon' - public = models.BooleanField(verbose_name=_('public')) - - class Meta: - verbose_name = _('Outside Area') - verbose_name_plural = _('Outside Areas') - default_related_name = 'outsides' + verbose_name = _('Area') + verbose_name_plural = _('Areas') + default_related_name = 'areas' def get_geojson_properties(self): result = super().get_geojson_properties()