more fixes for the editor

This commit is contained in:
Laura Klünder 2018-09-18 17:38:26 +02:00
parent f11c8c5f22
commit 55013a61b6
4 changed files with 95 additions and 8 deletions

View file

@ -0,0 +1,24 @@
# Generated by Django 2.1.1 on 2018-09-18 15:36
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('editor', '0020_remove_permissions'),
]
operations = [
migrations.AlterField(
model_name='changeset',
name='last_cleaned_with',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='checked_changesets', to='mapdata.MapUpdate'),
),
migrations.AlterField(
model_name='changeset',
name='map_update',
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='changeset', to='mapdata.MapUpdate', verbose_name='map update'),
),
]

View file

@ -38,11 +38,11 @@ class ChangeSet(models.Model):
) )
created = models.DateTimeField(auto_now_add=True, verbose_name=_('created')) created = models.DateTimeField(auto_now_add=True, verbose_name=_('created'))
last_change = models.ForeignKey('editor.ChangeSetUpdate', null=True, related_name='+', last_change = models.ForeignKey('editor.ChangeSetUpdate', null=True, related_name='+',
verbose_name=_('last object change'), on_delete=models.PROTECT) verbose_name=_('last object change'), on_delete=models.CASCADE)
last_update = models.ForeignKey('editor.ChangeSetUpdate', null=True, related_name='+', last_update = models.ForeignKey('editor.ChangeSetUpdate', null=True, related_name='+',
verbose_name=_('last update'), on_delete=models.PROTECT) verbose_name=_('last update'), on_delete=models.CASCADE)
last_state_update = models.ForeignKey('editor.ChangeSetUpdate', null=True, related_name='+', last_state_update = models.ForeignKey('editor.ChangeSetUpdate', null=True, related_name='+',
verbose_name=_('last state update'), on_delete=models.PROTECT) verbose_name=_('last state update'), on_delete=models.CASCADE)
state = models.CharField(max_length=20, db_index=True, choices=STATES, default='unproposed') state = models.CharField(max_length=20, db_index=True, choices=STATES, default='unproposed')
author = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.PROTECT, verbose_name=_('Author')) author = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.PROTECT, verbose_name=_('Author'))
title = models.CharField(max_length=100, default='', verbose_name=_('Title')) title = models.CharField(max_length=100, default='', verbose_name=_('Title'))

View file

@ -206,8 +206,8 @@ class ModelInstanceWrapper(BaseWrapper):
descriptor = getattr(self._obj.__class__, name, None) descriptor = getattr(self._obj.__class__, name, None)
if isinstance(descriptor, ReverseOneToOneDescriptor): if isinstance(descriptor, ReverseOneToOneDescriptor):
try: try:
rel_obj = getattr(self._obj, descriptor.cache_name) rel_obj = descriptor.related.get_cached_value(self._obj)
except AttributeError: except KeyError:
related_pk = self._obj._get_pk_val() related_pk = self._obj._get_pk_val()
if related_pk is None: if related_pk is None:
rel_obj = None rel_obj = None
@ -219,8 +219,8 @@ class ModelInstanceWrapper(BaseWrapper):
except related_model.DoesNotExist: except related_model.DoesNotExist:
rel_obj = None rel_obj = None
else: else:
setattr(rel_obj, descriptor.related.field.get_cache_name(), self._obj) descriptor.related.field.set_cached_value(rel_obj, self._obj)
setattr(self._obj, descriptor.cache_name, rel_obj) descriptor.related.set_cached_value(self._obj, rel_obj)
return super().__getattr__(name) return super().__getattr__(name)
def __setattr__(self, name, value): def __setattr__(self, name, value):
@ -241,7 +241,7 @@ class ModelInstanceWrapper(BaseWrapper):
if not isinstance(value, ModelInstanceWrapper): if not isinstance(value, ModelInstanceWrapper):
raise ValueError('value has to be None or ModelInstanceWrapper') raise ValueError('value has to be None or ModelInstanceWrapper')
setattr(self._obj, name, value._obj) setattr(self._obj, name, value._obj)
setattr(self._obj, field.get_cache_name(), value) field.set_cached_value(self._obj, value)
return return
super().__setattr__(name, value) super().__setattr__(name, value)
@ -368,6 +368,15 @@ class BaseQueryWrapper(BaseWrapper):
return lookup_querysets[()] return lookup_querysets[()]
def _chain(self, **kwargs):
"""
Return a copy of the current QuerySet that's ready for another
operation.
"""
obj = self._clone()
obj._obj.__dict__.update(kwargs)
return obj
def _clone(self, **kwargs): def _clone(self, **kwargs):
clone = self._wrap_queryset(self._obj) clone = self._wrap_queryset(self._obj)
clone._obj.__dict__.update(kwargs) clone._obj.__dict__.update(kwargs)

View file

@ -0,0 +1,54 @@
# Generated by Django 2.1.1 on 2018-09-18 15:36
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('mapdata', '0069_mapupdate_geometries_changed'),
]
operations = [
migrations.AlterField(
model_name='area',
name='access_restriction',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='areas', to='mapdata.AccessRestriction', verbose_name='Access Restriction'),
),
migrations.AlterField(
model_name='door',
name='access_restriction',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='doors', to='mapdata.AccessRestriction', verbose_name='Access Restriction'),
),
migrations.AlterField(
model_name='graphedge',
name='access_restriction',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='graphedges', to='mapdata.AccessRestriction', verbose_name='Access Restriction'),
),
migrations.AlterField(
model_name='level',
name='access_restriction',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='levels', to='mapdata.AccessRestriction', verbose_name='Access Restriction'),
),
migrations.AlterField(
model_name='locationgroup',
name='access_restriction',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='locationgroups', to='mapdata.AccessRestriction', verbose_name='Access Restriction'),
),
migrations.AlterField(
model_name='poi',
name='access_restriction',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='pois', to='mapdata.AccessRestriction', verbose_name='Access Restriction'),
),
migrations.AlterField(
model_name='source',
name='access_restriction',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='sources', to='mapdata.AccessRestriction', verbose_name='Access Restriction'),
),
migrations.AlterField(
model_name='space',
name='access_restriction',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='spaces', to='mapdata.AccessRestriction', verbose_name='Access Restriction'),
),
]