some small stuff
This commit is contained in:
parent
aaf248a927
commit
55b8e6e78c
4 changed files with 9 additions and 9 deletions
|
@ -20,7 +20,7 @@ class Migration(migrations.Migration):
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='changeset',
|
model_name='changeset',
|
||||||
name='changes',
|
name='changes',
|
||||||
field=django_pydantic_field.fields.PydanticSchemaField(config=None, default=c3nav.editor.operations.CollectedChanges, encoder=django.core.serializers.json.DjangoJSONEncoder, schema=c3nav.editor.operations.CollectedChanges),
|
field=django_pydantic_field.fields.PydanticSchemaField(config=None, default=c3nav.editor.operations.CollectedOperations, encoder=django.core.serializers.json.DjangoJSONEncoder, schema=c3nav.editor.operations.CollectedOperations),
|
||||||
),
|
),
|
||||||
migrations.DeleteModel(
|
migrations.DeleteModel(
|
||||||
name='ChangedObject',
|
name='ChangedObject',
|
||||||
|
|
|
@ -12,7 +12,7 @@ from django.utils.translation import gettext_lazy as _
|
||||||
from django.utils.translation import ngettext_lazy
|
from django.utils.translation import ngettext_lazy
|
||||||
from django_pydantic_field import SchemaField
|
from django_pydantic_field import SchemaField
|
||||||
|
|
||||||
from c3nav.editor.operations import CollectedChanges
|
from c3nav.editor.operations import CollectedOperations
|
||||||
from c3nav.editor.tasks import send_changeset_proposed_notification
|
from c3nav.editor.tasks import send_changeset_proposed_notification
|
||||||
from c3nav.mapdata.models import LocationSlug, MapUpdate
|
from c3nav.mapdata.models import LocationSlug, MapUpdate
|
||||||
from c3nav.mapdata.models.locations import LocationRedirect
|
from c3nav.mapdata.models.locations import LocationRedirect
|
||||||
|
@ -43,7 +43,7 @@ class ChangeSet(models.Model):
|
||||||
related_name='assigned_changesets', verbose_name=_('assigned to'))
|
related_name='assigned_changesets', verbose_name=_('assigned to'))
|
||||||
map_update = models.OneToOneField(MapUpdate, null=True, related_name='changeset',
|
map_update = models.OneToOneField(MapUpdate, null=True, related_name='changeset',
|
||||||
verbose_name=_('map update'), on_delete=models.PROTECT)
|
verbose_name=_('map update'), on_delete=models.PROTECT)
|
||||||
changes: CollectedChanges = SchemaField(schema=CollectedChanges, default=CollectedChanges)
|
changes: CollectedOperations = SchemaField(schema=CollectedOperations, default=CollectedOperations)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _('Change Set')
|
verbose_name = _('Change Set')
|
||||||
|
|
|
@ -187,7 +187,7 @@ class ChangedObject(BaseSchema):
|
||||||
m2m_changes: dict[str, ChangedManyToMany] = {}
|
m2m_changes: dict[str, ChangedManyToMany] = {}
|
||||||
|
|
||||||
|
|
||||||
class CollectedChanges(BaseSchema):
|
class CollectedOperations(BaseSchema):
|
||||||
uuid: UUID = Field(default_factory=uuid4)
|
uuid: UUID = Field(default_factory=uuid4)
|
||||||
prev: PreviousObjects = PreviousObjects()
|
prev: PreviousObjects = PreviousObjects()
|
||||||
operations: list[DatabaseOperation] = []
|
operations: list[DatabaseOperation] = []
|
||||||
|
@ -250,7 +250,7 @@ class CollectedChanges(BaseSchema):
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class CollectedChangesPrefetch:
|
class CollectedChangesPrefetch:
|
||||||
changes: CollectedChanges
|
changes: CollectedOperations
|
||||||
instances: dict[ObjectReference, Model]
|
instances: dict[ObjectReference, Model]
|
||||||
|
|
||||||
def apply(self):
|
def apply(self):
|
||||||
|
|
|
@ -9,7 +9,7 @@ from django.db.models import Model
|
||||||
from django.db.models.fields.related import ManyToManyField
|
from django.db.models.fields.related import ManyToManyField
|
||||||
|
|
||||||
from c3nav.editor.operations import DatabaseOperation, ObjectReference, FieldValuesDict, CreateObjectOperation, \
|
from c3nav.editor.operations import DatabaseOperation, ObjectReference, FieldValuesDict, CreateObjectOperation, \
|
||||||
UpdateObjectOperation, DeleteObjectOperation, ClearManyToManyOperation, UpdateManyToManyOperation, CollectedChanges
|
UpdateObjectOperation, DeleteObjectOperation, ClearManyToManyOperation, UpdateManyToManyOperation, CollectedOperations
|
||||||
from c3nav.mapdata.fields import I18nField
|
from c3nav.mapdata.fields import I18nField
|
||||||
from c3nav.mapdata.models import LocationSlug
|
from c3nav.mapdata.models import LocationSlug
|
||||||
|
|
||||||
|
@ -28,17 +28,17 @@ class InterceptAbortTransaction(Exception):
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class DatabaseOverlayManager:
|
class DatabaseOverlayManager:
|
||||||
changes: CollectedChanges
|
changes: CollectedOperations
|
||||||
new_operations: list[DatabaseOperation] = field(default_factory=list)
|
new_operations: list[DatabaseOperation] = field(default_factory=list)
|
||||||
pre_change_values: dict[ObjectReference, FieldValuesDict] = field(default_factory=dict)
|
pre_change_values: dict[ObjectReference, FieldValuesDict] = field(default_factory=dict)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def enable(cls, changes: CollectedChanges | None, commit: bool):
|
def enable(cls, changes: CollectedOperations | None, commit: bool):
|
||||||
if getattr(overlay_state, 'manager', None) is not None:
|
if getattr(overlay_state, 'manager', None) is not None:
|
||||||
raise TypeError
|
raise TypeError
|
||||||
if changes is None:
|
if changes is None:
|
||||||
changes = CollectedChanges()
|
changes = CollectedOperations()
|
||||||
try:
|
try:
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
manager = DatabaseOverlayManager(changes)
|
manager = DatabaseOverlayManager(changes)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue