diff --git a/src/c3nav/editor/forms.py b/src/c3nav/editor/forms.py index 3822d5fb..64afdd8d 100644 --- a/src/c3nav/editor/forms.py +++ b/src/c3nav/editor/forms.py @@ -71,6 +71,12 @@ class EditorFormBase(I18nModelFormMixin, ModelForm): self.fields['access_restriction'].label_from_instance = lambda obj: obj.title self.fields['access_restriction'].queryset = AccessRestriction.qs_for_request(self.request) + Space = self.request.changeset.wrap_model('Space') + for space_field in ('origin_space', 'target_space'): + if space_field in self.fields: + self.fields[space_field].label_from_instance = lambda obj: obj.title + self.fields[space_field].queryset = Space.qs_for_request(self.request) + self.redirect_slugs = None self.add_redirect_slugs = None self.remove_redirect_slugs = None @@ -139,6 +145,7 @@ def create_editor_form(editor_model): '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', + 'origin_space', 'target_space', 'extra_seconds', '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] diff --git a/src/c3nav/editor/urls.py b/src/c3nav/editor/urls.py index d13aaccd..bdc806ad 100644 --- a/src/c3nav/editor/urls.py +++ b/src/c3nav/editor/urls.py @@ -65,3 +65,5 @@ urlpatterns.extend(add_editor_urls('LineObstacle', 'Space')) urlpatterns.extend(add_editor_urls('Column', 'Space')) urlpatterns.extend(add_editor_urls('POI', 'Space')) urlpatterns.extend(add_editor_urls('AltitudeMarker', 'Space')) +urlpatterns.extend(add_editor_urls('LeaveDescription', 'Space')) +urlpatterns.extend(add_editor_urls('CrossDescription', 'Space')) diff --git a/src/c3nav/editor/views/edit.py b/src/c3nav/editor/views/edit.py index 9e85be60..61edf35d 100644 --- a/src/c3nav/editor/views/edit.py +++ b/src/c3nav/editor/views/edit.py @@ -87,7 +87,7 @@ def space_detail(request, level, pk): 'child_models': [child_model(request, model_name, kwargs={'space': pk}, parent=space) for model_name in ('POI', 'Area', 'Obstacle', 'LineObstacle', 'Stair', 'Ramp', 'Column', - 'Hole', 'AltitudeMarker')], + 'Hole', 'AltitudeMarker', 'LeaveDescription', 'CrossDescription')], 'geometry_url': '/api/editor/geometries/?space='+pk, }) @@ -318,7 +318,13 @@ def list_objects(request, model=None, level=None, space=None, explicit_edit=Fals reverse_kwargs['space'] = space sub_qs = Space.objects.filter(Space.q_for_request(request)).select_related('level').defer('geometry') space = get_object_or_404(sub_qs, pk=space) - queryset = queryset.filter(space=space).defer('geometry') + queryset = queryset.filter(space=space) + try: + model._meta.get_field('geometry') + except FieldDoesNotExist: + pass + else: + queryset = queryset.defer('geometry') ctx.update({ 'levels': Level.objects.filter(Level.q_for_request(request), on_top_of__isnull=True), 'level': space.level, diff --git a/src/c3nav/mapdata/migrations/0062_typos.py b/src/c3nav/mapdata/migrations/0062_typos.py new file mode 100644 index 00000000..90ae52b9 --- /dev/null +++ b/src/c3nav/mapdata/migrations/0062_typos.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.7 on 2017-12-18 23:33 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('mapdata', '0061_space_based_route_descriptions'), + ] + + operations = [ + migrations.RenameModel( + old_name='CrossDecription', + new_name='CrossDescription', + ), + migrations.RenameModel( + old_name='LeaveDecription', + new_name='LeaveDescription', + ), + ] diff --git a/src/c3nav/mapdata/models/geometry/space.py b/src/c3nav/mapdata/models/geometry/space.py index 6742a294..3cbdc197 100644 --- a/src/c3nav/mapdata/models/geometry/space.py +++ b/src/c3nav/mapdata/models/geometry/space.py @@ -243,7 +243,7 @@ class AltitudeMarker(SpaceGeometryMixin, models.Model): return '%s (%sm)' % (super().title, self.altitude) -class LeaveDecription(SpaceGeometryMixin, models.Model): +class LeaveDescription(models.Model): """ A description for leaving a space to another space """ @@ -258,7 +258,7 @@ class LeaveDecription(SpaceGeometryMixin, models.Model): default_related_name = 'leave_descriptions' -class CrossDecription(SpaceGeometryMixin, models.Model): +class CrossDescription(models.Model): """ A description for crossing a space from one space to another space """