remove property "public", add AccessRestriction model
This commit is contained in:
parent
945b5a7e0e
commit
20924b9845
6 changed files with 140 additions and 10 deletions
107
src/c3nav/mapdata/migrations/0027_access_restriction.py
Normal file
107
src/c3nav/mapdata/migrations/0027_access_restriction.py
Normal file
|
@ -0,0 +1,107 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.2 on 2017-07-13 16:35
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import c3nav.mapdata.fields
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
def convert_public_into_access_restriction(apps, schema_editor):
|
||||
AccessRestriction = apps.get_model('mapdata', 'AccessRestriction')
|
||||
access_restriction = AccessRestriction.objects.create(titles={
|
||||
'en': 'non-public',
|
||||
'de': 'nichtöffentlich',
|
||||
})
|
||||
|
||||
for model_name in ('Level', 'Space', 'Area', 'POI', 'LocationGroup'):
|
||||
model = apps.get_model('mapdata', model_name)
|
||||
model.objects.filter(public=False).update(access_restriction=access_restriction)
|
||||
|
||||
Source = apps.get_model('mapdata', 'Source')
|
||||
Source.objects.update(access_restriction=access_restriction)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('mapdata', '0026_remove_specificlocation_color'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='AccessRestriction',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('titles', c3nav.mapdata.fields.JSONField(default={})),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Access Restriction',
|
||||
'verbose_name_plural': 'Access Restrictions',
|
||||
'default_related_name': 'accessrestrictions',
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='area',
|
||||
name='access_restriction',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name='areas', to='mapdata.AccessRestriction',
|
||||
verbose_name='Access Restriction'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='level',
|
||||
name='access_restriction',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name='levels', to='mapdata.AccessRestriction',
|
||||
verbose_name='Access Restriction'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='locationgroup',
|
||||
name='access_restriction',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name='locationgroups', to='mapdata.AccessRestriction',
|
||||
verbose_name='Access Restriction'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='poi',
|
||||
name='access_restriction',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name='pois', to='mapdata.AccessRestriction',
|
||||
verbose_name='Access Restriction'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='source',
|
||||
name='access_restriction',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name='sources', to='mapdata.AccessRestriction',
|
||||
verbose_name='Access Restriction'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='space',
|
||||
name='access_restriction',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name='spaces', to='mapdata.AccessRestriction',
|
||||
verbose_name='Access Restriction'),
|
||||
),
|
||||
migrations.RunPython(convert_public_into_access_restriction),
|
||||
migrations.RemoveField(
|
||||
model_name='area',
|
||||
name='public',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='level',
|
||||
name='public',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='locationgroup',
|
||||
name='public',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='poi',
|
||||
name='public',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='space',
|
||||
name='public',
|
||||
),
|
||||
]
|
|
@ -4,3 +4,4 @@ from c3nav.mapdata.models.level import Level # noqa
|
|||
from c3nav.mapdata.models.locations import Location, LocationSlug, LocationGroup, LocationGroupCategory # noqa
|
||||
from c3nav.mapdata.models.source import Source # noqa
|
||||
from c3nav.mapdata.models.update import MapUpdate # noqa
|
||||
from c3nav.mapdata.models.access import AccessRestriction # noqa
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from c3nav.mapdata.models.base import SerializableMixin, TitledMixin
|
||||
|
||||
|
||||
class AccessRestriction(TitledMixin, models.Model):
|
||||
"""
|
||||
An access restriction, currently without finetuning
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Access Restriction')
|
||||
verbose_name_plural = _('Access Restrictions')
|
||||
default_related_name = 'accessrestrictions'
|
||||
|
||||
|
||||
class AccessRestrictionMixin(SerializableMixin, models.Model):
|
||||
access_restriction = models.ForeignKey(AccessRestriction, null=True, blank=True,
|
||||
verbose_name=_('Access Restriction'))
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
def _serialize(self, **kwargs):
|
||||
result = super()._serialize(**kwargs)
|
||||
result['access_restriction'] = self.access_restriction_id
|
||||
return result
|
|
@ -54,12 +54,6 @@ class Space(SpecificLocation, LevelGeometryMixin, models.Model):
|
|||
verbose_name_plural = _('Spaces')
|
||||
default_related_name = 'spaces'
|
||||
|
||||
def _serialize(self, space=True, **kwargs):
|
||||
result = super()._serialize(**kwargs)
|
||||
if space:
|
||||
result['public'] = self.public
|
||||
return result
|
||||
|
||||
|
||||
class Door(LevelGeometryMixin, models.Model):
|
||||
"""
|
||||
|
|
|
@ -4,6 +4,7 @@ from django.apps import apps
|
|||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from c3nav.mapdata.models.access import AccessRestrictionMixin
|
||||
from c3nav.mapdata.models.base import SerializableMixin, TitledMixin
|
||||
from c3nav.mapdata.utils.models import get_submodels
|
||||
|
||||
|
@ -50,10 +51,9 @@ class LocationSlug(SerializableMixin, models.Model):
|
|||
default_related_name = 'locationslugs'
|
||||
|
||||
|
||||
class Location(LocationSlug, TitledMixin, models.Model):
|
||||
class Location(LocationSlug, AccessRestrictionMixin, TitledMixin, models.Model):
|
||||
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'))
|
||||
public = models.BooleanField(verbose_name=_('public'), default=True)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
@ -75,7 +75,6 @@ class Location(LocationSlug, TitledMixin, models.Model):
|
|||
result = super()._serialize(**kwargs)
|
||||
result['can_search'] = self.can_search
|
||||
result['can_describe'] = self.can_search
|
||||
result['public'] = self.public
|
||||
return result
|
||||
|
||||
def get_slug(self):
|
||||
|
|
|
@ -4,10 +4,11 @@ from django.conf import settings
|
|||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from c3nav.mapdata.models.access import AccessRestrictionMixin
|
||||
from c3nav.mapdata.models.base import BoundsMixin
|
||||
|
||||
|
||||
class Source(BoundsMixin, models.Model):
|
||||
class Source(BoundsMixin, AccessRestrictionMixin, models.Model):
|
||||
"""
|
||||
A map source, images of levels that can be useful as backgrounds for the map editor
|
||||
"""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue