From 2461ea614532b05990c41b0ee821f51ce95c19e3 Mon Sep 17 00:00:00 2001 From: Son NK Date: Mon, 22 Jul 2019 12:14:02 +0200 Subject: [PATCH] refactor config --- .env.example | 24 +++++++++++++++++++----- app/config.py | 38 +++++++++++++++++++++++++------------- app/email_utils.py | 4 ++-- server.py | 4 ++-- 4 files changed, 48 insertions(+), 22 deletions(-) diff --git a/.env.example b/.env.example index c65dd3f4..f4f403de 100644 --- a/.env.example +++ b/.env.example @@ -1,39 +1,53 @@ # Server url URL=http://sl-server:7777 +# Enable sentry +ENABLE_SENTRY=true + +# Email related settings +# Only print email content, not sending it +NOT_SEND_EMAIL=true EMAIL_DOMAIN=sl.local SUPPORT_EMAIL=support@sl.local SENDGRID_API_KEY=to_fill +# Max number emails user can generate for free plan +MAX_NB_EMAIL_FREE_PLAN=3 + +# Database +RESET_DB=true DB_URI=sqlite:///db.sqlite +# Flask FLASK_SECRET=secret -ENV=local - +# AWS BUCKET=to_fill AWS_ACCESS_KEY_ID=to_fill AWS_SECRET_ACCESS_KEY=to_fill # Cloudwatch +ENABLE_CLOUDWATCH=true CLOUDWATCH_LOG_GROUP=local CLOUDWATCH_LOG_STREAM=local + # Stripe STRIPE_YEARLY_PLAN=to_fill STRIPE_MONTHLY_PLAN=to_fill STRIPE_API=to_fill STRIPE_SECRET_KEY=to_fill -MAX_NB_EMAIL_FREE_PLAN=3 - +# Lyra analytics LYRA_ANALYTICS_ID=to_fill +# OpenId key OPENID_PRIVATE_KEY_PATH=local_data/jwtRS256.key OPENID_PUBLIC_KEY_PATH=local_data/jwtRS256.key.pub +# Words to generate random email alias WORDS_FILE_PATH=local_data/words.txt -# Github: make sure to set correctly the redirect url to /auth/github/callback +# Github GITHUB_CLIENT_ID=to_fill GITHUB_CLIENT_SECRET=to_fill diff --git a/app/config.py b/app/config.py index 890deb5f..15ca8fe1 100644 --- a/app/config.py +++ b/app/config.py @@ -23,23 +23,38 @@ if config_file: else: load_dotenv() +# Constants +PARTNER_CODES = ["SL2019"] +# Allow user to have 1 year of premium: set the expiration_date to 1 year more +PROMO_CODE = "SIMPLEISBETTER" + + +# Server url URL = os.environ["URL"] print("URL:", URL) +# Whether sentry is enabled +ENABLE_SENTRY = "ENABLE_SENTRY" in os.environ + +# Email related settings +NOT_SEND_EMAIL = "NOT_SEND_EMAIL" in os.environ EMAIL_DOMAIN = os.environ["EMAIL_DOMAIN"] SUPPORT_EMAIL = os.environ["SUPPORT_EMAIL"] SENDGRID_API_KEY = os.environ["SENDGRID_API_KEY"] +MAX_NB_EMAIL_FREE_PLAN = int(os.environ["MAX_NB_EMAIL_FREE_PLAN"]) + + +# Database +RESET_DB = "RESET_DB" in os.environ DB_URI = os.environ["DB_URI"] +# Flask secret FLASK_SECRET = os.environ["FLASK_SECRET"] - # invalidate the session at each new version by changing the secret FLASK_SECRET = FLASK_SECRET + SHA1 -ENABLE_SENTRY = "ENABLE_SENTRY" in os.environ -ENV = os.environ["ENV"] - +# AWS AWS_REGION = "eu-west-3" BUCKET = os.environ["BUCKET"] AWS_ACCESS_KEY_ID = os.environ["AWS_ACCESS_KEY_ID"] @@ -49,27 +64,24 @@ ENABLE_CLOUDWATCH = "ENABLE_CLOUDWATCH" in os.environ CLOUDWATCH_LOG_GROUP = os.environ["CLOUDWATCH_LOG_GROUP"] CLOUDWATCH_LOG_STREAM = os.environ["CLOUDWATCH_LOG_STREAM"] +# Stripe STRIPE_API = os.environ["STRIPE_API"] # Stripe public key STRIPE_SECRET_KEY = os.environ["STRIPE_SECRET_KEY"] STRIPE_YEARLY_PLAN = os.environ["STRIPE_YEARLY_PLAN"] STRIPE_MONTHLY_PLAN = os.environ["STRIPE_MONTHLY_PLAN"] -# Max number emails user can generate for free plan -MAX_NB_EMAIL_FREE_PLAN = int(os.environ["MAX_NB_EMAIL_FREE_PLAN"]) - +# Analytics LYRA_ANALYTICS_ID = os.environ["LYRA_ANALYTICS_ID"] -# Used to sign id_token +# OpenID keys, used to sign id_token OPENID_PRIVATE_KEY_PATH = get_abs_path(os.environ["OPENID_PRIVATE_KEY_PATH"]) OPENID_PUBLIC_KEY_PATH = get_abs_path(os.environ["OPENID_PUBLIC_KEY_PATH"]) -PARTNER_CODES = ["SL2019"] - -# Allow user to have 1 year of premium: set the expiration_date to 1 year more -PROMO_CODE = "SIMPLEISBETTER" - +# Used to generate random email WORDS_FILE_PATH = get_abs_path(os.environ["WORDS_FILE_PATH"]) + +# Github, Google, Facebook client id and secrets GITHUB_CLIENT_ID = os.environ["GITHUB_CLIENT_ID"] GITHUB_CLIENT_SECRET = os.environ["GITHUB_CLIENT_SECRET"] diff --git a/app/email_utils.py b/app/email_utils.py index aa74a6e1..3ddbba05 100644 --- a/app/email_utils.py +++ b/app/email_utils.py @@ -4,13 +4,13 @@ from sendgrid import SendGridAPIClient from sendgrid.helpers.mail import Mail -from app.config import SUPPORT_EMAIL, SENDGRID_API_KEY, ENV +from app.config import SUPPORT_EMAIL, SENDGRID_API_KEY, NOT_SEND_EMAIL from app.log import LOG def send(to_email, subject, html_content, plain_content=None): # On local only print out email content - if ENV == "local": + if NOT_SEND_EMAIL: LOG.d( "send mail to %s, subject:%s, content:%s", to_email, subject, html_content ) diff --git a/server.py b/server.py index 16831f2c..10eb8fa3 100644 --- a/server.py +++ b/server.py @@ -17,11 +17,11 @@ from app.config import ( DB_URI, FLASK_SECRET, ENABLE_SENTRY, - ENV, URL, SHA1, LYRA_ANALYTICS_ID, STRIPE_SECRET_KEY, + RESET_DB, ) from app.dashboard.base import dashboard_bp from app.developer.base import developer_bp @@ -269,7 +269,7 @@ if __name__ == "__main__": # enable to print all queries generated by sqlalchemy # app.config["SQLALCHEMY_ECHO"] = True - if ENV == "local": + if RESET_DB: LOG.d("reset db, add fake data") with app.app_context(): fake_data()