Source code for schedula.utils.form.config

# coding=utf-8
# -*- coding: UTF-8 -*-
#
# Copyright 2015-2024, Vincenzo Arcidiacono;
# Licensed under the EUPL (the 'Licence');
# You may not use this work except in compliance with the Licence.
# You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl

"""
It provides the default Flask App config file.
"""
import os
import secrets
import inspect
import os.path as osp

try:
    import flask_security
except ImportError:
    flask_security = None


[docs] class Config: DEBUG = True WTF_CSRF_CHECK_DEFAULT = False # reCAPTCHA configuration RECAPTCHA_PUBLIC_KEY = os.environ.get( 'RECAPTCHA_PUBLIC_KEY', '6LcsgJglAAAAAMm7ilxkhBRevaCAuxlpefYZmxHU' ) RECAPTCHA_PRIVATE_KEY = os.environ.get( 'RECAPTCHA_PRIVATE_KEY', '6LcsgJglAAAAAAbR3aHm2qJS_c3XsGqmC9O816eH' ) # Generate a nice key using secrets.token_urlsafe() SECRET_KEY = os.environ.get("SECRET_KEY", secrets.token_urlsafe()) # Bcrypt is set as default SECURITY_PASSWORD_HASH, which requires a salt # Generate a good salt using: secrets.SystemRandom().getrandbits(128) SECURITY_PASSWORD_SALT = os.environ.get( "SECURITY_PASSWORD_SALT", f'{secrets.SystemRandom().getrandbits(128)}' ) SECURITY_BLUEPRINT_NAME = os.environ.get( "SECURITY_BLUEPRINT_NAME", 'security' ) SECURITY_URL_PREFIX = os.environ.get("SECURITY_URL_PREFIX", '/user') SECURITY_CONFIRMABLE = os.environ.get( "SECURITY_CONFIRMABLE", 'true' ).lower() == 'true' SECURITY_AUTO_LOGIN_AFTER_CONFIRM = os.environ.get( "SECURITY_AUTO_LOGIN_AFTER_CONFIRM", 'false' ).lower() == 'true' SECURITY_POST_CONFIRM_VIEW = os.environ.get( "SECURITY_POST_CONFIRM_VIEW", '/#login' ) SECURITY_CONFIRM_ERROR_VIEW = os.environ.get( "SECURITY_CONFIRM_ERROR_VIEW", '/#login' ) SECURITY_REGISTERABLE = os.environ.get( "SECURITY_REGISTERABLE", 'true' ).lower() == 'true' SECURITY_SEND_REGISTER_EMAIL = os.environ.get( "SECURITY_SEND_REGISTER_EMAIL", 'true' ).lower() == 'true' SECURITY_RECOVERABLE = os.environ.get( "SECURITY_RECOVERABLE", 'true' ).lower() == 'true' SECURITY_RESET_VIEW = os.environ.get("SECURITY_RESET_VIEW", '/#reset') SECURITY_RESET_ERROR_VIEW = os.environ.get( "SECURITY_RESET_ERROR_VIEW", '/#login' ) SECURITY_REDIRECT_BEHAVIOR = os.environ.get( "SECURITY_REDIRECT_BEHAVIOR", 'spa' ) SECURITY_TRACKABLE = os.environ.get( "SECURITY_TRACKABLE", 'true' ).lower() == 'true' MAIL_DEFAULT_SENDER = os.environ.get('MAIL_DEFAULT_SENDER') MAIL_SERVER = os.environ.get('MAIL_HOST') MAIL_PORT = int(os.environ.get('MAIL_PORT', 465)) MAIL_USE_SSL = True MAIL_USERNAME = os.environ.get('MAIL_USER') MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD') SECURITY_I18N_DIRNAME = [ "translations", os.environ.get('SECURITY_I18N_DIRNAME', 'translations'), osp.join(osp.dirname(osp.dirname(__file__)), 'translations') ] if flask_security is not None: SECURITY_I18N_DIRNAME.append(osp.join( osp.dirname(inspect.getfile(flask_security)), 'translations' )) SCHEDULA_I18N_DIRNAME = [ "translations", os.environ.get('SCHEDULA_I18N_DIRNAME', 'translations'), osp.join(osp.dirname(__file__), 'translations'), ] BABEL_DEFAULT_LOCALE = 'en_US' BABEL_LANGUAGES = { 'af_ZA': {"icon": "🇿🇦", "label": "Afrikaans"}, 'ca_ES': {"icon": "🇪🇸", "label": "Català"}, 'da_DK': {"icon": "🇩🇰", "label": "Dansk"}, 'de_DE': {"icon": "🇩🇪", "label": "Deutsch"}, 'en_US': {"icon": "🇺🇸", "label": "English"}, 'es_ES': {"icon": "🇪🇸", "label": "Español"}, 'eu_ES': {"icon": "🇪🇸", "label": "Euskara"}, 'fr_FR': {"icon": "🇫🇷", "label": "Français"}, 'hu_HU': {"icon": "🇭🇺", "label": "Magyar"}, 'hy_AM': {"icon": "🇦🇲", "label": "Հայերեն"}, 'is_IS': {"icon": "🇮🇸", "label": "Íslenska"}, 'it_IT': {"icon": "🇮🇹", "label": "Italiano"}, 'ja_JP': {"icon": "🇯🇵", "label": "日本語"}, 'nl_NL': {"icon": "🇳🇱", "label": "Nederlands"}, 'pl_PL': {"icon": "🇵🇱", "label": "Polski"}, 'pt_BR': {"icon": "🇧🇷", "label": "Português (Brasil)"}, 'pt_PT': {"icon": "🇵🇹", "label": "Português (Portugal)"}, 'ru_RU': {"icon": "🇷🇺", "label": "Русский"}, 'tr_TR': {"icon": "🇹🇷", "label": "Türkçe"}, 'zh_Hans_CN': {"icon": "🇨🇳", "label": "中文(简体)"} } # have session and remember cookie be samesite (flask/flask_login) REMEMBER_COOKIE_SAMESITE = "strict" SESSION_COOKIE_SAMESITE = "strict" # Use an in-memory db SQLALCHEMY_DATABASE_URI = 'sqlite://' # As of Flask-SQLAlchemy 2.4.0 it is easy to pass in options directly to the # underlying engine. This option makes sure that DB connections from the # pool are still valid. Important for entire application since # many DBaaS options automatically close idle connections. SQLALCHEMY_ENGINE_OPTIONS = {"pool_pre_ping": True} SQLALCHEMY_TRACK_MODIFICATIONS = False STRIPE_SECRET_KEY = os.environ.get("STRIPE_SECRET_KEY") STRIPE_PUBLISHABLE_KEY = os.environ.get("STRIPE_PUBLISHABLE_KEY") STRIPE_WEBHOOK_SECRET_KEY = os.environ.get("STRIPE_WEBHOOK_SECRET_KEY")