From a2295e80afd4c809001388a2747f85fa250d23bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Thu, 26 Dec 2024 02:20:25 +0100 Subject: [PATCH] use changeset in importhub and importnoc --- .../control/templates/control/map_updates.html | 2 +- src/c3nav/editor/forms.py | 2 ++ .../mapdata/management/commands/importhub.py | 14 ++++++++++---- .../mapdata/management/commands/importnoc.py | 16 +++++++++++----- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/c3nav/control/templates/control/map_updates.html b/src/c3nav/control/templates/control/map_updates.html index ab3e32e4..2fc2c531 100644 --- a/src/c3nav/control/templates/control/map_updates.html +++ b/src/c3nav/control/templates/control/map_updates.html @@ -78,7 +78,7 @@ {% elif update.type == 'changeset' %} {% url 'control.users.detail' user=update.user.pk as user_url %} {% url 'control.users.detail' user=update.changeset.author.pk as author_url %} - {% blocktrans with changeset_id=update.changeset.pk changeset_url=update.changeset.get_absolute_url user_name=update.user.username author_name=update.changeset.author.username %}Changeset #{{ changeset_id }} by {{ author_name }} applied by {{ user_name }}{% endblocktrans %} + {% blocktrans with changeset_id=update.changeset.pk changeset_url=update.changeset.get_absolute_url changeset_title=update.changeset.title user_name=update.user.username author_name=update.changeset.author.username %}Changeset #{{ changeset_id }} ({{ changeset_title }}) by {{ author_name }} applied by {{ user_name }}{% endblocktrans %} {% else %} {{ update.type }} {% endif %} diff --git a/src/c3nav/editor/forms.py b/src/c3nav/editor/forms.py index 575d4602..1aff5a2f 100644 --- a/src/c3nav/editor/forms.py +++ b/src/c3nav/editor/forms.py @@ -416,6 +416,8 @@ def create_editor_form(editor_model): editor_form_cache = {} + + def get_editor_form(model): form = editor_form_cache.get(model, None) if form is None: diff --git a/src/c3nav/mapdata/management/commands/importhub.py b/src/c3nav/mapdata/management/commands/importhub.py index b3303abd..e5e67bde 100644 --- a/src/c3nav/mapdata/management/commands/importhub.py +++ b/src/c3nav/mapdata/management/commands/importhub.py @@ -9,7 +9,9 @@ from shapely import Point from shapely.geometry import shape from c3nav.api.utils import NonEmptyStr -from c3nav.mapdata.models import Area, LocationGroup, LocationSlug, MapUpdate, Space +from c3nav.editor.models import ChangeSet +from c3nav.editor.views.base import within_changeset +from c3nav.mapdata.models import Area, LocationGroup, LocationSlug, Space from c3nav.mapdata.models.geometry.space import POI from c3nav.mapdata.models.report import Report from c3nav.mapdata.utils.cache.changes import changed_geometries @@ -41,10 +43,14 @@ class Command(BaseCommand): headers={"Authorization": "Token "+settings.HUB_API_SECRET}) r.raise_for_status() - with MapUpdate.lock(): - changed_geometries.reset() + changed_geometries.reset() + changeset = ChangeSet() + changeset.author = self.request.user + changeset.title = 'importhub' + with within_changeset(changeset=changeset, user=None) as locked_changeset: self.do_import(r.json()) - MapUpdate.objects.create(type='importhub') + with changeset.lock_to_edit() as locked_changeset: + locked_changeset.apply(user=None) def do_report(self, prefix: str, obj_id: str, obj, report: Report): import_prefix = f"{prefix}:{obj_id}:" diff --git a/src/c3nav/mapdata/management/commands/importnoc.py b/src/c3nav/mapdata/management/commands/importnoc.py index ae09f93d..d709c504 100644 --- a/src/c3nav/mapdata/management/commands/importnoc.py +++ b/src/c3nav/mapdata/management/commands/importnoc.py @@ -5,13 +5,15 @@ from django.conf import settings from django.core.management.base import BaseCommand from pydantic import BaseModel from shapely import distance +from shapely.ops import nearest_points, unary_union -from c3nav.mapdata.models import MapUpdate, Space, Level +from c3nav.editor.models import ChangeSet +from c3nav.editor.views.base import within_changeset +from c3nav.mapdata.models import Space, Level from c3nav.mapdata.models.geometry.space import RangingBeacon from c3nav.mapdata.models.report import Report from c3nav.mapdata.utils.cache.changes import changed_geometries from c3nav.mapdata.utils.geometry import unwrap_geom -from shapely.ops import nearest_points, unary_union class NocImportItem(BaseModel): @@ -34,10 +36,14 @@ class Command(BaseCommand): for name, item in r.json()["markers"].items() if not name.startswith("__polyline")} - with MapUpdate.lock(): - changed_geometries.reset() + changed_geometries.reset() + changeset = ChangeSet() + changeset.author = self.request.user + changeset.title = 'importnoc' + with within_changeset(changeset=changeset, user=None) as locked_changeset: self.do_import(items) - MapUpdate.objects.create(type='importnoc') + with changeset.lock_to_edit() as locked_changeset: + locked_changeset.apply(user=None) def do_report(self, prefix: str, obj_id: str, obj, report: Report): import_prefix = f"{prefix}:{obj_id}:"