aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGertjan van den Burg <gertjanvandenburg@gmail.com>2019-03-28 11:37:05 +0000
committerGertjan van den Burg <gertjanvandenburg@gmail.com>2019-03-28 11:37:05 +0000
commitbdc1eb1d8bb800f7938c485e3c876fd06b535029 (patch)
tree592067ad1091ac4dd8b77d13515d6def894425c9
parentFlash warning when insufficient users present (diff)
downloadAnnotateChange-bdc1eb1d8bb800f7938c485e3c876fd06b535029.tar.gz
AnnotateChange-bdc1eb1d8bb800f7938c485e3c876fd06b535029.zip
Update configuration to use env files throughout
-rw-r--r--.gitignore2
-rw-r--r--config.py46
-rwxr-xr-xflask.sh3
-rw-r--r--poetry.lock20
-rw-r--r--pyproject.toml2
5 files changed, 47 insertions, 26 deletions
diff --git a/.gitignore b/.gitignore
index 4dfee3c..a2f87e7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
app/__pycache__
migrations/__pycache__
__pycache__/
+.env.development
+.env.production
diff --git a/config.py b/config.py
index 6addfb2..6ddf9fb 100644
--- a/config.py
+++ b/config.py
@@ -1,27 +1,47 @@
# -*- coding: utf-8 -*-
+"""Configuration for the AnnotateChange app
+
+Almost all configuration options are expected to be supplied through
+environment variables.
+"""
+
import os
-from dotenv import load_dotenv
+BASEDIR = os.path.abspath(os.path.dirname(__file__))
-# TODO: change these things to an instance path
-basedir = os.path.abspath(os.path.dirname(__file__))
-load_dotenv(os.path.join(basedir, '.env'))
class Config(object):
SECRET_KEY = os.environ.get("SECRET_KEY") or "you-will-never-guess"
- SQLALCHEMY_DATABASE_URI = os.environ.get(
- "DATABASE_URL"
- ) or "sqlite:///" + os.path.join(basedir, "app.db")
+ DB_TYPE = os.environ.get("DB_TYPE") or "sqlite3"
+ if DB_TYPE == "mysql":
+ SQLALCHEMY_DATABASE_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/{database}".format(
+ username=os.environ.get("MYSQL_USER"),
+ password=os.environ.get("MYSQL_PASSWORD"),
+ host=os.environ.get("MYSQL_HOST"),
+ port=os.environ.get("MYSQL_PORT"),
+ database=os.environ.get("MYSQL_DATABASE"),
+ )
+ else:
+ SQLALCHEMY_DATABASE_URI = "sqlite:///{filepath}".format(
+ filepath=os.path.join(
+ BASEDIR, os.environ.get("SQL3_FILENAME") or "app.db"
+ )
+ )
+
SQLALCHEMY_TRACK_MODIFICATIONS = False
- MAIL_SERVER = os.environ.get('MAIL_SERVER')
- MAIL_PORT = int(os.environ.get('MAIL_PORT') or 25)
- MAIL_USE_TLS = os.environ.get('MAIL_USE_TLS') is not None
- MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
- MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
- ADMINS = ["annotatechange@gmail.com"]
+ MAIL_SERVER = os.environ.get("MAIL_SERVER")
+ MAIL_PORT = int(os.environ.get("MAIL_PORT") or 25)
+ MAIL_USE_TLS = os.environ.get("MAIL_USE_TLS") is not None
+ MAIL_USERNAME = os.environ.get("MAIL_USERNAME")
+ MAIL_PASSWORD = os.environ.get("MAIL_PASSWORD")
+ ADMINS = [
+ x.strip()
+ for x in os.environ.get("ADMIN_EMAILS").split(";")
+ if x.strip()
+ ]
# these should be used relative to the instance path
DATASET_DIR = "datasets"
diff --git a/flask.sh b/flask.sh
index 1a73a88..78155a9 100755
--- a/flask.sh
+++ b/flask.sh
@@ -1,7 +1,6 @@
#!/bin/bash
-export FLASK_APP=annotate_change.py
-export FLASK_ENV=development
+export $(grep -v '^#' .env.development | xargs -d '\n')
echo "FLASK_APP = ${FLASK_APP}"
echo "FLASK_ENV = ${FLASK_ENV}"
diff --git a/poetry.lock b/poetry.lock
index a76413a..3af79dc 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -255,6 +255,14 @@ python-versions = "*"
version = "1.7.1"
[[package]]
+category = "main"
+description = "Pure Python MySQL Driver"
+name = "pymysql"
+optional = false
+python-versions = "*"
+version = "0.9.3"
+
+[[package]]
category = "dev"
description = "pytest: simple powerful testing with Python"
name = "pytest"
@@ -285,14 +293,6 @@ six = ">=1.5"
[[package]]
category = "main"
-description = "Add .env support to your django/flask apps in development and deployments"
-name = "python-dotenv"
-optional = false
-python-versions = "*"
-version = "0.10.1"
-
-[[package]]
-category = "main"
description = "Programmatically open an editor, capture the result."
name = "python-editor"
optional = false
@@ -340,7 +340,7 @@ python-versions = "*"
version = "2.2.1"
[metadata]
-content-hash = "5486bc204e5f4c7de5b17428e1c5dd97bd576fbf0b5ccb2733756bd34debd598"
+content-hash = "a9ea74089171860e4f80393ba29530ec1573224fa2ecbe951229caca3573397e"
python-versions = "^3.7"
[metadata.hashes]
@@ -370,9 +370,9 @@ more-itertools = ["0125e8f60e9e031347105eb1682cef932f5e97d7b9a1a28d9bf00c22a5dae
pluggy = ["19ecf9ce9db2fce065a7a0586e07cfb4ac8614fe96edf628a264b1c70116cf8f", "84d306a647cc805219916e62aab89caa97a33a1dd8c342e87a37f91073cd4746"]
py = ["64f65755aee5b381cea27766a3a147c3f15b9b6b9ac88676de66ba2ae36793fa", "dc639b046a6e2cff5bbe40194ad65936d6ba360b52b3c3fe1d08a82dd50b5e53"]
pyjwt = ["5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e", "8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96"]
+pymysql = ["3943fbbbc1e902f41daf7f9165519f140c4451c179380677e6a848587042561a", "d8c059dcd81dedb85a9f034d5e22dcb4442c0b201908bede99e306d65ea7c8e7"]
pytest = ["3f193df1cfe1d1609d4c583838bea3d532b18d6160fd3f55c9447fdca30848ec", "e246cf173c01169b9617fc07264b7b1316e78d7a650055235d6d897bc80d9660"]
python-dateutil = ["7e6584c74aeed623791615e26efd690f29817a27c73085b78e4bad02493df2fb", "c89805f6f4d64db21ed966fda138f8a5ed7a4fdbc1a8ee329ce1b74e3c74da9e"]
-python-dotenv = ["a84569d0e00d178bc5b957f7ff208bf49287cbf61857c31c258c4a91f571527b", "c9b1ddd3cdbe75c7d462cb84674d87130f4b948f090f02c7d7144779afb99ae0"]
python-editor = ["1bf6e860a8ad52a14c3ee1252d5dc25b2030618ed80c022598f00176adc8367d", "51fda6bcc5ddbbb7063b2af7509e43bd84bfc32a4ff71349ec7847713882327b", "5f98b069316ea1c2ed3f67e7f5df6c0d8f10b689964a4a811ff64f0106819ec8", "c3da2053dbab6b29c94e43c486ff67206eafbe7eb52dbec7390b5e2fb05aac77", "ea87e17f6ec459e780e4221f295411462e0d0810858e055fc514684350a2f522"]
six = ["3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c", "d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73"]
sqlalchemy = ["781fb7b9d194ed3fc596b8f0dd4623ff160e3e825dd8c15472376a438c19598b"]
diff --git a/pyproject.toml b/pyproject.toml
index 063d9d9..eebd710 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -14,9 +14,9 @@ flask-login = "^0.4.1"
flask-mail = "^0.9.1"
pyjwt = "^1.7"
flask-bootstrap = "^3.3"
-python-dotenv = "^0.10.1"
email_validator = "^1.0"
gunicorn = "^19.9"
+pymysql = "^0.9.3"
[tool.poetry.dev-dependencies]
pytest = "^3.0"