rename empty string Space level and category to normal
This commit is contained in:
parent
3206ca50a4
commit
53d8ebbddc
4 changed files with 55 additions and 25 deletions
|
@ -0,0 +1,36 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.10.7 on 2017-05-26 18:18
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
def set_space_level_category(apps, schema_editor):
|
||||
Space = apps.get_model('mapdata', 'Space')
|
||||
Space.objects.filter(level='').update(level='normal')
|
||||
Space.objects.filter(category='').update(category='normal')
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('mapdata', '0003_space_outside'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='door',
|
||||
name='level',
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='space',
|
||||
name='category',
|
||||
field=models.CharField(choices=[('normal', 'normal'), ('stairs', 'stairs'), ('escalator', 'escalator'), ('elevator', 'elevator')], default='normal', max_length=16, verbose_name='category'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='space',
|
||||
name='level',
|
||||
field=models.CharField(choices=[('normal', 'normal'), ('upper', 'upper'), ('lower', 'lower')], default='normal', max_length=16, verbose_name='level'),
|
||||
),
|
||||
migrations.RunPython(set_space_level_category),
|
||||
]
|
|
@ -30,18 +30,6 @@ class SectionGeometryMixin(GeometryMixin):
|
|||
return result
|
||||
|
||||
|
||||
class LevelSectionGeometryMixin(SectionGeometryMixin):
|
||||
LEVELS = (
|
||||
('', _('normal')),
|
||||
('upper', _('upper')),
|
||||
('lower', _('lower')),
|
||||
)
|
||||
level = models.CharField(verbose_name=_('level'), choices=LEVELS, default='', max_length=16)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class Building(SectionGeometryMixin, models.Model):
|
||||
"""
|
||||
The outline of a building on a specific level
|
||||
|
@ -54,18 +42,24 @@ class Building(SectionGeometryMixin, models.Model):
|
|||
default_related_name = 'buildings'
|
||||
|
||||
|
||||
class Space(SpecificLocation, LevelSectionGeometryMixin, models.Model):
|
||||
class Space(SpecificLocation, SectionGeometryMixin, models.Model):
|
||||
"""
|
||||
An accessible space. Shouldn't overlap with spaces on same secion and level.
|
||||
"""
|
||||
LEVELS = (
|
||||
('normal', _('normal')),
|
||||
('upper', _('upper')),
|
||||
('lower', _('lower')),
|
||||
)
|
||||
CATEGORIES = (
|
||||
('', _('normal')),
|
||||
('normal', _('normal')),
|
||||
('stairs', _('stairs')),
|
||||
('escalator', _('escalator')),
|
||||
('elevator', _('elevator')),
|
||||
)
|
||||
geometry = GeometryField('polygon')
|
||||
category = models.CharField(verbose_name=_('category'), choices=CATEGORIES, default='', max_length=16)
|
||||
level = models.CharField(verbose_name=_('level'), choices=LEVELS, default='normal', max_length=16)
|
||||
category = models.CharField(verbose_name=_('category'), choices=CATEGORIES, default='normal', max_length=16)
|
||||
outside = models.BooleanField(default=False, verbose_name=_('is outside of building'))
|
||||
|
||||
class Meta:
|
||||
|
@ -92,7 +86,7 @@ class Space(SpecificLocation, LevelSectionGeometryMixin, models.Model):
|
|||
return color
|
||||
|
||||
|
||||
class Door(LevelSectionGeometryMixin, models.Model):
|
||||
class Door(SectionGeometryMixin, models.Model):
|
||||
"""
|
||||
A connection between two spaces
|
||||
"""
|
||||
|
|
|
@ -73,7 +73,7 @@ class Section(SpecificLocation, EditorFormMixin, models.Model):
|
|||
space_levels = {
|
||||
'upper': [],
|
||||
'lower': [],
|
||||
'': [],
|
||||
'normal': [],
|
||||
}
|
||||
for space in spaces:
|
||||
space_levels[space.level].append(space)
|
||||
|
@ -83,7 +83,7 @@ class Section(SpecificLocation, EditorFormMixin, models.Model):
|
|||
for level, level_spaces in space_levels.items()}
|
||||
|
||||
hole_geometries = cascaded_union(tuple(h.geometry for h in self.holes.all()))
|
||||
hole_geometries = hole_geometries.intersection(space_geometries[''])
|
||||
hole_geometries = hole_geometries.intersection(space_geometries['normal'])
|
||||
|
||||
lower_spaces_by_color = {}
|
||||
for space in space_levels['lower']:
|
||||
|
@ -98,14 +98,14 @@ class Section(SpecificLocation, EditorFormMixin, models.Model):
|
|||
|
||||
# draw space background
|
||||
door_geometries = cascaded_union(tuple(d.geometry for d in self.doors.all()))
|
||||
section_geometry = cascaded_union((space_geometries[''], building_geometries, door_geometries))
|
||||
section_geometry = cascaded_union((space_geometries['normal'], building_geometries, door_geometries))
|
||||
section_geometry = section_geometry.difference(hole_geometries)
|
||||
section_clip = svg.register_geometry(section_geometry, defid='section', as_clip_path=True)
|
||||
svg.add_geometry(fill_color='#d1d1d1', clip_path=section_clip)
|
||||
|
||||
# color in spaces
|
||||
spaces_by_color = {}
|
||||
for space in space_levels['']:
|
||||
for space in space_levels['normal']:
|
||||
spaces_by_color.setdefault(space.get_color(), []).append(space)
|
||||
spaces_by_color.pop(None, None)
|
||||
spaces_by_color.pop('', None)
|
||||
|
@ -113,11 +113,11 @@ class Section(SpecificLocation, EditorFormMixin, models.Model):
|
|||
geometries = cascaded_union(tuple(space.geometry for space in color_spaces))
|
||||
svg.add_geometry(geometries, fill_color=color)
|
||||
|
||||
for space in space_levels['']:
|
||||
for space in space_levels['normal']:
|
||||
self._render_space_ground(svg, space)
|
||||
|
||||
# calculate walls
|
||||
wall_geometry = building_geometries.difference(space_geometries['']).difference(door_geometries)
|
||||
wall_geometry = building_geometries.difference(space_geometries['normal']).difference(door_geometries)
|
||||
|
||||
# draw wall shadow
|
||||
if effects:
|
||||
|
@ -125,7 +125,7 @@ class Section(SpecificLocation, EditorFormMixin, models.Model):
|
|||
svg.add_geometry(wall_dilated_geometry, fill_color='#000000', opacity=0.1, filter='wallblur',
|
||||
clip_path=section_clip)
|
||||
|
||||
for space in space_levels['']:
|
||||
for space in space_levels['normal']:
|
||||
self._render_space_inventory(svg, space)
|
||||
|
||||
# draw walls
|
||||
|
@ -133,7 +133,7 @@ class Section(SpecificLocation, EditorFormMixin, models.Model):
|
|||
|
||||
# draw doors
|
||||
door_geometries = cascaded_union(tuple(d.geometry for d in self.doors.all()))
|
||||
door_geometries = door_geometries.difference(space_geometries[''])
|
||||
door_geometries = door_geometries.difference(space_geometries['normal'])
|
||||
svg.add_geometry(door_geometries, fill_color='#ffffff', stroke_color='#929292', stroke_width=0.07)
|
||||
|
||||
# draw upper spaces
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue