diff options
Diffstat (limited to 'databaseResetM.py')
-rw-r--r-- | databaseResetM.py | 117 |
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() + + + + |