PCv5/config.py

110 lines
3.5 KiB
Python
Raw Permalink Normal View History

2018-02-23 23:34:06 +01:00
import os
import logging
2021-02-21 20:17:48 +01:00
from datetime import timedelta
try:
from local_config import LocalConfig
except ImportError:
print(" \033[92mWARNING: Local config not found\033[0m")
# The LocalConfig class serves a dual purpose and overrides settings in
# both V5Config and some fields of FlaskApplicationSettings. The first has
# defaults (DefaultConfig), but not the second, so we provide them here.
2020-02-09 23:10:02 +01:00
class LocalConfig():
FLASK_DEBUG = False
DB_NAME = "pcv5"
SECRET_KEY = "a-random-secret-key"
#---
# Flask configuration
#---
class FlaskApplicationSettings(object):
"""
This object specifies the settings for the Flask application. All the keys
and values are predefined by Flask.
See: https://flask.palletsprojects.com/en/2.1.x/config/
"""
DEBUG = os.environ.get("FLASK_DEBUG") or LocalConfig.FLASK_DEBUG
SECRET_KEY = os.environ.get('SECRET_KEY') or LocalConfig.SECRET_KEY
2018-02-23 23:34:06 +01:00
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
'postgresql+psycopg2://' + os.environ.get('USER') + ':@/' \
+ LocalConfig.DB_NAME
2018-02-23 23:34:06 +01:00
SQLALCHEMY_TRACK_MODIFICATIONS = False
MAIL_DEFAULT_SENDER = "noreply-v5@planet-casio.com"
2020-07-21 21:06:00 +02:00
MAIL_SUPPRESS_SEND = None
# Only send cookies over HTTPS connections (use only if HTTPS is enabled)
SESSION_COOKIE_SECURE = True
# Only send cookies in requests, do not expose them to Javascript
SESSION_COOKIE_HTTPONLY = True
# Do not attach cookies to cross-origin requests
SESSION_COOKIE_SAMESITE = "Lax"
# This is needed to fix redirects after posting a message on the forum
DEBUG_TB_INTERCEPT_REDIRECTS = False
#---
# v5 configuration
#---
class DefaultConfig(object):
2020-07-21 21:06:00 +02:00
# Domain
DOMAIN = "v5.planet-casio.com"
# Database name
DB_NAME = "pcv5"
# LDAP usage
USE_LDAP = False
# LDAP configuration
LDAP_PASSWORD = "openldap"
2020-08-25 23:05:54 +02:00
LDAP_ROOT = "o=planet-casio"
LDAP_ENV = "o=prod"
# Secret key used to authenticate tokens. **USE YOURS!**
2020-02-09 23:15:51 +01:00
SECRET_KEY = "a-random-secret-key"
# Uploaded data folder
DATA_FOLDER = '/var/www/uploads'
# Enable guest post
ENABLE_GUEST_POST = True
2020-07-21 21:06:00 +02:00
# Disable email confimation
ENABLE_EMAIL_CONFIRMATION = True
# Send emails
SEND_MAILS = True
# GLaDOS configuration
GLADOS_HOST = "127.0.0.1"
GLADOS_PORT = 5555
2021-02-21 20:17:48 +01:00
# Time before trigerring the necropost alert
NECROPOST_LIMIT = timedelta(days=31)
# Acceptable page loading time; longer generation is reported to devs. This
# is computed in the page header, so it doesn't account for most of the
# template generation.
SLOW_REQUEST_THRESHOLD = 0.400 # s
# Whether to enable flask-debug-toolbar
ENABLE_FLASK_DEBUG_TOOLBAR = False
# Tab title prefix. Useful to dissociate local/dev/prod tabs
TABTITLE_PREFIX = ""
@staticmethod
def v5logger():
""" A fully configured logger for v5 activity logs """
logger = logging.getLogger('v5')
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('[%(asctime)s] %(levelname)s: %(message)s')
handler = logging.FileHandler('v5_activity.log')
handler.setLevel(logging.DEBUG)
handler.setFormatter(formatter)
logger.addHandler(handler)
return logger
class V5Config(LocalConfig, DefaultConfig):
"""
This object holds the settings for the v5 code. Each parameter has the
value specified in LocalConfig (if any), and defaults to the value set in
DefaultConfig.
"""
pass