From: You-Sheng Yang Date: Thu, 9 Dec 2021 03:38:37 +0000 (+0800) Subject: settings: Move database settings into base X-Git-Tag: v3.1.0~42 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9f53e7d74ad19c5c92493c5e0ca23195f0b90d7e;p=thirdparty%2Fpatchwork.git settings: Move database settings into base Signed-off-by: You-Sheng Yang Signed-off-by: Stephen Finucane [stephenfin] Reworked release note --- diff --git a/patchwork/settings/base.py b/patchwork/settings/base.py index ff14d91b..c2703a27 100644 --- a/patchwork/settings/base.py +++ b/patchwork/settings/base.py @@ -105,6 +105,45 @@ STATICFILES_DIRS = [ os.path.join(ROOT_DIR, 'htdocs'), ] +# Database +# +# If you're using a postgres database, connecting over a local unix-domain +# socket, then the following setting should work for you. Otherwise, +# see https://docs.djangoproject.com/en/2.2/ref/settings/#databases + +if os.getenv('DATABASE_TYPE') == 'postgres': + DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql_psycopg2', + 'HOST': os.environ.get('DATABASE_HOST', 'localhost'), + 'PORT': os.environ.get('DATABASE_PORT', ''), + 'NAME': os.environ.get('DATABASE_NAME', 'patchwork'), + 'USER': os.environ.get('DATABASE_USER', 'patchwork'), + 'PASSWORD': os.environ.get('DATABASE_PASSWORD', 'password'), + }, + } +elif os.getenv('DATABASE_TYPE') == 'sqlite3': + DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': os.environ.get('DATABASE_NAME', ''), + }, + } +else: # mysql + DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.mysql', + 'HOST': os.getenv('DATABASE_HOST', 'localhost'), + 'PORT': os.getenv('DATABASE_PORT', ''), + 'NAME': os.getenv('DATABASE_NAME', 'patchwork'), + 'USER': os.getenv('DATABASE_USER', 'patchwork'), + 'PASSWORD': os.getenv('DATABASE_PASSWORD', 'password'), + 'TEST': { + 'CHARSET': 'utf8', + }, + }, + } + # # Third-party application settings # diff --git a/patchwork/settings/dev.py b/patchwork/settings/dev.py index 4487494f..cb4cb19f 100644 --- a/patchwork/settings/dev.py +++ b/patchwork/settings/dev.py @@ -7,8 +7,6 @@ Design based on: http://www.revsys.com/blog/2014/nov/21/recommended-django-project-layout/ """ -import os - from .base import * # noqa try: @@ -36,30 +34,8 @@ SECRET_KEY = '00000000000000000000000000000000000000000000000000' # noqa DEBUG = True -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.mysql', - 'HOST': os.getenv('DATABASE_HOST', 'localhost'), - 'PORT': os.getenv('DATABASE_PORT', ''), - 'USER': os.getenv('DATABASE_USER', 'patchwork'), - 'PASSWORD': os.getenv('DATABASE_PASSWORD', 'password'), - 'NAME': os.getenv('DATABASE_NAME', 'patchwork'), - 'TEST': { - 'CHARSET': 'utf8', - }, - }, -} - -if os.getenv('DATABASE_TYPE', None) == 'postgres': - DATABASES['default']['ENGINE'] = 'django.db.backends.postgresql_psycopg2' - DATABASES['default']['HOST'] = os.getenv('DATABASE_HOST', '') -elif os.getenv('DATABASE_TYPE', None) == 'sqlite': - DATABASES['default']['ENGINE'] = 'django.db.backends.sqlite3' - DATABASES['default']['NAME'] = '/dev/shm/patchwork.test.db.sqlite3' - del DATABASES['default']['HOST'] - del DATABASES['default']['PORT'] - del DATABASES['default']['USER'] - del DATABASES['default']['PASSWORD'] +if DATABASES['default']['ENGINE'] == 'mysql': # noqa: F405 + DATABASES['default']['TEST'] = {'CHARSET': 'utf8'} # noqa: F405 EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' diff --git a/patchwork/settings/production.example.py b/patchwork/settings/production.example.py index caaf4294..ff056294 100644 --- a/patchwork/settings/production.example.py +++ b/patchwork/settings/production.example.py @@ -48,23 +48,6 @@ ADMINS = ( # ('Jeremy Kerr', 'jk@ozlabs.org'), ) -# Database -# -# If you're using a postgres database, connecting over a local unix-domain -# socket, then the following setting should work for you. Otherwise, -# see https://docs.djangoproject.com/en/2.2/ref/settings/#databases - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.postgresql_psycopg2', - 'NAME': os.environ.get('DATABASE_NAME', ''), - 'USER': os.environ.get('DATABASE_USER', ''), - 'PASSWORD': os.environ.get('DATABASE_PASSWORD', ''), - 'HOST': os.environ.get('DATABASE_HOST', ''), - 'PORT': os.environ.get('DATABASE_PORT', ''), - }, -} - # # Static files settings # https://docs.djangoproject.com/en/2.2/ref/settings/#static-files diff --git a/releasenotes/notes/settings-move-database-settings-into-base-f0d05cf75170d55f.yaml b/releasenotes/notes/settings-move-database-settings-into-base-f0d05cf75170d55f.yaml new file mode 100644 index 00000000..772bc818 --- /dev/null +++ b/releasenotes/notes/settings-move-database-settings-into-base-f0d05cf75170d55f.yaml @@ -0,0 +1,19 @@ +--- +upgrade: + - | + Database configuration has been added to ``patchwork.settings.base``. + Previously, this had to be specified in the ``settings.py`` file manually + created by admins. The following environment variables can now be used to + configure the settings: + + - ``DATABASE_TYPE`` (one of: ``postgres``, ``sqlite3``, ``mysql``; + default: ``mysql``) + - ``DATABASE_HOST`` (default: ``localhost``) + - ``DATABASE_PORT`` (default: ````) + - ``DATABASE_NAME`` (default: ``patchwork``) + - ``DATABASE_USER`` (default: ``patchwork``) + - ``DATABASE_PASSWORD`` (default: ``patchwork``) + + If you are manually defining ``DATABASES`` in your ``settings.py`` file, + this should have no impact. However, you may wish to rework your deployment + to use environment variables instead.