-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathconfig.py
124 lines (104 loc) · 4.59 KB
/
config.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# -*- coding: utf-8 -*-
"""Configuration Module
Module that contains the Flask Configuration Class
"""
import os
from dotenv import load_dotenv
basedir = os.path.abspath(os.path.dirname(__file__))
load_dotenv(os.path.join(basedir, '.flaskenv'))
class Config(object):
"""Configuration class
This class contains all of the global configuration variables needed for
the CONP Portal. Ideally, variables such as secret keys and such should
be set by environment variable rather than explicitely here.
"""
FLASK_ENV = os.environ.get('FLASK_ENV')
SECRET_KEY = os.environ.get('SECRET_KEY') or "conp-secret-key-for-here"
DATA_PATH = os.environ.get('DATA_PATH') or os.path.join(
basedir, "app/static/data")
DATASET_CACHE_PATH = os.environ.get('DATASET_CACHE_PATH') or os.path.join(
basedir, "app/static/data/.cache/conp-dataset")
SQLALCHEMY_TRACK_MODIFICATIONS = os.environ.get(
'SQLALCHEMY_TRACK_MODIFICATIONS') or False
MAIL_SERVER = os.environ.get('MAIL_SERVER')
MAIL_PORT = int(os.environ.get('MAIL_PORT') or 25)
MAIL_USE_TLS = os.environ.get('MAIL_USE_TLS') is not None
MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
MAIL_DEFAULT_SENDER = '"CONP-PCNO Portal" <[email protected]>'
ADMINS = [os.environ.get('ADMIN_EMAIL')] or ['[email protected]']
LOG_TO_STDOUT = True
TEMPLATES_AUTO_RELOAD = True
# Flask-User Settings
USER_APP_NAME = "CONP-PCNO Data Portal"
USER_ENABLE_CHANGE_PASSWORD = True
USER_ENABLE_CHANGE_USERNAME = False
USER_ENABLE_CONFIFM_EMAIL = True
USER_ENABLE_FORGOT_PASSWORD = True
USER_ENABLE_EMAIL = True
USER_ENABLE_REGISTRATION = True
USER_REQUIRE_RETYPE_PASSWORD = True
USER_ENABLE_USERNAME = False
USER_EMAIL_SENDER = USER_APP_NAME
USER_EMAIL_SENDER_EMAIL = ADMINS[0]
USER_AFTER_LOGIN_ENDPOINT = "main.index"
USER_AFTER_LOGOUT_ENDPOINT = "main.index"
USER_AFTER_REGISTER_ENDPOINT = "auth.confirmation_sent"
USER_ALLOW_LOGIN_WITHOUT_CONFIRMED_EMAIL = False
USER_AUTO_LOGIN_AFTER_REGISTER = False
USER_AUTO_LOGIN_AFTER_CONFIRM = True
USER_LOGIN_TEMPLATE = "auth/flask_user/login.html"
USER_FORGOT_PASSWORD_TEMPLATE = "auth/flask_user/forgot_password.html"
USER_REGISTER_TEMPLATE = "auth/flask_user/register.html"
USER_RESEND_CONFIRM_EMAIL_TEMPLATE = "auth/flask_user/resend_confirm_email.html"
USER_RESET_PASSWORD_TEMPLATE = "auth/flask_user/reset_password.html"
USER_EDIT_USER_PROFILE_TEMPLATE = "auth/flask_user/edit_user_profile.html"
USER_CONFIRM_EMAIL_TEMPLATE = "auth/flask_user/emails/confirm_email"
USER_REGISTERED_EMAIL_TEMPLATE = "auth/flask_user/emails/registered"
# ORCID PARAMETERS, must come from .flaskenv file!
ORCID_OAUTH_CLIENT_ID = os.environ.get("ORCID_OAUTH_CLIENT_ID")
ORCID_OAUTH_CLIENT_SECRET = os.environ.get("ORCID_OAUTH_CLIENT_SECRET")
# GitHub webhooks
WEBHOOKS_SECRET = os.environ.get("WEBHOOKS_SECRET")
# GitHub token
GITHUB_PAT = os.environ.get("GITHUB_PAT")
# Matomo
MATOMO_SERVER_URL = os.environ.get("MATOMO_SERVER_URL")
MATOMO_SITE_ID = os.environ.get("MATOMO_SITE_ID", "2")
MATOMO_TOKEN_AUTH = os.environ.get("MATOMO_TOKEN_AUTH")
# ARK identifier NAAN for CONP
ARK_CONP_NAAN = os.environ.get("ARK_CONP_NAAN") or "99999"
# Nexus SPARQL endpoint
# TODO remove hardcoded url
NEXUS_SPARQL_ENDPOINT = os.environ.get(
"NEXUS_SPARQL_ENDPOINT",
"https://reservoir.global/v1/views/Public/CONP/graph/sparql"
)
# Dataset cache
DATASET_CACHE_PATH = os.environ.get("DATASET_CACHE_PATH")
# Experiments
EXPERIMENTS_UPLOAD_DIRECTORY = os.path.join(
os.path.abspath(os.path.dirname(__file__)),
"data",
"experiments"
)
class DevelopmentConfig(Config):
"""This is the config for Development"""
DEBUG = True
## ADD ALEX
SEND_FILE_MAX_AGE_DEFAULT = 0
TEMPLATES_AUTO_RELOAD = True
SQLALCHEMY_DATABASE_URI = (os.environ.get('DATABASE_URL')
or "sqlite:///{}".format(os.path.join(basedir, "app.db")))
class TestingConfig(Config):
"""This is the config used for pytest"""
DEBUG = True
SQLALCHEMY_DATABASE_URI = "sqlite:///{}".format(
os.path.join(basedir, "test.db"))
TESTING = True
class ProductionConfig(Config):
"""This is for when we are full on production, needs to be elaborated"""
DEBUG = False
TESTING = False
SQLALCHEMY_DATABASE_URI = (os.environ.get('DATABASE_URL')
or "sqlite:///{}".format(os.path.join(basedir, "app.db")))