From f0cec9b7bf75ba18a6508cdc0aeb78711ef5eb2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Mon, 1 May 2017 17:35:41 +0200 Subject: [PATCH] =?UTF-8?q?add=20=E2=80=9Epublic=E2=80=9C=20field=20to=20A?= =?UTF-8?q?reas=20and=20Locations=20and=20prefill=20it=20according=20to=20?= =?UTF-8?q?PUBLIC=5FPACKAGES?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../migrations/0039_auto_20170501_1523.py | 49 +++++++++++++++++++ src/c3nav/mapdata/models/geometry.py | 3 ++ src/c3nav/mapdata/models/locations.py | 1 + 3 files changed, 53 insertions(+) create mode 100644 src/c3nav/mapdata/migrations/0039_auto_20170501_1523.py diff --git a/src/c3nav/mapdata/migrations/0039_auto_20170501_1523.py b/src/c3nav/mapdata/migrations/0039_auto_20170501_1523.py new file mode 100644 index 00000000..2ac11987 --- /dev/null +++ b/src/c3nav/mapdata/migrations/0039_auto_20170501_1523.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.4 on 2017-05-01 15:23 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models + + +def set_public_by_package(apps, schema_editor): + from c3nav.settings import config + public_packages = [n for n in config.get('c3nav', 'public_packages', fallback='').split(',') if n] + for model_name in ('AreaLocation', 'ElevatorLevel', 'Outside', 'Room'): + Model_ = apps.get_model('mapdata', model_name) + Model_.objects.filter(package__name__in=public_packages).update(public=True) + + +class Migration(migrations.Migration): + + dependencies = [ + ('mapdata', '0038_source_image'), + ] + + operations = [ + migrations.AddField( + model_name='arealocation', + name='public', + field=models.BooleanField(default=False, verbose_name='public'), + preserve_default=False, + ), + migrations.AddField( + model_name='elevatorlevel', + name='public', + field=models.BooleanField(default=False, verbose_name='public'), + preserve_default=False, + ), + migrations.AddField( + model_name='outside', + name='public', + field=models.BooleanField(default=False, verbose_name='public'), + preserve_default=False, + ), + migrations.AddField( + model_name='room', + name='public', + field=models.BooleanField(default=False, verbose_name='public'), + preserve_default=False, + ), + migrations.RunPython(set_public_by_package), + ] diff --git a/src/c3nav/mapdata/models/geometry.py b/src/c3nav/mapdata/models/geometry.py index 1e7f98ba..eced3819 100644 --- a/src/c3nav/mapdata/models/geometry.py +++ b/src/c3nav/mapdata/models/geometry.py @@ -115,6 +115,7 @@ class Room(GeometryMapItemWithLevel): An accessible area like a room. Can overlap. """ geomtype = 'polygon' + public = models.BooleanField(verbose_name=_('public')) class Meta: verbose_name = _('Room') @@ -127,6 +128,7 @@ class Outside(GeometryMapItemWithLevel): An accessible outdoor area like a court. Can overlap. """ geomtype = 'polygon' + public = models.BooleanField(verbose_name=_('public')) class Meta: verbose_name = _('Outside Area') @@ -277,6 +279,7 @@ class ElevatorLevel(GeometryMapItemWithLevel): button = models.SlugField(_('Button label'), max_length=10) override_altitude = models.DecimalField(_('override level altitude'), blank=True, null=True, max_digits=6, decimal_places=2) + public = models.BooleanField(verbose_name=_('public')) geomtype = 'polygon' diff --git a/src/c3nav/mapdata/models/locations.py b/src/c3nav/mapdata/models/locations.py index 8972d5da..82a09ef5 100644 --- a/src/c3nav/mapdata/models/locations.py +++ b/src/c3nav/mapdata/models/locations.py @@ -118,6 +118,7 @@ class AreaLocation(LocationModelMixin, GeometryMapItemWithLevel): location_type = models.CharField(max_length=20, choices=LOCATION_TYPES, verbose_name=_('Location Type')) titles = JSONField() groups = models.ManyToManyField(LocationGroup, verbose_name=_('Location Groups'), blank=True) + public = models.BooleanField(verbose_name=_('public')) can_search = models.BooleanField(default=True, verbose_name=_('can be searched')) can_describe = models.BooleanField(default=True, verbose_name=_('can be used to describe a position'))