add ElevatorLevel.override_altitude
This commit is contained in:
parent
8a1f8bb290
commit
1952479a49
6 changed files with 46 additions and 5 deletions
|
@ -3,6 +3,7 @@ import time
|
|||
from collections import OrderedDict
|
||||
|
||||
from django.conf import settings
|
||||
from django.db.models import Field
|
||||
from django.forms import CharField, ModelForm, ValidationError
|
||||
from django.forms.models import ModelChoiceField
|
||||
from django.forms.widgets import HiddenInput
|
||||
|
@ -108,8 +109,8 @@ class MapitemFormMixin(ModelForm):
|
|||
|
||||
def create_editor_form(mapitemtype):
|
||||
possible_fields = ['name', 'package', 'altitude', 'level', 'intermediate', 'levels', 'geometry',
|
||||
'elevator', 'button', 'crop_to_level', 'width', 'groups']
|
||||
existing_fields = [field for field in possible_fields if hasattr(mapitemtype, field)]
|
||||
'elevator', 'button', 'crop_to_level', 'width', 'groups', 'override_altitude']
|
||||
existing_fields = [field for field in possible_fields if isinstance(getattr(mapitemtype, field, None), Field)]
|
||||
|
||||
class EditorForm(MapitemFormMixin, ModelForm):
|
||||
class Meta:
|
||||
|
|
|
@ -13,10 +13,11 @@
|
|||
</tr>
|
||||
{% endif %}
|
||||
<tr data-name="{{ item.name }}">
|
||||
|
||||
<td>{% if item.title != item.name %}{{ item.title }} <small>{{ item.name }}</small>{% else %}{{ item.name }}{% endif %}</td>
|
||||
{% if has_elevator %}
|
||||
<td><a href="{% url 'editor.mapitems.edit' mapitem_type='elevator' name=item.elevator.name %}">{{ item.elevator }}</a></td>
|
||||
<td>{{ item.button }}</td>
|
||||
<td>{% if item.override_altitude %}{{ item.override_altitude }} m{% endif %}</td>
|
||||
{% endif %}
|
||||
{% if has_levels %}
|
||||
<td>{% for level in item.levels.all %}{% if not forloop.first %}, {% endif %}<a href="" data-level-link="{{ level.name }}">{{ level.name }}</a>{% endfor %}</td>
|
||||
|
|
26
src/c3nav/mapdata/migrations/0021_auto_20161217_2333.py
Normal file
26
src/c3nav/mapdata/migrations/0021_auto_20161217_2333.py
Normal file
|
@ -0,0 +1,26 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.10.4 on 2016-12-17 23:33
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('mapdata', '0020_auto_20161216_0934'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='elevatorlevel',
|
||||
name='override_altitude',
|
||||
field=models.DecimalField(decimal_places=2, max_digits=6, null=True, verbose_name='override level altitude'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='level',
|
||||
name='altitude',
|
||||
field=models.DecimalField(decimal_places=2, default=0, max_digits=6, unique=True, verbose_name='level altitude'),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
|
@ -1,6 +1,7 @@
|
|||
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, shape
|
||||
|
@ -321,6 +322,7 @@ class ElevatorLevel(GeometryMapItemWithLevel):
|
|||
"""
|
||||
elevator = models.ForeignKey(Elevator, on_delete=models.PROTECT)
|
||||
button = models.SlugField(_('Button label'), max_length=10)
|
||||
override_altitude = models.DecimalField(_('override level altitude'), null=True, max_digits=6, decimal_places=2)
|
||||
|
||||
geomtype = 'polygon'
|
||||
|
||||
|
@ -347,10 +349,21 @@ class ElevatorLevel(GeometryMapItemWithLevel):
|
|||
raise ValueError('missing button.')
|
||||
kwargs['button'] = data['button']
|
||||
|
||||
if 'override_altitude' in data:
|
||||
kwargs['override_altitude'] = data['override_altitude']
|
||||
|
||||
return kwargs
|
||||
|
||||
def tofile(self):
|
||||
result = super().tofile()
|
||||
result['elevator'] = self.elevator.name
|
||||
result['button'] = self.button
|
||||
if self.override_altitude is not None:
|
||||
result['override_altitude'] = float(self.override_altitude)
|
||||
return result
|
||||
|
||||
@cached_property
|
||||
def altitude(self):
|
||||
if self.override_altitude is not None:
|
||||
return self.override_altitude
|
||||
return self.level.altitude
|
||||
|
|
|
@ -14,7 +14,7 @@ class Level(MapItem):
|
|||
"""
|
||||
name = models.SlugField(_('level name'), unique=True, max_length=50,
|
||||
help_text=_('Usually just an integer (e.g. -1, 0, 1, 2)'))
|
||||
altitude = models.DecimalField(_('level altitude'), null=True, max_digits=6, decimal_places=2)
|
||||
altitude = models.DecimalField(_('level altitude'), null=False, unique=True, max_digits=6, decimal_places=2)
|
||||
intermediate = models.BooleanField(_('intermediate level'))
|
||||
|
||||
class Meta:
|
||||
|
|
|
@ -132,7 +132,7 @@ class Graph:
|
|||
room.level._built_room_transfer_points.append(center_point)
|
||||
room.level._built_points.append(center_point)
|
||||
|
||||
direction_up = level2.level.altitude > level1.level.altitude
|
||||
direction_up = level2.altitude > level1.altitude
|
||||
|
||||
point1.connect_to(center_point, ctype=('elevator_up' if direction_up else 'elevator_down'))
|
||||
center_point.connect_to(point2, ctype=('elevator_up' if direction_up else 'elevator_down'))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue