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, Cave_descriptionM 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() Cave_descriptionM.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_surveys(): SurveyM.objects.all().delete() import troggle.parsers.surveysM troggle.parsers.surveysM.load() def load_caves(): import troggle.parsers.cavesM troggle.parsers.cavesM.load() def load_people(): import troggle.parsers.peopleM troggle.parsers.peopleM.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 ' 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()