add Door.level
This commit is contained in:
parent
e70eaea471
commit
af30d9532b
2 changed files with 54 additions and 13 deletions
30
src/c3nav/mapdata/migrations/0066_auto_20170509_1148.py
Normal file
30
src/c3nav/mapdata/migrations/0066_auto_20170509_1148.py
Normal file
|
@ -0,0 +1,30 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.10.7 on 2017-05-09 11:48
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('mapdata', '0065_auto_20170509_1140'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='space',
|
||||
options={'verbose_name': 'Space', 'verbose_name_plural': 'Spaces'},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='door',
|
||||
name='level',
|
||||
field=models.CharField(choices=[('', 'normal'), ('upper', 'upper'), ('lower', 'lower')], default='', max_length=16, verbose_name='level'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='space',
|
||||
name='section',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='spaces', to='mapdata.Section', verbose_name='section'),
|
||||
),
|
||||
]
|
|
@ -21,6 +21,23 @@ 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
|
||||
|
||||
def get_geojson_properties(self):
|
||||
result = super().get_geojson_properties()
|
||||
result['level'] = self.level
|
||||
return result
|
||||
|
||||
|
||||
class Building(SectionGeometryMixin, models.Model):
|
||||
"""
|
||||
The outline of a building on a specific level
|
||||
|
@ -33,9 +50,9 @@ class Building(SectionGeometryMixin, models.Model):
|
|||
default_related_name = 'buildings'
|
||||
|
||||
|
||||
class Space(SectionGeometryMixin, models.Model):
|
||||
class Space(LevelSectionGeometryMixin, models.Model):
|
||||
"""
|
||||
An accessible space. Shouldn't overlap.
|
||||
An accessible space. Shouldn't overlap with spaces on same secion and level.
|
||||
"""
|
||||
|
||||
CATEGORIES = (
|
||||
|
@ -44,20 +61,14 @@ class Space(SectionGeometryMixin, models.Model):
|
|||
('escalator', _('escalator')),
|
||||
('elevator', _('elevator')),
|
||||
)
|
||||
LEVELS = (
|
||||
('', _('normal')),
|
||||
('upper', _('upper')),
|
||||
('lower', _('lower')),
|
||||
)
|
||||
geometry = GeometryField('polygon')
|
||||
public = models.BooleanField(verbose_name=_('public'), default=True)
|
||||
category = models.CharField(verbose_name=_('category'), choices=CATEGORIES, default='', max_length=16)
|
||||
level = models.CharField(verbose_name=_('level'), choices=LEVELS, default='', max_length=16)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Area')
|
||||
verbose_name_plural = _('Areas')
|
||||
default_related_name = 'areas'
|
||||
verbose_name = _('Space')
|
||||
verbose_name_plural = _('Spaces')
|
||||
default_related_name = 'spaces'
|
||||
|
||||
def get_geojson_properties(self):
|
||||
result = super().get_geojson_properties()
|
||||
|
@ -67,9 +78,9 @@ class Space(SectionGeometryMixin, models.Model):
|
|||
return result
|
||||
|
||||
|
||||
class Door(SectionGeometryMixin, models.Model):
|
||||
class Door(LevelSectionGeometryMixin, models.Model):
|
||||
"""
|
||||
A connection between two rooms
|
||||
A connection between two spaces
|
||||
"""
|
||||
geometry = GeometryField('polygon')
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue