forked from webcompat/webcompat.com
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathenvironment.py
166 lines (145 loc) · 6.79 KB
/
environment.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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
"""Generic configuration for the project."""
from distutils.util import strtobool
import os
# Define the application base directory
BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
DATA_PATH = os.path.join(BASE_DIR, 'data')
# Add the data/ directory if it doesn't exist.
if not os.path.exists(DATA_PATH):
os.makedirs(DATA_PATH)
# the PRODUCTION and DEVELOPMENT environment variables are set in uwsgi.conf
# on the webcompat server. If they're not set, they will default to None
PRODUCTION = os.environ.get('PRODUCTION')
# locally, we refer to this as STAGING
STAGING = os.environ.get('DEVELOPMENT')
# Are we serving the app from localhost?
LOCALHOST = not PRODUCTION and not STAGING
if PRODUCTION:
GITHUB_CLIENT_ID = os.environ.get('PROD_GITHUB_CLIENT_ID')
GITHUB_CLIENT_SECRET = os.environ.get('PROD_GITHUB_CLIENT_SECRET')
GITHUB_CALLBACK_URL = os.environ.get('PROD_GITHUB_CALLBACK_URL')
HOOK_SECRET_KEY = os.environ.get('HOOK_SECRET_KEY')
ISSUES_REPO_URI = 'webcompat/web-bugs/issues'
PRIVATE_REPO_URI = 'webcompat/web-bugs-private/issues'
PRIVATE_REPO_MILESTONE = 13
OAUTH_TOKEN = os.environ.get('PROD_OAUTH_TOKEN')
SECRET_KEY = os.environ.get('PROD_SECRET_KEY')
UPLOADS_DEFAULT_DEST = os.environ.get('PROD_UPLOADS_DEFAULT_DEST')
UPLOADS_DEFAULT_URL = os.environ.get('PROD_UPLOADS_DEFAULT_URL')
ANONYMOUS_REPORTING_ENABLED = strtobool(
os.environ.get("PROD_ANON_REPORTING", "off")
)
BUGBUG_HTTP_SERVER = "https://bugbug.herokuapp.com"
CLASSIFIER_PATH = "needsdiagnosis/predict/github/webcompat/web-bugs-private" # noqa
AUTOCLOSED_MILESTONE_ID = 15
ES_URL = os.environ.get('ES_URL')
ES_API_KEY_ID = os.environ.get('ES_API_KEY_ID')
ES_API_KEY = os.environ.get('ES_API_KEY')
if STAGING:
GITHUB_CLIENT_ID = os.environ.get('STAGING_GITHUB_CLIENT_ID')
GITHUB_CLIENT_SECRET = os.environ.get('STAGING_GITHUB_CLIENT_SECRET')
GITHUB_CALLBACK_URL = os.environ.get('STAGING_GITHUB_CALLBACK_URL')
HOOK_SECRET_KEY = os.environ.get('HOOK_SECRET_KEY')
ISSUES_REPO_URI = 'webcompat/webcompat-tests/issues'
PRIVATE_REPO_URI = 'webcompat/webcompat-tests-private/issues'
PRIVATE_REPO_MILESTONE = 1
OAUTH_TOKEN = os.environ.get('STAGING_OAUTH_TOKEN')
SECRET_KEY = os.environ.get('STAGING_SECRET_KEY')
UPLOADS_DEFAULT_DEST = os.environ.get('STAGING_UPLOADS_DEFAULT_DEST')
UPLOADS_DEFAULT_URL = os.environ.get('STAGING_UPLOADS_DEFAULT_URL')
ANONYMOUS_REPORTING_ENABLED = strtobool(
os.environ.get("STAGING_ANON_REPORTING", "off")
)
BUGBUG_HTTP_SERVER = "https://bugbug.herokuapp.com"
CLASSIFIER_PATH = "needsdiagnosis/predict/github/webcompat/webcompat-tests-private" # noqa
AUTOCLOSED_MILESTONE_ID = 5
ES_URL = os.environ.get('ES_URL')
ES_API_KEY_ID = os.environ.get('ES_API_KEY_ID')
ES_API_KEY = os.environ.get('ES_API_KEY')
if LOCALHOST:
# for now we are using .env only on localhost
from dotenv import load_dotenv
load_dotenv(os.path.join(BASE_DIR, '.env'))
GITHUB_CLIENT_ID = os.environ.get('GITHUB_CLIENT_ID') or os.environ.get('FAKE_ID') # noqa
GITHUB_CLIENT_SECRET = os.environ.get('GITHUB_CLIENT_SECRET') or os.environ.get('FAKE_SECRET') # noqa
ISSUES_REPO_URI = 'webcompat/webcompat-tests/issues'
PRIVATE_REPO_URI = 'webcompat/webcompat-tests-private/issues'
PRIVATE_REPO_MILESTONE = 1
UPLOADS_DEFAULT_DEST = BASE_DIR + '/uploads/'
UPLOADS_DEFAULT_URL = 'http://localhost:5000/uploads/'
OAUTH_TOKEN = os.environ.get('OAUTH_TOKEN')
SECRET_KEY = os.environ.get('SECRET_KEY') or 'NO SECRETS'
HOOK_SECRET_KEY = os.environ.get('HOOK_SECRET_KEY') or 'SECRETS'
ANONYMOUS_REPORTING_ENABLED = strtobool(
os.environ.get("ANONYMOUS_REPORTING", "on")
)
AB_EXPERIMENTS = strtobool(
os.environ.get("AB_EXPERIMENT", "off")
)
BUGBUG_HTTP_SERVER = "http://0.0.0.0:8000"
CLASSIFIER_PATH = "needsdiagnosis/predict/github/webcompat/webcompat-tests-private" # noqa
AUTOCLOSED_MILESTONE_ID = 5
ES_URL = os.environ.get('ES_URL')
ES_API_KEY_ID = os.environ.get('ES_API_KEY_ID')
ES_API_KEY = os.environ.get('ES_API_KEY')
# BUG STATUS
# The id will be initialized when the app is started.
STATUSES = {
'needstriage': {'id': 0, 'order': 1, 'state': 'open'},
'needsdiagnosis': {'id': 0, 'order': 2, 'state': 'open'},
'needscontact': {'id': 0, 'order': 3, 'state': 'open'},
'contactready': {'id': 0, 'order': 4, 'state': 'open'},
'sitewait': {'id': 0, 'order': 5, 'state': 'open'},
'duplicate': {'id': 0, 'order': 1, 'state': 'closed'},
'fixed': {'id': 0, 'order': 2, 'state': 'closed'},
'incomplete': {'id': 0, 'order': 3, 'state': 'closed'},
'invalid': {'id': 0, 'order': 4, 'state': 'closed'},
'moved': {'id': 0, 'order': 5, 'state': 'closed'},
'non-compat': {'id': 0, 'order': 6, 'state': 'closed'},
'wontfix': {'id': 0, 'order': 7, 'state': 'closed'},
'worksforme': {'id': 0, 'order': 8, 'state': 'closed'}}
# We don't need to compute for every requests.
OPEN_STATUSES = [status for status in STATUSES
if STATUSES[status]['state'] == 'open']
# Messages Configuration
CSS_FIX_ME = """
This resource doesn't exist anymore.
See https://github.com/webcompat/css-fixme/
for more details."""
IS_BLOCKED_DOMAIN = ('Anonymous reporting for domain {0} '
'is temporarily disabled. Please contact '
'for more details.')
IS_DARKNET_DOMAIN = ('Reporting for .onion domains is disabled.'
'Please contact [email protected] '
'for more details.')
MESSAGE_410 = """
All those moments will be lost in time…
like tears in rain…
Time to die.
– Blade Runner
This resource doesn't exist anymore."""
WELL_KNOWN_ALL = """
Sorry dear bot,
the route /.well-known/{subpath} doesn't exist.
Nothing behind me, everything ahead of me, as is ever so on the road.
- Jack Kerouac, On the Road."""
WELL_KNOWN_SECURITY = """Contact: mailto:[email protected]
Contact: mailto:[email protected]
"""
# AB setup
# Comma separated list of user IDs to exempt from experiments
AB_EXEMPT_USERS = os.environ.get('AB_EXEMPT_USERS', '').split(',')
# SHA reference for the current deployed version
# The Git SHA is written in data/ at deployment time.
# This is used in views.py for /.well-known/deployed-version route
try:
with open(os.path.join(DATA_PATH, 'sha.txt')) as f:
SHA_VERSION = (f.read(), 200)
except FileNotFoundError as oops:
SHA_VERSION = ('no sha.', 404)