summaryrefslogtreecommitdiffstats
path: root/databaseResetM.py
diff options
context:
space:
mode:
authorRad <radost.waszkiewicz@gmail.com>2019-02-27 22:29:45 +0000
committerRad <radost.waszkiewicz@gmail.com>2019-02-27 22:29:45 +0000
commitce268ec306946e4f4aadd8ee358a28e79f22b9b3 (patch)
tree78feffcf35678d76afb7b2e9929f3c4eb2ac993a /databaseResetM.py
parent7e1aa80551004c88bccc599cf807f67904976589 (diff)
downloadtroggle-ce268ec306946e4f4aadd8ee358a28e79f22b9b3.tar.gz
troggle-ce268ec306946e4f4aadd8ee358a28e79f22b9b3.tar.bz2
troggle-ce268ec306946e4f4aadd8ee358a28e79f22b9b3.zip
working on rebuilding everything
Diffstat (limited to 'databaseResetM.py')
-rw-r--r--databaseResetM.py117
1 files changed, 117 insertions, 0 deletions
diff --git a/databaseResetM.py b/databaseResetM.py
new file mode 100644
index 0000000..07e4702
--- /dev/null
+++ b/databaseResetM.py
@@ -0,0 +1,117 @@
+import os
+import time
+import settings
+os.environ['PYTHONPATH'] = settings.PYTHON_PATH
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')
+from django.core import management
+from django.db import connection
+from django.contrib.auth.models import User
+from django.http import HttpResponse
+from django.core.urlresolvers import reverse
+from troggle.core.models import Cave, Entrance
+from troggle.core.models import PersonM, SurveyM, CaveM, ExpeditionM, Logbook_entryM
+import troggle.flatpages.models
+
+databasename=settings.DATABASES['default']['NAME']
+expouser=settings.EXPOUSER
+expouserpass=settings.EXPOUSERPASS
+expouseremail=settings.EXPOUSER_EMAIL
+
+def destroy():
+ if settings.DATABASES['default']['ENGINE'] == 'django.db.backends.sqlite3':
+ try:
+ os.remove(databasename)
+ except OSError:
+ pass
+ else:
+ cursor = connection.cursor()
+ cursor.execute("DROP DATABASE %s" % databasename)
+ cursor.execute("CREATE DATABASE %s" % databasename)
+ cursor.execute("ALTER DATABASE %s CHARACTER SET=utf8" % databasename)
+ cursor.execute("USE %s" % databasename)
+ management.call_command('syncdb', interactive=False)
+ user = User.objects.create_user(expouser, expouseremail, expouserpass)
+ user.is_staff = True
+ user.is_superuser = True
+ user.save()
+ print('Nuked the database and rebuilt it. You savage monster')
+
+def gracefull_flush():
+ CaveM.objects.all().delete()
+ PersonM.objects.all().delete()
+ SurveyM.objects.all().delete()
+ ExpeditionM.objects.all().delete()
+ Logbook_entryM.objects.all().delete()
+ print('Deleted contents of the database, ready to load new stuff :)')
+
+def load_redirects():
+ for oldURL, newURL in [("indxal.htm", reverse("caveindex"))]:
+ f = troggle.flatpages.models.Redirect(originalURL = oldURL, newURL = newURL)
+ f.save()
+
+def load_caves():
+ import troggle.parsers.cavesM
+ troggle.parsers.cavesM.load()
+
+def load_all():
+ load_caves()
+ load_surveys()
+ load_people()
+ load_redirects()
+ load_links()
+ print('Loaded everything. Your database is ready to go :)')
+
+
+def help():
+ print("""Usage is 'python databaseResetM.py <command>'
+ where command is:
+ UNLOADERS:
+ gracefull_flush - flushes new (M-style) databases contents but keeps tables existing
+ destroy - destroys entire database and builds empty tables
+
+ LOADERS:
+ load_all - loads all tables and links
+ load_caves - loads all caves
+ load_surveys - loads all surveys (corresponds to .svx files)
+ load_people - loads all people
+ load_redirects - load page redirects
+ load_links - loads links between classes (run last! can't link non-existent things)
+
+ OTHER:
+ help - displays this page
+ ----------------
+ This is a new version of database management written by RW 2019
+ ----------------
+ """)
+
+if __name__ == "__main__":
+ import troggle.core.models
+ import sys
+ import django
+ django.setup()
+ if "destroy" in sys.argv:
+ destroy()
+ elif "gracefull_flush" in sys.argv:
+ gracefull_flush()
+
+ elif "load_all" in sys.argv:
+ load_all()
+ elif "load_caves" in sys.argv:
+ load_caves()
+ elif "load_surveys" in sys.argv:
+ load_surveys()
+ elif "load_people" in sys.argv:
+ load_people()
+ elif "load_redirects" in sys.argv:
+ load_redirects()
+ elif "load_links" in sys.argv:
+ load_links()
+ elif "help" in sys.argv:
+ help()
+ else:
+ print("%s not recognised" % sys.argv)
+ help()
+
+
+
+