From 95fc1253bc4dbf8052b108142cbd3cff1b62da18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Mon, 11 Dec 2017 15:34:07 +0100 Subject: [PATCH] add new fields to WayType --- src/c3nav/editor/forms.py | 7 +- .../mapdata/migrations/0057_waytype_fields.py | 73 +++++++++++++++++++ src/c3nav/mapdata/models/graph.py | 21 +++++- 3 files changed, 95 insertions(+), 6 deletions(-) create mode 100644 src/c3nav/mapdata/migrations/0057_waytype_fields.py diff --git a/src/c3nav/editor/forms.py b/src/c3nav/editor/forms.py index bef6538c..f03c009c 100644 --- a/src/c3nav/editor/forms.py +++ b/src/c3nav/editor/forms.py @@ -135,10 +135,11 @@ class EditorFormBase(I18nModelFormMixin, ModelForm): def create_editor_form(editor_model): - possible_fields = ['slug', 'name', 'title', 'title_plural', - 'ordering', 'category', 'width', 'groups', 'color', 'priority', + possible_fields = ['slug', 'name', 'title', 'title_plural', 'join_edges', 'up_separate', 'walk', + 'ordering', 'category', 'width', 'groups', 'color', 'priority', 'icon_name', 'base_altitude', 'waytype', 'access_restriction', 'height', 'default_height', 'door_height', - 'outside', 'can_search', 'can_describe', 'geometry', 'single', 'altitude', 'short_label', + 'outside', 'can_search', 'can_describe', 'geometry', 'single', 'altitude', 'short_label', + 'extra_time', 'speed', 'description', 'speed_up', 'description_up', 'allow_levels', 'allow_spaces', 'allow_areas', 'allow_pois', 'left', 'top', 'right', 'bottom'] field_names = [field.name for field in editor_model._meta.get_fields() if not field.one_to_many] existing_fields = [name for name in possible_fields if name in field_names] diff --git a/src/c3nav/mapdata/migrations/0057_waytype_fields.py b/src/c3nav/mapdata/migrations/0057_waytype_fields.py new file mode 100644 index 00000000..d7961b77 --- /dev/null +++ b/src/c3nav/mapdata/migrations/0057_waytype_fields.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.6 on 2017-12-11 14:23 +from __future__ import unicode_literals + +import c3nav.mapdata.fields +from decimal import Decimal +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('mapdata', '0056_accesspermissiontoken'), + ] + + operations = [ + migrations.AddField( + model_name='waytype', + name='description', + field=c3nav.mapdata.fields.I18nField(fallback_any=True, verbose_name='description'), + ), + migrations.AddField( + model_name='waytype', + name='description_up', + field=c3nav.mapdata.fields.I18nField(fallback_any=True, verbose_name='description upwards'), + ), + migrations.AddField( + model_name='waytype', + name='extra_seconds', + field=models.PositiveSmallIntegerField(default=0, verbose_name='extra seconds per edge'), + ), + migrations.AddField( + model_name='waytype', + name='icon_name', + field=models.CharField(blank=True, max_length=32, null=True, verbose_name='icon name'), + ), + migrations.AddField( + model_name='waytype', + name='join_edges', + field=models.BooleanField(default=True, verbose_name='join consecutive edges'), + ), + migrations.AddField( + model_name='waytype', + name='speed', + field=models.DecimalField(decimal_places=1, default=1, max_digits=3, validators=[django.core.validators.MinValueValidator(Decimal('0.1'))], verbose_name='speed (m/s)'), + ), + migrations.AddField( + model_name='waytype', + name='speed_up', + field=models.DecimalField(decimal_places=1, default=1, max_digits=3, validators=[django.core.validators.MinValueValidator(Decimal('0.1'))], verbose_name='speed upwards (m/s)'), + ), + migrations.AddField( + model_name='waytype', + name='title_plural', + field=c3nav.mapdata.fields.I18nField(fallback_any=True, plural_name='titles_plural', verbose_name='Title (Plural)'), + ), + migrations.AddField( + model_name='waytype', + name='up_separate', + field=models.BooleanField(default=True, verbose_name='upwards separately'), + ), + migrations.AddField( + model_name='waytype', + name='walk', + field=models.BooleanField(default=False, verbose_name='walking'), + ), + migrations.AlterField( + model_name='waytype', + name='title', + field=c3nav.mapdata.fields.I18nField(fallback_any=True, plural_name='titles', verbose_name='Title'), + ), + ] diff --git a/src/c3nav/mapdata/models/graph.py b/src/c3nav/mapdata/models/graph.py index 53434eda..6e6fe628 100644 --- a/src/c3nav/mapdata/models/graph.py +++ b/src/c3nav/mapdata/models/graph.py @@ -1,11 +1,13 @@ from collections import OrderedDict +from decimal import Decimal +from django.core.validators import MinValueValidator from django.db import models from django.utils.translation import ugettext_lazy as _ -from c3nav.mapdata.fields import GeometryField +from c3nav.mapdata.fields import GeometryField, I18nField from c3nav.mapdata.models.access import AccessRestrictionMixin -from c3nav.mapdata.models.base import TitledMixin +from c3nav.mapdata.models.base import SerializableMixin from c3nav.mapdata.models.geometry.space import SpaceGeometryMixin @@ -25,11 +27,24 @@ class GraphNode(SpaceGeometryMixin, models.Model): return result -class WayType(TitledMixin, models.Model): +class WayType(SerializableMixin, models.Model): """ A special way type """ + title = I18nField(_('Title'), plural_name='titles', fallback_any=True) + title_plural = I18nField(_('Title (Plural)'), plural_name='titles_plural', fallback_any=True) + join_edges = models.BooleanField(_('join consecutive edges'), default=True) + up_separate = models.BooleanField(_('upwards separately'), default=True) + walk = models.BooleanField(_('walking'), default=False) color = models.CharField(max_length=32, verbose_name=_('edge color')) + icon_name = models.CharField(_('icon name'), max_length=32, null=True, blank=True) + extra_seconds = models.PositiveSmallIntegerField(_('extra seconds per edge'), default=0) + speed = models.DecimalField(_('speed (m/s)'), max_digits=3, decimal_places=1, default=1, + validators=[MinValueValidator(Decimal('0.1'))]) + description = I18nField(_('description'), fallback_any=True) + speed_up = models.DecimalField(_('speed upwards (m/s)'), max_digits=3, decimal_places=1, default=1, + validators=[MinValueValidator(Decimal('0.1'))]) + description_up = I18nField(_('description upwards'), fallback_any=True) class Meta: verbose_name = _('Way Type')