diff --git a/_deploy/debian/localsettingsserver-old.py b/_deploy/debian/localsettingsserver-old.py new file mode 100644 index 0000000..7379a3c --- /dev/null +++ b/_deploy/debian/localsettingsserver-old.py @@ -0,0 +1,120 @@ +import sys +import os +import urllib.parse +"""Settings for a troggle installation which may vary among different +installations: for development or deployment, in a docker image or +python virtual environment (venv), on ubuntu, debian or in Windows +System for Linux (WSL), on the main server or in the potato hut, +using SQLite or mariaDB. + +It sets the directory locations for the major parts of the system so +that e.g. expofiles can be on a different filesystem. + +This file is included at the end of the main troggle/settings.py file so that +it overwrites defaults in that file. +""" + +print(" * importing troggle/localsettings.py") + +# DO NOT check this file into the git repo - it contains real passwords. [not this copy] +SECRET_KEY = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz" +EXPOUSERPASS = "nope" +EXPOADMINUSERPASS = "nope" +EMAIL_HOST_PASSWORD = "nope" + + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.mysql', # 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. + 'NAME' : 'troggle', # Or path to database file if using sqlite3. + 'USER' : 'expo', # Not used with sqlite3. + 'PASSWORD' : 'not a real password', # Not used with sqlite3. + 'HOST' : '', # Set to empty string for localhost. Not used with sqlite3. + 'PORT' : '', # Set to empty string for default. Not used with sqlite3. + } +} + + +EXPOUSER = 'expo' +EXPOUSERPASS = "nnn:gggggg" +EXPOUSER_EMAIL = 'wookey@wookware.org' + +REPOS_ROOT_PATH = '/home/expo/' +sys.path.append(REPOS_ROOT_PATH) +sys.path.append(REPOS_ROOT_PATH + 'troggle') +# Define the path to the django app (troggle in this case) +PYTHON_PATH = REPOS_ROOT_PATH + 'troggle/' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [ + PYTHON_PATH + "templates" + ], + 'OPTIONS': { + 'debug': 'DEBUG', + 'context_processors': [ + 'django.contrib.auth.context_processors.auth', + 'core.context.troggle_context', + 'django.template.context_processors.debug', + 'django.template.context_processors.i18n', + 'django.template.context_processors.media', + 'django.template.context_processors.static', + 'django.template.context_processors.tz', + 'django.contrib.messages.context_processors.messages', + ], + 'loaders': [ + 'django.template.loaders.filesystem.Loader', + 'django.template.loaders.app_directories.Loader', + # insert your TEMPLATE_LOADERS here + ] + }, + }, +] + +PUBLIC_SITE = True + +# This should be False for normal running +DEBUG = True + +SURVEX_DATA = REPOS_ROOT_PATH + 'loser/' +DRAWINGS_DATA = REPOS_ROOT_PATH + 'drawings/' + +CAVERN = 'cavern' +THREEDTOPOS = 'survexport' +EXPOWEB = REPOS_ROOT_PATH + 'expoweb/' +SURVEYS = REPOS_ROOT_PATH +SURVEY_SCANS = REPOS_ROOT_PATH + 'expofiles/surveyscans/' +FILES = REPOS_ROOT_PATH + 'expofiles' +CAVEDESCRIPTIONS = os.path.join(EXPOWEB, "cave_data") +ENTRANCEDESCRIPTIONS = os.path.join(EXPOWEB, "entrance_data") + +CACHEDIR = REPOS_ROOT_PATH + 'expowebcache/' +THREEDCACHEDIR = CACHEDIR + '3d/' +THUMBNAILCACHE = CACHEDIR + 'thumbs' + +PYTHON_PATH = REPOS_ROOT_PATH + 'troggle/' + +URL_ROOT = 'http://expo.survex.com/' +DIR_ROOT = ''#this should end in / if a value is given +EXPOWEB_URL = '/' +SURVEYS_URL = '/survey_scans/' +EXPOFILES = urllib.parse.urljoin(REPOS_ROOT_PATH, 'expofiles/') +PHOTOS_URL = urllib.parse.urljoin(URL_ROOT, '/photos/') + +# MEDIA_URL is used by urls.py in a regex. See urls.py & core/views/surveys.py +MEDIA_URL = '/site_media/' + +MEDIA_ROOT = REPOS_ROOT_PATH + '/troggle/media/' + +STATIC_URL = urllib.parse.urljoin(URL_ROOT , '/static/') # used by Django admin pages. Do not delete. +JSLIB_URL = urllib.parse.urljoin(URL_ROOT , '/javascript/') # always fails, try to revive it ? + +#TINY_MCE_MEDIA_ROOT = STATIC_ROOT + '/tiny_mce/' # not needed while TinyMCE not installed +#TINY_MCE_MEDIA_URL = STATIC_URL + '/tiny_mce/' # not needed while TinyMCE not installed + +LOGFILE = '/var/log/troggle/troggle.log' +IMPORTLOGFILE = '/var/log/troggle/import.log' + +# add in 290, 291, 358 when they don't make it crash horribly +NOTABLECAVESHREFS = [ "264", "258", "204", "76", "107"] diff --git a/_deploy/debian/localsettingsserver.py b/_deploy/debian/localsettingsserver.py index 7379a3c..bf2fefb 100644 --- a/_deploy/debian/localsettingsserver.py +++ b/_deploy/debian/localsettingsserver.py @@ -1,6 +1,7 @@ import sys import os import urllib.parse +from pathlib import Path """Settings for a troggle installation which may vary among different installations: for development or deployment, in a docker image or python virtual environment (venv), on ubuntu, debian or in Windows @@ -8,27 +9,29 @@ System for Linux (WSL), on the main server or in the potato hut, using SQLite or mariaDB. It sets the directory locations for the major parts of the system so -that e.g. expofiles can be on a different filesystem. +that e.g. expofiles can be on a different filesystem, or /javascript/ can be in +a system-wide location rather than just a local directory. This file is included at the end of the main troggle/settings.py file so that it overwrites defaults in that file. + +Read https://realpython.com/python-pathlib/ +Read https://adamj.eu/tech/2020/03/16/use-pathlib-in-your-django-project/ """ print(" * importing troggle/localsettings.py") -# DO NOT check this file into the git repo - it contains real passwords. [not this copy] -SECRET_KEY = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz" -EXPOUSERPASS = "nope" -EXPOADMINUSERPASS = "nope" -EMAIL_HOST_PASSWORD = "nope" +# DO NOT check this file into the git repo - it contains real passwords. +EXPOFILESREMOTE = False # if True, then re-routes urls in expofiles to remote sever +#SECURE_SSL_REDIRECT = True # breaks 7 tests in test suite 301 not 200 (or 302) and runserver fails completely DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 'NAME' : 'troggle', # Or path to database file if using sqlite3. 'USER' : 'expo', # Not used with sqlite3. - 'PASSWORD' : 'not a real password', # Not used with sqlite3. + 'PASSWORD' : 'uFqP56B4XleeyIW', # Not used with sqlite3. 'HOST' : '', # Set to empty string for localhost. Not used with sqlite3. 'PORT' : '', # Set to empty string for default. Not used with sqlite3. } @@ -36,15 +39,21 @@ DATABASES = { EXPOUSER = 'expo' -EXPOUSERPASS = "nnn:gggggg" +EXPOADMINUSER = 'expoadmin' EXPOUSER_EMAIL = 'wookey@wookware.org' +EXPOADMINUSER_EMAIL = 'wookey@wookware.org' + +SECRET_KEY = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz" +EXPOUSERPASS = "nope" +EXPOADMINUSERPASS = "nope" +EMAIL_HOST_PASSWORD = "nope" REPOS_ROOT_PATH = '/home/expo/' sys.path.append(REPOS_ROOT_PATH) sys.path.append(REPOS_ROOT_PATH + 'troggle') # Define the path to the django app (troggle in this case) PYTHON_PATH = REPOS_ROOT_PATH + 'troggle/' - +PHOTOS_YEAR = "2022" TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', @@ -53,20 +62,22 @@ TEMPLATES = [ ], 'OPTIONS': { 'debug': 'DEBUG', - 'context_processors': [ - 'django.contrib.auth.context_processors.auth', - 'core.context.troggle_context', + 'context_processors': [ + # django.template.context_processors.csrf, # is always enabled and cannot be removed, sets csrf_token + 'django.contrib.auth.context_processors.auth', # knowledge of logged-on user & permissions + 'core.context.troggle_context', # in core/troggle.py 'django.template.context_processors.debug', + #'django.template.context_processors.request', # copy of current request, added in trying to make csrf work 'django.template.context_processors.i18n', - 'django.template.context_processors.media', - 'django.template.context_processors.static', + 'django.template.context_processors.media', # includes a variable MEDIA_URL + 'django.template.context_processors.static', # includes a variable STATIC_URL 'django.template.context_processors.tz', 'django.contrib.messages.context_processors.messages', ], 'loaders': [ 'django.template.loaders.filesystem.Loader', - 'django.template.loaders.app_directories.Loader', - # insert your TEMPLATE_LOADERS here + 'django.template.loaders.app_directories.Loader', #For each app, inc admin, in INSTALLED_APPS, loader looks for /templates + # insert your own TEMPLATE_LOADERS here ] }, }, @@ -76,36 +87,50 @@ PUBLIC_SITE = True # This should be False for normal running DEBUG = True +CACHEDPAGES = True # experimental page cache for a handful of page types SURVEX_DATA = REPOS_ROOT_PATH + 'loser/' DRAWINGS_DATA = REPOS_ROOT_PATH + 'drawings/' -CAVERN = 'cavern' -THREEDTOPOS = 'survexport' +# executables: +CAVERN = 'cavern' # for parsing .svx files and producing .3d files +SURVEXPORT = 'survexport' # for parsing .3d files and producing .pos files + EXPOWEB = REPOS_ROOT_PATH + 'expoweb/' -SURVEYS = REPOS_ROOT_PATH -SURVEY_SCANS = REPOS_ROOT_PATH + 'expofiles/surveyscans/' +#SURVEYS = REPOS_ROOT_PATH +SCANS_ROOT = REPOS_ROOT_PATH + 'expofiles/surveyscans/' FILES = REPOS_ROOT_PATH + 'expofiles' +PHOTOS_ROOT = REPOS_ROOT_PATH + 'expofiles/photos/' + +TROGGLE_PATH = Path(__file__).parent +TEMPLATE_PATH = TROGGLE_PATH / 'templates' +MEDIA_ROOT = TROGGLE_PATH / 'media' +JSLIB_ROOT = TROGGLE_PATH / 'media' / 'jslib' # used for CaveViewer JS utility + + CAVEDESCRIPTIONS = os.path.join(EXPOWEB, "cave_data") ENTRANCEDESCRIPTIONS = os.path.join(EXPOWEB, "entrance_data") -CACHEDIR = REPOS_ROOT_PATH + 'expowebcache/' -THREEDCACHEDIR = CACHEDIR + '3d/' -THUMBNAILCACHE = CACHEDIR + 'thumbs' +# CACHEDIR = REPOS_ROOT_PATH + 'expowebcache/' +# THREEDCACHEDIR = CACHEDIR + '3d/' +# THUMBNAILCACHE = CACHEDIR + 'thumbs' PYTHON_PATH = REPOS_ROOT_PATH + 'troggle/' +PV = "python" + str(sys.version_info.major) + "." + str(sys.version_info.minor) +LIBDIR = Path(REPOS_ROOT_PATH) / 'lib' / PV -URL_ROOT = 'http://expo.survex.com/' +#Note that all these *_URL constants are not actually used in urls.py, they should be.. +#URL_ROOT = 'http://expo.survex.com/' +URL_ROOT = '/' DIR_ROOT = ''#this should end in / if a value is given EXPOWEB_URL = '/' -SURVEYS_URL = '/survey_scans/' +SCANS_URL = '/survey_scans/' EXPOFILES = urllib.parse.urljoin(REPOS_ROOT_PATH, 'expofiles/') PHOTOS_URL = urllib.parse.urljoin(URL_ROOT, '/photos/') -# MEDIA_URL is used by urls.py in a regex. See urls.py & core/views/surveys.py +# MEDIA_URL is used by urls.py in a regex. See urls.py & core/views_surveys.py MEDIA_URL = '/site_media/' -MEDIA_ROOT = REPOS_ROOT_PATH + '/troggle/media/' STATIC_URL = urllib.parse.urljoin(URL_ROOT , '/static/') # used by Django admin pages. Do not delete. JSLIB_URL = urllib.parse.urljoin(URL_ROOT , '/javascript/') # always fails, try to revive it ? @@ -116,5 +141,23 @@ JSLIB_URL = urllib.parse.urljoin(URL_ROOT , '/javascript/') # always fails, try LOGFILE = '/var/log/troggle/troggle.log' IMPORTLOGFILE = '/var/log/troggle/import.log' -# add in 290, 291, 358 when they don't make it crash horribly -NOTABLECAVESHREFS = [ "264", "258", "204", "76", "107"] +# add in 358 when they don't make it crash horribly +NOTABLECAVESHREFS = [ "290", "291", "359", "264", "258", "204", "76", "107"] + +# Sanitise these to be strings as all other code is expecting strings +# and we have not made the change to pathlib Path type in the other localsettings-* variants yet. +CAVEDESCRIPTIONS = os.fspath(CAVEDESCRIPTIONS) +ENTRANCEDESCRIPTIONS = os.fspath(ENTRANCEDESCRIPTIONS) +LOGFILE = os.fspath(LOGFILE) +#SURVEYS = os.fspath(SURVEYS) +EXPOWEB = os.fspath(EXPOWEB) +DRAWINGS_DATA = os.fspath(DRAWINGS_DATA) +SURVEX_DATA = os.fspath(SURVEX_DATA) +REPOS_ROOT_PATH = os.fspath(REPOS_ROOT_PATH) +TEMPLATE_PATH = os.fspath(TROGGLE_PATH) +MEDIA_ROOT = os.fspath(MEDIA_ROOT) +JSLIB_ROOT = os.fspath(JSLIB_ROOT) +SCANS_ROOT = os.fspath(SCANS_ROOT) +LIBDIR = os.fspath(LIBDIR) + +print(" + finished importing troggle/localsettings.py") \ No newline at end of file