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}:"