diff --git a/_deploy/debian/serversetup b/_deploy/debian/serversetup index 644baea..1c54546 100644 --- a/_deploy/debian/serversetup +++ b/_deploy/debian/serversetup @@ -62,9 +62,12 @@ CREATE DATABASE troggle; GRANT ALL PRIVILEGES ON troggle.* TO 'expo'@'localhost' IDENTIFIED BY 'somepassword'; install django: -sudo apt install python-django python-django-registration python-django-imagekit python-django-tinymce fonts-freefont-ttf libapache2-mod-wsgi +NO! +This was:sudo apt install python-django python-django-registration python-django-imagekit python-django-tinymce fonts-freefont-ttf libapache2-mod-wsgi +Should be ? +sudo apt install python-django python-django-tinymce fonts-freefont-ttf libapache2-mod-wsgi -python-django-imagekit comes from https://salsa.debian.org/python-team/modules/python-django-imagekit +CHeck if this is correct: python-django-tinymce comes from https://salsa.debian.org/python-team/modules/python-django-tinymce (both modified for stretch/python2). packages under /home/wookey/packages/ diff --git a/_deploy/xubuntu/localsettingsXubuntu.py b/_deploy/xubuntu/localsettingsXubuntu.py new file mode 100644 index 0000000..3915ff2 --- /dev/null +++ b/_deploy/xubuntu/localsettingsXubuntu.py @@ -0,0 +1,196 @@ +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 +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, 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") + +#----------------------------------------------------------------- +# THINK before you push this to a repo +# - have you checked that credentials.py is in .gitignore ? +# - we don't want to have to change the expo system password ! +#----------------------------------------------------------------- +# default values, real secrets imported from credentials.py + +SECRET_KEY = "real-SECRET_KEY--imported-from-localsettings.py" +EXPOUSERPASS = "nnn:gggggg - real-expo-password---imported-from-localsettings.py" +EXPOADMINUSERPASS = "gggggg:nnn - real-expo-password---imported-from-localsettings.py" +EMAIL_HOST_PASSWORD = "real-email-password---imported-from-localsettings.py" + +EXPOFILESREMOTE = False # if True, then re-routes urls in expofiles to remote sever. Tests are then less accurate. +#SECURE_SSL_REDIRECT = True # breaks 7 tests in test suite 301 not 200 (or 302) and runserver fails completely + +SERVERPORT = '8000' # not needed + +PV = "python" + str(sys.version_info.major) + "." + str(sys.version_info.minor) + +# Troggle does a lot of file-handling. This is very error-prone when using primitive methods, +# so we use pathlib which has been standard since python 3.4 +# If pathlib is new to you, you will need to read https://realpython.com/python-pathlib/ + +# --------------------- MEDIA redirections BEGIN --------------------- +REPOS_ROOT_PATH = Path(__file__).parent.parent +LIBDIR = REPOS_ROOT_PATH / 'lib' / PV +#LIBDIR = REPOS_ROOT_PATH / 'lib' / 'python3.9' # should be finding this automatically: python --version etc. + +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 + +#FILES = Path('/mnt/d/expofiles/') +EXPOFILES = Path('/media/philip/sd-huge1/cucc-expo/expofiles/') +SCANS_ROOT = EXPOFILES / 'surveyscans' +PHOTOS_ROOT = EXPOFILES / 'photos' +PHOTOS_YEAR = "2022" + +# URL that handles the media served from MEDIA_ROOT. Make sure to use a +# trailing slash if there is a path component (optional in other cases). +MEDIA_URL = '/site-media/' + +DIR_ROOT = ''#this should end in / if a value is given +URL_ROOT = '/' +# URL_ROOT = 'http://localhost:'+ SERVERPORT +'/' + +#Note that these constants are not actually used in urls.py, they should be.. +MEDIA_URL = urllib.parse.urljoin(URL_ROOT , '/site_media/') +SCANS_URL = urllib.parse.urljoin(URL_ROOT , '/survey_scans/') +PHOTOS_URL = urllib.parse.urljoin(URL_ROOT , '/photos/') +SVX_URL = urllib.parse.urljoin(URL_ROOT , '/survex/') + + +STATIC_URL = urllib.parse.urljoin(URL_ROOT , '/static/') # used by Django admin pages. Do not delete. +JSLIB_URL = urllib.parse.urljoin(URL_ROOT , '/javascript/') # used for CaveViewer JS utility + +#STATIC_ROOT removed after merging content into MEDIA_ROOT. See urls.py & core/views/surveys.py +# --------------------- MEDIA redirections END --------------------- + +PUBLIC_SITE = True +DEBUG = True # Always keep this True, even when on public server. Otherwise NO USEFUL ERROR MESSAGES ! +CACHEDPAGES = True # experimental page cache for a handful of page types + +# executables: +CAVERN = 'cavern' # for parsing .svx files and producing .3d files +SURVEXPORT = 'survexport' # for parsing .3d files and producing .pos files + +DBSQLITE = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', # 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. + 'NAME' : 'troggle.sqlite', +# 'NAME' : ':memory:', + 'USER' : 'expo', # Not used with sqlite3. + 'PASSWORD' : 'sekrit', # 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. + } +} +DBMARIADB = { + 'default': { + 'ENGINE': 'django.db.backends.mysql', # 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. + 'NAME' : 'troggle', # Or path to database file if using sqlite3. + 'USER' : 'expo', + 'PASSWORD' : 'my-secret-password-schwatzmooskogel', + 'HOST' : '', # Set to empty string for localhost. Not used with sqlite3. + 'PORT' : '', # Set to empty string for default. Not used with sqlite3. + } +} + +# default database for me is squlite +DBSWITCH = "sqlite" + +if DBSWITCH == "sqlite": + DATABASES = DBSQLITE +if DBSWITCH == "mariadb": + DATABASES = DBMARIADB + +NOTABLECAVESHREFS = [ "290", "291", "359", "264", "258", "204", "76", "107"] + +PYTHON_PATH = REPOS_ROOT_PATH / 'troggle' +sys.path.append(os.fspath(REPOS_ROOT_PATH)) +sys.path.append(os.fspath(PYTHON_PATH)) + +LOGFILE = PYTHON_PATH / 'troggle.log' +PYTHON_PATH = os.fspath(PYTHON_PATH) + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [ + TEMPLATE_PATH + ], + 'OPTIONS': { + 'debug': 'DEBUG', + '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 - only used in expedition.html + 'django.template.context_processors.debug', + 'django.template.context_processors.i18n', + 'django.template.context_processors.media', # includes a variable MEDIA_URL + 'django.template.context_processors.static', # includes a variable STATIC_URL used by admin pages + 'django.template.context_processors.tz', + 'django.template.context_processors.request', # must be enabled in DjangoTemplates (TEMPLATES) in order to use the admin navigation sidebar. + 'django.contrib.messages.context_processors.messages', + ], + 'loaders': [ + 'django.template.loaders.filesystem.Loader', # default lcation is troggle/templates/ + 'django.template.loaders.app_directories.Loader', # needed for admin 'app' + ] + }, + }, +] + +EXPOUSERPASS = "nnn:gggggg - real-expo-password---imported-from-localsettings.py" +EMAIL_HOST_PASSWORD = "real-email-password---imported-from-localsettings.py" + +EXPOUSER = 'expo' +EXPOUSER_EMAIL = 'philip.sargent@gmail.com' +EXPOADMINUSER = 'expoadmin' +EXPOADMINUSER_EMAIL = 'philip.sargent@gmail.com' + +EMAIL_HOST = "smtp-auth.mythic-beasts.com" +EMAIL_HOST_USER = "django-test@klebos.net" # Philip Sargent really +EMAIL_PORT=587 +EMAIL_USE_TLS = True +DEFAULT_FROM_EMAIL = 'django-test@klebos.net' + +SURVEX_DATA = REPOS_ROOT_PATH / "loser" +DRAWINGS_DATA = REPOS_ROOT_PATH / "drawings" + +EXPOWEB = REPOS_ROOT_PATH / "expoweb" +#SURVEYS = REPOS_ROOT_PATH +CAVEDESCRIPTIONS = EXPOWEB / "cave_data" +ENTRANCEDESCRIPTIONS = EXPOWEB / "entrance_data" +EXPOWEB_URL = '' +# SCANS_URL = '/survey_scans/' # defunct, removed. + +# 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) diff --git a/_deploy/xubuntu/localsettingsXubuntu.py.bak b/_deploy/xubuntu/localsettingsXubuntu.py.bak new file mode 100644 index 0000000..3915ff2 --- /dev/null +++ b/_deploy/xubuntu/localsettingsXubuntu.py.bak @@ -0,0 +1,196 @@ +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 +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, 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") + +#----------------------------------------------------------------- +# THINK before you push this to a repo +# - have you checked that credentials.py is in .gitignore ? +# - we don't want to have to change the expo system password ! +#----------------------------------------------------------------- +# default values, real secrets imported from credentials.py + +SECRET_KEY = "real-SECRET_KEY--imported-from-localsettings.py" +EXPOUSERPASS = "nnn:gggggg - real-expo-password---imported-from-localsettings.py" +EXPOADMINUSERPASS = "gggggg:nnn - real-expo-password---imported-from-localsettings.py" +EMAIL_HOST_PASSWORD = "real-email-password---imported-from-localsettings.py" + +EXPOFILESREMOTE = False # if True, then re-routes urls in expofiles to remote sever. Tests are then less accurate. +#SECURE_SSL_REDIRECT = True # breaks 7 tests in test suite 301 not 200 (or 302) and runserver fails completely + +SERVERPORT = '8000' # not needed + +PV = "python" + str(sys.version_info.major) + "." + str(sys.version_info.minor) + +# Troggle does a lot of file-handling. This is very error-prone when using primitive methods, +# so we use pathlib which has been standard since python 3.4 +# If pathlib is new to you, you will need to read https://realpython.com/python-pathlib/ + +# --------------------- MEDIA redirections BEGIN --------------------- +REPOS_ROOT_PATH = Path(__file__).parent.parent +LIBDIR = REPOS_ROOT_PATH / 'lib' / PV +#LIBDIR = REPOS_ROOT_PATH / 'lib' / 'python3.9' # should be finding this automatically: python --version etc. + +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 + +#FILES = Path('/mnt/d/expofiles/') +EXPOFILES = Path('/media/philip/sd-huge1/cucc-expo/expofiles/') +SCANS_ROOT = EXPOFILES / 'surveyscans' +PHOTOS_ROOT = EXPOFILES / 'photos' +PHOTOS_YEAR = "2022" + +# URL that handles the media served from MEDIA_ROOT. Make sure to use a +# trailing slash if there is a path component (optional in other cases). +MEDIA_URL = '/site-media/' + +DIR_ROOT = ''#this should end in / if a value is given +URL_ROOT = '/' +# URL_ROOT = 'http://localhost:'+ SERVERPORT +'/' + +#Note that these constants are not actually used in urls.py, they should be.. +MEDIA_URL = urllib.parse.urljoin(URL_ROOT , '/site_media/') +SCANS_URL = urllib.parse.urljoin(URL_ROOT , '/survey_scans/') +PHOTOS_URL = urllib.parse.urljoin(URL_ROOT , '/photos/') +SVX_URL = urllib.parse.urljoin(URL_ROOT , '/survex/') + + +STATIC_URL = urllib.parse.urljoin(URL_ROOT , '/static/') # used by Django admin pages. Do not delete. +JSLIB_URL = urllib.parse.urljoin(URL_ROOT , '/javascript/') # used for CaveViewer JS utility + +#STATIC_ROOT removed after merging content into MEDIA_ROOT. See urls.py & core/views/surveys.py +# --------------------- MEDIA redirections END --------------------- + +PUBLIC_SITE = True +DEBUG = True # Always keep this True, even when on public server. Otherwise NO USEFUL ERROR MESSAGES ! +CACHEDPAGES = True # experimental page cache for a handful of page types + +# executables: +CAVERN = 'cavern' # for parsing .svx files and producing .3d files +SURVEXPORT = 'survexport' # for parsing .3d files and producing .pos files + +DBSQLITE = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', # 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. + 'NAME' : 'troggle.sqlite', +# 'NAME' : ':memory:', + 'USER' : 'expo', # Not used with sqlite3. + 'PASSWORD' : 'sekrit', # 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. + } +} +DBMARIADB = { + 'default': { + 'ENGINE': 'django.db.backends.mysql', # 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. + 'NAME' : 'troggle', # Or path to database file if using sqlite3. + 'USER' : 'expo', + 'PASSWORD' : 'my-secret-password-schwatzmooskogel', + 'HOST' : '', # Set to empty string for localhost. Not used with sqlite3. + 'PORT' : '', # Set to empty string for default. Not used with sqlite3. + } +} + +# default database for me is squlite +DBSWITCH = "sqlite" + +if DBSWITCH == "sqlite": + DATABASES = DBSQLITE +if DBSWITCH == "mariadb": + DATABASES = DBMARIADB + +NOTABLECAVESHREFS = [ "290", "291", "359", "264", "258", "204", "76", "107"] + +PYTHON_PATH = REPOS_ROOT_PATH / 'troggle' +sys.path.append(os.fspath(REPOS_ROOT_PATH)) +sys.path.append(os.fspath(PYTHON_PATH)) + +LOGFILE = PYTHON_PATH / 'troggle.log' +PYTHON_PATH = os.fspath(PYTHON_PATH) + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [ + TEMPLATE_PATH + ], + 'OPTIONS': { + 'debug': 'DEBUG', + '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 - only used in expedition.html + 'django.template.context_processors.debug', + 'django.template.context_processors.i18n', + 'django.template.context_processors.media', # includes a variable MEDIA_URL + 'django.template.context_processors.static', # includes a variable STATIC_URL used by admin pages + 'django.template.context_processors.tz', + 'django.template.context_processors.request', # must be enabled in DjangoTemplates (TEMPLATES) in order to use the admin navigation sidebar. + 'django.contrib.messages.context_processors.messages', + ], + 'loaders': [ + 'django.template.loaders.filesystem.Loader', # default lcation is troggle/templates/ + 'django.template.loaders.app_directories.Loader', # needed for admin 'app' + ] + }, + }, +] + +EXPOUSERPASS = "nnn:gggggg - real-expo-password---imported-from-localsettings.py" +EMAIL_HOST_PASSWORD = "real-email-password---imported-from-localsettings.py" + +EXPOUSER = 'expo' +EXPOUSER_EMAIL = 'philip.sargent@gmail.com' +EXPOADMINUSER = 'expoadmin' +EXPOADMINUSER_EMAIL = 'philip.sargent@gmail.com' + +EMAIL_HOST = "smtp-auth.mythic-beasts.com" +EMAIL_HOST_USER = "django-test@klebos.net" # Philip Sargent really +EMAIL_PORT=587 +EMAIL_USE_TLS = True +DEFAULT_FROM_EMAIL = 'django-test@klebos.net' + +SURVEX_DATA = REPOS_ROOT_PATH / "loser" +DRAWINGS_DATA = REPOS_ROOT_PATH / "drawings" + +EXPOWEB = REPOS_ROOT_PATH / "expoweb" +#SURVEYS = REPOS_ROOT_PATH +CAVEDESCRIPTIONS = EXPOWEB / "cave_data" +ENTRANCEDESCRIPTIONS = EXPOWEB / "entrance_data" +EXPOWEB_URL = '' +# SCANS_URL = '/survey_scans/' # defunct, removed. + +# 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) diff --git a/deprecations.txt b/deprecations.txt index d5d211f..2b967ae 100644 --- a/deprecations.txt +++ b/deprecations.txt @@ -1,6 +1,6 @@ -/home/philip/p10d3/lib/python3.10/site-packages/django/utils/version.py:6: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives +/home/philip/.local/lib/python3.10/site-packages/django/utils/version.py:6: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives from distutils.version import LooseVersion -/home/philip/p10d3/lib/python3.10/site-packages/django/utils/asyncio.py:19: DeprecationWarning: There is no current event loop +/home/philip/.local/lib/python3.10/site-packages/django/utils/asyncio.py:19: DeprecationWarning: There is no current event loop event_loop = asyncio.get_event_loop() -/home/philip/p10d3/lib/python3.10/site-packages/django/utils/asyncio.py:19: DeprecationWarning: There is no current event loop +/home/philip/.local/lib/python3.10/site-packages/django/utils/asyncio.py:19: DeprecationWarning: There is no current event loop event_loop = asyncio.get_event_loop() diff --git a/os-trog.sh b/os-trog.sh index 02749a4..dfdbbe5 100644 --- a/os-trog.sh +++ b/os-trog.sh @@ -9,20 +9,20 @@ python --version : ensure python is an alias for python3 not python2.7 sudo apt update sudo apt dist-upgrade sudo apt install sqlite3 -sudo apt install python3-pip # this installs a shed-load of other stuff: binutils etc. +sudo apt install python3-pip -sudo apt install survex-aven +# this installs a shed-load of other stuff: binutils etc.sudo apt install survex-aven sudo apt install openssh-client tunnelx therion sudo apt install git sftp # On a clean debian 11 (bullseye) installation with Xfce & ssh, # as debian does not install everything that ubuntu does, you need: sudo usermod -a -G sudo expo # to put expo in sudoers group, re-login required -sudo apt install python3.10 +# default since 22.04 # sudo apt install python3.10 sudo apt install python3.10-venv sudo apt install python3.10-dev sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.10 1 -sudo apt install mariadb-server +sudo apt install mariadb-server -y sudo apt install libmariadb-dev sudo python -m pip install --upgrade pip diff --git a/pre-push-barbie.sh b/pre-push-barbie.sh new file mode 100755 index 0000000..5ea1aa0 --- /dev/null +++ b/pre-push-barbie.sh @@ -0,0 +1,46 @@ +#! /bin/sh +# create and sanitise files for pushing to repo, for Babie laptop + +echo deprecations. +python -Wall manage.py check -v 3 2>deprecations.txt >/dev/null +echo diffsettings. +rm diffsettings.txt +if test -f "diffsettings.txt"; then + echo "diffsettings.txt not deleted. You have a serious permissions problem. Aborting.." + exit +fi +python manage.py diffsettings | grep "###" > diffsettings.txt +echo pip freeze. +pip freeze > requirements.txt +echo inspectdb. +# this next line requires database setting to be troggle.sqlite: +python manage.py inspectdb > troggle-inspectdb.py +#egrep -in "unable|error" troggle-inspectdb.py +echo remove passwords. +cp localsettings.py localsettingsXubuntu.py +sed -i '/EXPOUSERPASS/ s/^.*$/EXPOUSERPASS = "nnn:gggggg - real-expo-password---imported-from-localsettings.py"/' diffsettings.txt +sed -i '/EXPOUSERPASS/ s/^.*$/EXPOUSERPASS = "nnn:gggggg - real-expo-password---imported-from-localsettings.py"/' localsettingsXubuntu.py +echo " reset: EXPOUSERPASS = \"nnn:gggggg\" - real-expo-password---imported-from-localsettings.py" + +sed -i '/EXPOADMINUSERPASS/ s/^.*$/EXPOADMINUSERPASS = "gggggg:nnn - real-expo-password---imported-from-localsettings.py"/' diffsettings.txt +sed -i '/EXPOADMINUSERPASS/ s/^.*$/EXPOADMINUSERPASS = "gggggg:nnn - real-expo-password---imported-from-localsettings.py"/' localsettingsXubuntu.py +echo " reset: EXPOUSERPASS = \"gggggg:nnn\" - real-expo-password---imported-from-localsettings.py" + +sed -i '/EMAIL_HOST_PASSWORD/ s/^.*$/EMAIL_HOST_PASSWORD = "real-email-password---imported-from-localsettings.py"/' diffsettings.txt +sed -i '/EMAIL_HOST_PASSWORD/ s/^.*$/EMAIL_HOST_PASSWORD = "real-email-password---imported-from-localsettings.py"/' localsettingsXubuntu.py +echo " reset: EMAIL_HOST_PASSWORD = \"real-email-password--imported-from-localsettings.py\"" + +sed -i '/SECRET_KEY/ s/^.*$/SECRET_KEY = "real-SECRET_KEY--imported-from-localsettings.py"/' diffsettings.txt +sed -i '/SECRET_KEY/ s/^.*$/SECRET_KEY = "real-SECRET_KEY--imported-from-localsettings.py"/' localsettingsXubuntu.py +echo " reset: SECRET_KEY = \"real-SECRET_KEY--imported-from-localsettings.py\"" + +mv _deploy/xubuntu/localsettingsXubuntu.py _deploy/xubuntu/localsettingsXubuntu.py.bak +mv localsettingsXubuntu.py _deploy/xubuntu +# +# Do these before final testing, *not* just before pushing: +# in ./pre-run.sh +# python reset-django.py +# python manage.py makemigrations +# python manage.py test +# python manage.py inspectdb > troggle-inspectdb.py +# egrep -i "unable|error" troggle-inspectdb.py diff --git a/requirements.txt b/requirements.txt index b05fda2..e7eb9e9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,16 +1,84 @@ +apturl==0.5.2 asgiref==3.5.0 +blinker==1.4 +catfish==4.16.3 +certifi==2020.6.20 +cffi==1.15.0 +chardet==4.0.0 +click==8.0.3 +colorama==0.4.4 +command-not-found==0.3 confusable-homoglyphs==3.2.0 coverage==6.4 +cryptography==3.4.8 +cupshelpers==1.0 +dbus-python==1.2.18 +defer==1.0.6 +distro==1.7.0 +distro-info===1.1build1 Django==3.2 docutils==0.18 +gpg===1.16.0-unknown gunicorn==20.1.0 +httplib2==0.20.2 +idna==3.3 +importlib-metadata==4.6.4 +jeepney==0.7.1 +keyring==23.5.0 +language-selector==0.1 +launchpadlib==1.10.16 +lazr.restfulclient==0.14.4 +lazr.uri==1.0.6 +lightdm-gtk-greeter-settings==1.2.2 +macaroonbakery==1.3.1 +Mako==1.1.3 mariadb==1.0.11 +MarkupSafe==2.0.1 +menulibre==2.2.2 +mercurial==6.1.1 +more-itertools==8.10.0 +mugshot==0.4.3 mysql-connector-python==8.0.29 mysqlclient==2.1.0 +netifaces==0.11.0 +oauthlib==3.2.0 +olefile==0.46 +onboard==1.4.1 +pexpect==4.8.0 Pillow==9.1.0 +ply==3.11 protobuf==4.21.2 +psutil==5.9.0 +ptyprocess==0.7.0 +pycairo==1.20.1 +pycparser==2.21 +pycups==2.0.1 +PyGObject==3.42.1 +PyJWT==2.4.0 +pymacaroons==0.13.0 +PyNaCl==1.5.0 +pyparsing==2.4.7 +pyRFC3339==1.1 +python-apt==2.3.0+ubuntu2.1 +python-dateutil==2.8.1 +python-debian===0.1.43ubuntu1 pytz==2022.1 +PyYAML==5.4.1 reportlab==3.6.0 +requests==2.25.1 +SecretStorage==3.3.1 +sgt-launcher==0.2.7 +six==1.16.0 sqlparse==0.4.0 +systemd-python==234 typing_extensions==4.2.0 +ubuntu-advantage-tools==27.9 +ubuntu-drivers-common==0.0.0 +ufw==0.36.1 +unattended-upgrades==0.1 Unidecode==1.3.0 +urllib3==1.26.5 +wadllib==1.3.6 +xcffib==0.11.1 +xkit==0.0.0 +zipp==1.0.0