-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbase.py
52 lines (42 loc) · 1.47 KB
/
base.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import importlib
import os
import pkgutil
from flask import Flask
from flask_talisman import Talisman
from flask import request
import logging
from sqlalchemy import event
logging.basicConfig()
logging.getLogger("sqlalchemy.engine").setLevel(logging.INFO)
SQLALCHEMY_ENGINE_OPTIONS = {
'pool_size': 32,
'pool_recycle': 4,
'pool_pre_ping': True,
'logging_name': 'PoolLog',
'pool_use_lifo': True,
'pool_timeout': 2
}
app = Flask(__name__)
def change_url():
base_url = request.base_url
if request.headers.get('X-FORWARDED-PROTO', 'http') == 'https' and request.path not in ('/up', '/up/'):
request.base_url = base_url.replace('http://', 'https://')
app.before_request(change_url)
csp = {
# 'default-src': ['\'self\'',
# '\'unsafe-inline\''],
# 'script-src': '\'self\'',
# 'img-src': '*',
}
talisman = Talisman(
app,
content_security_policy=csp,
content_security_policy_nonce_in=['script-src']
)
app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv('SQLALCHEMY_DATABASE_URI')
app.config['SECRET_KEY'] = os.getenv('SECRET_KEY')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = 'SQLALCHEMY_TRACK_MODIFICATIONS' in os.environ
app.config['SQLALCHEMY_ENGINE_OPTIONS'] = SQLALCHEMY_ENGINE_OPTIONS
app.config['SQLALCHEMY_RECORD_QUERIES'] = 'SQLALCHEMY_RECORD_QUERIES' in os.environ
app.config['SQLALCHEMY_ECHO'] = 'SQLALCHEMY_ECHO' in os.environ
app.config['FLASK_ADMIN_SWATCH'] = str(os.getenv('FLASK_ADMIN_SWATCH', default='superhero'))