From 3e3cae507cebb364ea23ff5b6b70d5c84db3dd11 Mon Sep 17 00:00:00 2001
From: Philip Sargent <philip.sargent@klebos.com>
Date: Wed, 22 Jul 2020 23:36:46 +0100
Subject: [PATCH] More transactions enabled.

---
 databaseReset.py   | 36 +++++++++++++++++++-----------------
 parsers/imports.py |  7 +++----
 2 files changed, 22 insertions(+), 21 deletions(-)

diff --git a/databaseReset.py b/databaseReset.py
index 26cf058..a89f910 100644
--- a/databaseReset.py
+++ b/databaseReset.py
@@ -41,6 +41,7 @@ from django.db import connection, close_old_connections, connections
 from django.http import HttpResponse
 from django.urls import reverse
 from django.contrib.auth.models import User
+from django.db import transaction
 
 from troggle.core.models import get_process_memory
 from troggle.core.models_caves import Cave, Entrance
@@ -100,23 +101,24 @@ def reinit_db():
     
     print(" - done migration on: " + settings.DATABASES['default']['NAME'])
     print("users in db already: ",len(User.objects.all()))
-    try:
-        print(" - Setting up admin user on: " + django.db.connections.databases['default']['NAME'])
-        print(" - user: {} ({:.5}...) <{}> ".format(expouser, expouserpass, expouseremail))
-        user = User.objects.create_user(expouser, expouseremail, expouserpass)
-        user.is_staff = True
-        user.is_superuser = True
-        user.save()
-    except:
-        print(" ! INTEGRITY ERROR user on: " + settings.DATABASES['default']['NAME'])
-        print(django.db.connections.databases['default']['NAME'])
-        print(" ! You probably have not got a clean db when you thought you had.\n")
-        print(" ! Also you are probably NOT running an in-memory db now.\n")
-        print("users  in db: ",len(User.objects.all()))
-        print("tables in db: ",len(connection.introspection.table_names()))
-        memdumpsql(fn='integrityfail.sql')
-        django.db.connections.databases['default']['NAME'] = ':memory:'
-        #raise
+    with transaction.atomic():
+        try:
+            print(" - Setting up admin user on: " + django.db.connections.databases['default']['NAME'])
+            print(" - user: {} ({:.5}...) <{}> ".format(expouser, expouserpass, expouseremail))
+            user = User.objects.create_user(expouser, expouseremail, expouserpass)
+            user.is_staff = True
+            user.is_superuser = True
+            user.save()
+        except:
+            print(" ! INTEGRITY ERROR user on: " + settings.DATABASES['default']['NAME'])
+            print(django.db.connections.databases['default']['NAME'])
+            print(" ! You probably have not got a clean db when you thought you had.\n")
+            print(" ! Also you are probably NOT running an in-memory db now.\n")
+            print("users  in db: ",len(User.objects.all()))
+            print("tables in db: ",len(connection.introspection.table_names()))
+            memdumpsql(fn='integrityfail.sql')
+            django.db.connections.databases['default']['NAME'] = ':memory:'
+            #raise
 
 def memdumpsql(fn):
     djconn = django.db.connection
diff --git a/parsers/imports.py b/parsers/imports.py
index ddfe69f..0d5420b 100644
--- a/parsers/imports.py
+++ b/parsers/imports.py
@@ -59,15 +59,14 @@ def import_survex():
 
 def import_loadpos():
     # when this import is moved to the top with the rest it all crashes horribly
-    with transaction.atomic():
-        import troggle.parsers.survex 
-    print(" - Survex entrances x/y/z Positions")
     import troggle.parsers.survex 
+    print(" - Survex entrances x/y/z Positions")
+    with transaction.atomic():
         troggle.parsers.survex.LoadPositions()
 
 def import_drawingsfiles():
     print("-- Importing Drawings files")
-    import troggle.parsers.survex 
+    with transaction.atomic():
         troggle.parsers.surveys.LoadDrawingFiles()
 
 # Fossil.