data: make import_site an atomic query (#33948)

This commit is contained in:
Nicolas Roche 2019-06-13 14:16:12 +02:00
parent 546336acc7
commit 8df192e455
1 changed files with 8 additions and 14 deletions

View File

@ -70,24 +70,18 @@ def import_site(data, if_empty=False, clean=False):
if missing_groups:
raise MissingGroups(names=sorted([x for x in missing_groups]))
if clean:
MapLayer.objects.all().delete()
Asset.objects.all().delete()
Page.objects.all().delete()
PwaSettings.objects.all().delete()
PwaNavigationEntry.objects.all().delete()
with transaction.atomic():
if clean:
MapLayer.objects.all().delete()
Asset.objects.all().delete()
Page.objects.all().delete()
PwaSettings.objects.all().delete()
PwaNavigationEntry.objects.all().delete()
MapLayer.load_serialized_objects(data.get('map-layers') or [])
with transaction.atomic():
Asset.load_serialized_objects(data.get('assets') or [])
with transaction.atomic():
Page.load_serialized_pages(data.get('pages') or [])
if data.get('pwa'):
with transaction.atomic():
if data.get('pwa'):
PwaSettings.load_serialized_settings(data['pwa'].get('settings'))
with transaction.atomic():
PwaNavigationEntry.load_serialized_objects(data['pwa'].get('navigation'))