コード例 #1
0
    class FlaskConfig:  # pylint: disable=R0903
        """Flask specific configuration."""

        SECRET_KEY = environ.var(_gen_secret_key())
        DEBUG = environ.bool_var(False)
        TESTING = environ.bool_var(False)
        SQLALCHEMY_DATABASE_URI = environ.var("sqlite://")
        SQLALCHEMY_TRACK_MODIFICATIONS = environ.bool_var(False)
コード例 #2
0
 class Child(object):
     var7 = environ.var(help="var7, no default")
     var8 = environ.var("bar", help="var8, has default")
     var9 = environ.bool_var(help="var9, bool_var, no default")
     var10 = environ.bool_var(True, help="var10, bool_var, has default")
     var11 = environ.var("canine",
                         name="DOG2",
                         help="var11, named, has default")
     var12 = environ.var(name="CAT2", help="var12, named, no default")
     var13 = environ.var("default")  # var with default, no help
     var14 = environ.var()  # var without default, no help
コード例 #3
0
ファイル: config.py プロジェクト: Pietsupply/wichtelit
class Email:
    host = environ.var(
        default='mxf9a9.netcup.net',
        converter=str,
        help="The SMTP Hostname to use to send emails through."
    )
    port = environ.var(
        default=587,
        converter=int,
        help="The SMTP Port to use to send emails through."
    )
    tls = environ.bool_var(
        default=True,
        help="SMTP use TLS or not.")
    timeout = environ.var(
        default=60,
        converter=int,
        help="The Default Timeout for SMTP Connection establishment."
    )
    backend = environ.var(
        default='django.core.mail.backends.smtp.EmailBackend',
        converter=str,
        help="The EMAIL Backend to use for django."
    )
    user = environ.group(User)
コード例 #4
0
ファイル: config.py プロジェクト: rollethu/noe
    class Email:
        class Backend(enum.Enum):
            CONSOLE = "console"
            SMTP = "smtp"

        _PARAM_HELP = "Required for SMTP only"

        def _convert_backend(value):
            backend = NoeConfig.Email.Backend(value)
            return f"django.core.mail.backends.{backend.value}.EmailBackend"

        def _validate_param(obj, attribute, value):
            if not value and obj.backend == "smtp":
                raise ValueError(
                    f"The DJANGO_DATABASE_{attribute.name.upper()} environment variable is required\n{attribute!r}"
                )

        def _convert_verification_key(value):
            if value is None:
                raise ValueError("You need to generate an EMAIL_VERIFICATION_KEY.")

            value_bytes = value.encode()

            try:
                Fernet(value_bytes)
            except Exception as exc:
                raise ValueError(f"EMAIL_VERIFICATION_KEY: {value}")
            else:
                return value_bytes

        backend = environ.var(converter=_convert_backend, help='"console" or "smtp"')
        host = environ.var(default=None, help=_PARAM_HELP)
        port = environ.var(default=None, help=_PARAM_HELP)
        user = environ.var(default=None, help=_PARAM_HELP)
        password = environ.var(default=None, help=_PARAM_HELP)
        use_tls = environ.bool_var(default=True)
        default_from = environ.bool_var(help="Sender email address for automatic emails")
        verification_key = environ.var(
            default=None,
            converter=_convert_verification_key,
            help="SECRET_KEY for encrpyting the email verification token",
        )
コード例 #5
0
class Parent(object):
    not_a_var = attr.ib()  # For testing that only environ.var's are processed.
    var1 = environ.var(help="var1, no default")
    var2 = environ.var("bar", help="var2, has default")
    var3 = environ.bool_var(help="var3, bool_var, no default")
    var4 = environ.bool_var(True, help="var4, bool_var, has default")
    var5 = environ.var("canine", name="DOG", help="var5, named, has default")
    var6 = environ.var(name="CAT", help="var6, named, no default")

    @environ.config
    class Child(object):
        var7 = environ.var(help="var7, no default")
        var8 = environ.var("bar", help="var8, has default")
        var9 = environ.bool_var(help="var9, bool_var, no default")
        var10 = environ.bool_var(True, help="var10, bool_var, has default")
        var11 = environ.var("canine",
                            name="DOG2",
                            help="var11, named, has default")
        var12 = environ.var(name="CAT2", help="var12, named, no default")
        var13 = environ.var("default")  # var with default, no help
        var14 = environ.var()  # var without default, no help

    child = environ.group(Child)
コード例 #6
0
ファイル: config.py プロジェクト: thenova1527/octomachinery
class RuntimeConfig:  # pylint: disable=too-few-public-methods
    """Config of runtime env."""

    debug = environ.bool_var(False, name='DEBUG')
    env = environ.var(
        'prod',
        name='ENV',
        validator=attr.validators.in_(('dev', 'prod')),
    )
    mode = environ.var(
        'auto',
        name='OCTOMACHINERY_APP_MODE',
        converter=lambda val: detect_env_mode() if val == 'auto' else val,
        validator=attr.validators.in_(('app', 'action')),
    )
コード例 #7
0
class Configuration:  # pylint: disable=R0903
    """Root configuration."""
    @environ.config
    class FlaskConfig:  # pylint: disable=R0903
        """Flask specific configuration."""

        SECRET_KEY = environ.var(_gen_secret_key())
        DEBUG = environ.bool_var(False)
        TESTING = environ.bool_var(False)
        SQLALCHEMY_DATABASE_URI = environ.var("sqlite://")
        SQLALCHEMY_TRACK_MODIFICATIONS = environ.bool_var(False)

    flask = environ.group(FlaskConfig)
    skip_db_setup = environ.bool_var(False)
    verbosity = environ.var(
        "WARNING",
        validator=in_(["CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG"]))
コード例 #8
0
ファイル: config.py プロジェクト: ekohl/octomachinery
class RuntimeConfig:
    """Config of runtime env."""

    debug = environ.bool_var(False, name='DEBUG')
    env = environ.var(
        'prod',
        name='ENV',
        validator=attr.validators.in_(('dev', 'prod')),
    )
    mode = environ.var(
        'auto',
        name='OCTOMACHINERY_APP_MODE',
        converter=lambda val: detect_env_mode() if val == 'auto' else val,
        validator=attr.validators.in_(('app', 'action')),
    )

    app_name = environ.var(None, name='OCTOMACHINERY_APP_NAME')
    app_version = environ.var(None, name='OCTOMACHINERY_APP_VERSION')
    app_url = environ.var(None, name='OCTOMACHINERY_APP_URL')
コード例 #9
0
class Config:
    """Custom Config class."""

    allowed_hosts = environ.var("*", converter=csv_converter)
    db_url = environ.var(
        "sqlite:///db.sqlite3")  # default allows for running manage.py locally
    debug = environ.bool_var(False)
    django_env = environ.var("local")
    secret_key = environ.var("default-secret-key")

    @environ.config
    class RestFramework:
        parser_classes = environ.var("rest_framework.parsers.JSONParser",
                                     converter=csv_converter)
        renderer_classes = environ.var(
            "rest_framework.renderers.JSONRenderer",
            converter=csv_converter,
        )

    drf: RestFramework = environ.group(RestFramework)
コード例 #10
0
ファイル: config.py プロジェクト: Pietsupply/wichtelit
class WichtelitConfig:
    secret_key = environ.var(
        default='---cjz#uz(&br66^fis#p+(x1!wpqt&%nr#ny_!@-09#*jwk+m',
        converter=str,
        help="The Secret Key of the Django Application. (Default is development Key," +
        " https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/"
    )
    debug = environ.bool_var(
        default=True,
        help="This enables the development mode."
    )
    fqdn = environ.var(
        default="wichtelit",
        converter=str,
        help="Adding the Allowed host from outside."
    )
    captcha = environ.group(Captcha)
    database = environ.group(Database)
    email = environ.group(Email)
    contact = environ.group(Contact)
コード例 #11
0
class Config:

    # default all supported values to None
    AWS_REQUIRE_SECRETS = environ.bool_var(
        True,
        help=('Are AWS credentials required?'
              ' Set to False if using AWS roles or ~/.aws/credentials.'))
    AWS_ACCESS_KEY_ID = environ.var(None)
    AWS_SECRET_ACCESS_KEY = environ.var(None)
    AWS_REGION = environ.var(None)

    # we could do
    #   @environ.config
    #   class DB
    # here, but from the user perspective it doesn't matter
    # and not having a nested class makes requirement checking
    # simpler in resources.py
    ODBC_UID = environ.var(None, help='UID value for odbc_connect query parameter.')
    ODBC_PWD = environ.var(None, help='PWD value for odbc_connect query parameter.')
    ODBC_DSN = environ.var(None, help='DSN value for odbc_connect query parameter.')
    ODBC_SERVER = environ.var(None, help='Server value for odbc_connect query parameter.')
    ODBC_PORT = environ.var(None, help='Port value for odbc_connect query parameter.')
    ODBC_DRIVER = environ.var(None, help='The ODBC connection driver, e.g. "{ODBC Driver 17 for SQL Server}"')
    ODBC_FLAVOR = environ.var('mssql', help='The SQL flavor, or dialect.')

    ODBC_CONNECT_PARAMS = environ.var('SERVER,PORT,DRIVER,UID,PWD', converter=_odbc_connect_params)
    _connect_string = '{flavor}+pyodbc:///?odbc_connect={odbc_connect}'

    @property
    def ODBC_CONNECT_URL(self):
        odbc_connect = ';'.join(
            '%s=%s' % (k.replace('ODBC_', ''), getattr(self, k))
            for k in self.ODBC_CONNECT_PARAMS)
        connect_url = self._connect_string.format(
            flavor=self.ODBC_FLAVOR,
            odbc_connect=urllib.parse.quote_plus(odbc_connect)
        )
        return connect_url
コード例 #12
0
class Config:

    GC_CREDENTIALS: str = environ.var()  # Path to Google JSON credentials
    GC_PROJECT: str = environ.var()
    BQ_PYPI_DOWNLOADS_TABLE: str = environ.var("the-psf.pypi.downloads*")
    CACHE_RESULTS: bool = environ.bool_var(True)
    CACHED_RESULTS_PATH: str = environ.var(CACHE_PATH /
                                           "cached_bq_results.json")

    LOGGING_LEVEL: str = environ.var("INFO")

    @property
    def LOGGING(self):
        return {
            "version": 1,
            "formatters": {
                "default": {
                    "format":
                    "[%(asctime)s][%(name)s][%(levelname)s]: %(message)s",
                    "datefmt": "%Y-%m-%d %H:%M:%S",
                }
            },
            "handlers": {
                "console": {
                    "class": "logging.StreamHandler",
                    "level": self.LOGGING_LEVEL,
                    "formatter": "default",
                }
            },
            "loggers": {
                "": {
                    "handlers": ["console"],
                    "level": self.LOGGING_LEVEL,
                    "propagate": True,
                }
            },
        }
コード例 #13
0
ファイル: config.py プロジェクト: rollethu/noe
class NoeConfig:
    debug = environ.bool_var(
        default=False, name="DJANGO_DEBUG", help="SECURITY WARNING: Don't run with debug turned on in production!"
    )
    secret_key = environ.var(help="SECURITY WARNING: keep the secret key used in production secret!")

    frontend_url = environ.var(help="Where the React frontend SPA is hosted")
    backend_url = environ.var(help="Where the Django backend is hosted")
    allowed_hosts = environ.var(default="*", converter=split_by_comma)
    allowed_cors_hosts = environ.var(default=None, converter=lambda val: split_by_comma(val) if val else None)
    behind_tls_proxy = environ.bool_var(
        default=False,
        help='Whether or not to set the "X-Forwarded-Proto" header to "https". Should be set to True behind a proxy.',
    )

    language_code = environ.var(default="hu-hu")
    time_zone = environ.var(default="Europe/Budapest")
    log_level = environ.var(default="INFO", help="Python logger log level")

    sentry_dsn_url = environ.var(
        default=None, name="SENTRY_DSN_URL", help="If you want to track exceptions with https://sentry.io",
    )

    @environ.config
    class Database:
        _DB_SQLITE_ENGINE = "django.db.backends.sqlite3"
        _PARAM_HELP = "Not required for SQLite"

        def _convert_database_engine(value):
            if value == "postgresql":
                return "django.db.backends.postgresql"
            elif value in ("mysql", "mariadb"):
                return "django.db.backends.mysql"
            elif value in ("sqlite", "sqlite3"):
                return NoeConfig.Database._DB_SQLITE_ENGINE

            raise ValueError(
                f'Invalid database engine: {value!r}\npossible values: "postgresql", "mysql", "mariadb", "sqlite"'
            )

        def _validate_param(obj, attribute, value):
            if not value and obj.engine != NoeConfig.Database._DB_SQLITE_ENGINE:
                raise ValueError(
                    f"The DJANGO_DATABASE_{attribute.name.upper()} environment variable is required\n{attribute!r}"
                )

        engine = environ.var(converter=_convert_database_engine)
        name = environ.var()
        user = environ.var(default=None, validator=_validate_param, help=_PARAM_HELP)
        password = environ.var(default=None, validator=_validate_param, help=_PARAM_HELP)
        host = environ.var(default=None, validator=_validate_param, help=_PARAM_HELP)
        port = environ.var(default=None, validator=_validate_param, help=_PARAM_HELP)

    database = environ.group(Database)

    @environ.config
    class Email:
        class Backend(enum.Enum):
            CONSOLE = "console"
            SMTP = "smtp"

        _PARAM_HELP = "Required for SMTP only"

        def _convert_backend(value):
            backend = NoeConfig.Email.Backend(value)
            return f"django.core.mail.backends.{backend.value}.EmailBackend"

        def _validate_param(obj, attribute, value):
            if not value and obj.backend == "smtp":
                raise ValueError(
                    f"The DJANGO_DATABASE_{attribute.name.upper()} environment variable is required\n{attribute!r}"
                )

        def _convert_verification_key(value):
            if value is None:
                raise ValueError("You need to generate an EMAIL_VERIFICATION_KEY.")

            value_bytes = value.encode()

            try:
                Fernet(value_bytes)
            except Exception as exc:
                raise ValueError(f"EMAIL_VERIFICATION_KEY: {value}")
            else:
                return value_bytes

        backend = environ.var(converter=_convert_backend, help='"console" or "smtp"')
        host = environ.var(default=None, help=_PARAM_HELP)
        port = environ.var(default=None, help=_PARAM_HELP)
        user = environ.var(default=None, help=_PARAM_HELP)
        password = environ.var(default=None, help=_PARAM_HELP)
        use_tls = environ.bool_var(default=True)
        default_from = environ.bool_var(help="Sender email address for automatic emails")
        verification_key = environ.var(
            default=None,
            converter=_convert_verification_key,
            help="SECRET_KEY for encrpyting the email verification token",
        )

    email = environ.group(Email)

    @environ.config
    class Static:
        url = environ.var(
            default="/static/",
            help=(
                "URL path generated for static files. "
                "If you change this, backend won't serve static files with WhiteNoise anymore."
            ),
        )
        root = environ.var(
            default="/project_noe/static_root",
            help=(
                "Where manage.py collectstatic put all static files. "
                "The default value is where the static files are in the Docker container"
            ),
        )

    static = environ.group(Static)

    default_time_slot_capacity = environ.var(default=30, converter=int)

    @environ.config
    class Szamlazzhu:
        agent_key = environ.var()
        invoice_prefix = environ.var()

    szamlazzhu = environ.group(Szamlazzhu)

    @environ.config
    class SimplePay:
        class Environment(enum.Enum):
            SANDBOX = "sandbox"
            LIVE = "live"

        merchant = environ.var()
        secret_key = environ.var()
        ipn_url = environ.var()
        use_live = environ.var(default=False)
        environment = environ.var(name="SIMPLEPAY_ENVIRONMENT", converter=Environment)

        def __attrs_post_init__(self):
            self.use_live = self.environment is NoeConfig.SimplePay.Environment.LIVE

    simplepay = environ.group(SimplePay)

    def __attrs_post_init__(self):
        if not self.allowed_cors_hosts and "*" not in self.allowed_hosts:
            self.allowed_cors_hosts = self.allowed_hosts
コード例 #14
0
 class Cfg(object):
     t = environ.bool_var()
     f = environ.bool_var()
     d = environ.bool_var(True)
コード例 #15
0
ファイル: config.py プロジェクト: Selfnet/sipam
class SIPAMConfig:
    port = environ.var(converter=int,
                       default=8000,
                       help="the port the APP listens on.")
    env = environ.var(converter=Env,
                      default=Env.PROD,
                      help="The environment the APP runs in.")
    secret_key = environ.var(
        default='#ar^t6d7k&nnvi7$&8g#9plu^6c)9qzg%-k+dtjrcxu7d(z6*_',
        converter=str,
        help=
        ("The Secret Key of the Django Application. (Default is development Key,"
         " https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/"))
    debug = environ.bool_var(default=False,
                             help="This enables the development mode.")
    fqdn = environ.var(default="sipam",
                       converter=str,
                       help="Adding the Allowed host from outside.")
    log_level = environ.var(default='INFO',
                            converter=str,
                            help="Log Level of the application.")

    @environ.config
    class OIDC:
        endpoint = environ.var(
            default="https://samples.auth0.com/",
            converter=str,
            help="This defines the endpoint of the OIDC provider")
        client_id = environ.var(
            default='sipam',
            converter=str,
            help=
            "This defines the allowed azp definition == client_id in keycloak."
        )
        allowed_groups = environ.var(
            default='',
            converter=list_converter,
            help="This defines allowed values in the groups_claim")
        groups_claim = environ.var(
            default='aks',
            converter=str,
            help="This defines the key for the claim to use for groups.")
        bearer_auth_header_prefix = environ.var(
            default='OPENID',
            converter=str,
            help=
            "This defines the Authorization Header prefix to look for when using OIDC."
        )

    @environ.config
    class Database:
        host = environ.var(default='postgres',
                           converter=str,
                           help="The RDBMS Hostname to use to connect to.")
        port = environ.var(default=5432,
                           converter=int,
                           help="The RDBMS Port to use to connect to.")
        name = environ.var(
            default='sipam',
            converter=str,
            help="The Name of the RDBMS Database to use to connect to.")
        user = environ.group(User)

    oidc = environ.group(OIDC)
    database = environ.group(Database)