Source code for app.config

from decouple import config
import pytz
import boto3

import os


# Timezone used in this app
[docs] appTimezoneStr = config("TIMEZONE")
[docs] appTimezone = pytz.timezone(appTimezoneStr)
# S3 resource to be imported in other modules # Use s3.meta.client if client object is needed
[docs] s3 = boto3.resource( "s3", endpoint_url=config("S3_ENDPOINT"), aws_access_key_id=config("S3_KEY"), aws_secret_access_key=config("S3_SECRET"), )
# Flask app configuration
[docs] class Config: # Grabs the folder where the script runs
[docs] BASEDIR = os.path.abspath(os.path.dirname(__file__))
# Enable protection against Cross-site Request Forgery
[docs] CSRF_ENABLED = True
# Application Details
[docs] APP_NAME = config("APP_NAME")
[docs] APP_ROOT_URL = config("APP_ROOT_URL", "https://localhost:5000/")
[docs] TIMEZONE = config("TIMEZONE")
[docs] FLASK_DEBUG = config("FLASK_DEBUG", cast=bool)
# Self signed certificates for local development # Only used when FLASK_DEBUG is True if FLASK_DEBUG:
[docs] FLASK_RUN_CERT = config("FLASK_RUN_CERT")
FLASK_RUN_KEY = config("FLASK_RUN_KEY") # Database
[docs] SQLALCHEMY_DATABASE_URI = config( "DATABASE_CONNECTION_STRING", default=f"sqlite:///{os.path.join(os.path.dirname(BASEDIR), 'database.db')}", )
[docs] SECRET_KEY = config("DATABASE_SECRET_KEY")
[docs] SQLALCHEMY_ENGINE_OPTIONS = { "pool_size": 10, "pool_recycle": 60, # To handle disconnects as described here: https://docs.sqlalchemy.org/en/14/core/pooling.html#pool-disconnects "pool_pre_ping": True, }
[docs] SQLALCHEMY_TRACK_MODIFICATIONS = False
# Object Storage
[docs] S3_BUCKET_NAME = config("S3_BUCKET_NAME")
[docs] S3_ENDPOINT = config("S3_ENDPOINT")
[docs] S3_KEY = config("S3_KEY")
[docs] S3_SECRET = config("S3_SECRET")
# Email
[docs] MAIL_FROM = config("MAIL_FROM")
[docs] MAIL_SERVER = config("MAIL_SERVER")
[docs] MAIL_PORT = config("MAIL_PORT", cast=int)
[docs] MAIL_USE_TLS = config("MAIL_USE_TLS", cast=bool)
[docs] MAIL_USE_SSL = config("MAIL_USE_SSL", cast=bool)
[docs] MAIL_USERNAME = config("MAIL_USERNAME")
[docs] MAIL_PASSWORD = config("MAIL_PASSWORD")
[docs] MAIL_DEBUG = config("MAIL_DEBUG", cast=bool)
# OAuth
[docs] GOOGLE_CLIENT_ID = config("GOOGLE_CLIENT_ID")
[docs] GOOGLE_CLIENT_SECRET = config("GOOGLE_CLIENT_SECRET")
# Stripe
[docs] STRIPE_PUBLISHABLE_KEY = config("STRIPE_PUBLISHABLE_KEY")
[docs] STRIPE_SECRET_KEY = config("STRIPE_SECRET_KEY")
[docs] STRIPE_WEBHOOK_SECRET = config("STRIPE_WEBHOOK_SECRET")
[docs] STRIPE_PRODUCT_ID_FOR_CREDITS = config("STRIPE_PRODUCT_ID_FOR_CREDITS")
[docs] STRIPE_CREDIT_UNIT_COST = config("STRIPE_CREDIT_UNIT_COST", cast=int)