forked from Scifabric/pybossa
-
Notifications
You must be signed in to change notification settings - Fork 1
/
settings_local.py
322 lines (261 loc) · 10.4 KB
/
settings_local.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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
import os
# -*- coding: utf8 -*-
# This file is part of PyBossa.
#
# Copyright (C) 2013 SF Isle of Man Limited
#
# PyBossa is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# PyBossa is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with PyBossa. If not, see <http://www.gnu.org/licenses/>.
# DEBUG = False
## host for local development
# HOST = '0.0.0.0'
## use SERVER_NAME instead of HOST for production environment with real URLs
# SERVER_NAME = 'somecoolurl.com'
## PORT used for local development, in production environment let nginx handle this
# PORT = 5000
DEBUG = os.environ.get("PYBOSSA_DEBUG", "False") == "True"
# webserver host and port
HOST = os.environ.get("PYBOSSA_HOST", "0.0.0.0")
PORT = os.environ.get("PYBOSSA_PORT", 5000)
SERVER_NAME = os.environ.get("PYBOSSA_SERVER_NAME", None)
SECRET = os.environ.get("PYBOSSA_SECRET", "foobar")
SECRET_KEY = os.environ.get("PYBOSSA_SECRET_KEY", "my-session-secret")
SQLALCHEMY_DATABASE_URI = os.getenv("DATABASE_URL")
SHOW_NAV = True if os.getenv("SHOW_NAV", "False") == "True" else False
ENVIRONMENT = os.environ.get("ENV_NAME", "development")
PUBLIC_URL = os.environ.get("PYBOSSA_DOMAIN", "localhost")
##Slave configuration for DB
# SQLALCHEMY_BINDS = {
# 'slave': 'postgresql://user:password@server/db'
# }
ITSDANGEROUSKEY = os.environ.get("PYBOSSA_ITSDANGEROUS", "its-dangerous-key")
## project configuration
BRAND = "PyBossa"
TITLE = "PyBossa"
LOGO = "default_logo.svg"
COPYRIGHT = "Set Your Institution"
DESCRIPTION = "Set the description in your config"
TERMSOFUSE = "https://okfn.org/terms-of-use/"
DATAUSE = "https://opendatacommons.org/licenses/by/"
CONTACT_EMAIL = "[email protected]"
CONTACT_TWITTER = "PyBossa"
## Default number of projects per page
## APPS_PER_PAGE = 20
## External Auth providers
# TWITTER_CONSUMER_KEY=''
# TWITTER_CONSUMER_SECRET=''
# FACEBOOK_APP_ID=''
# FACEBOOK_APP_SECRET=''
# GOOGLE_CLIENT_ID=''
# GOOGLE_CLIENT_SECRET=''
## Supported Languages
## NOTE: You need to create a symbolic link to the translations folder, otherwise
## this wont work.
## ln -s pybossa/themes/your-theme/translations pybossa/translations
# DEFAULT_LOCALE = 'en'
# LOCALES = [('en', 'English'), ('es', u'Español'),
# ('it', 'Italiano'), ('fr', u'Français'),
# ('ja', u'日本語'),('pt_BR','Brazilian Portuguese')]
## list of administrator emails to which error emails get sent
# ADMINS = ['[email protected]']
## CKAN URL for API calls
# CKAN_NAME = "Demo CKAN server"
# CKAN_URL = "http://demo.ckan.org"
## logging config
# Sentry configuration
# SENTRY_DSN=''
## set path to enable
# LOG_FILE = '/path/to/log/file'
## Optional log level
# import logging
# LOG_LEVEL = logging.DEBUG
## Mail setup
MAIL_SERVER = "localhost"
MAIL_USERNAME = None
MAIL_PASSWORD = None
MAIL_PORT = 25
MAIL_FAIL_SILENTLY = False
MAIL_DEFAULT_SENDER = "PyBossa Support <[email protected]>"
## Announcement messages
## Use any combination of the next type of messages: root, user, and app owners
## ANNOUNCEMENT = {'admin': 'Root Message', 'user': 'User Message', 'owner': 'Owner Message'}
## Enforce Privacy Mode, by default is disabled
## This config variable will disable all related user pages except for admins
## Stats, top users, leaderboard, etc
ENFORCE_PRIVACY = False
## Cache setup. By default it is enabled
## Redis Sentinel
# List of Sentinel servers (IP, port)
REDIS_SENTINEL = [
(
os.environ.get("REDIS_SENTINEL_HOST", "localhost"),
os.environ.get("REDIS_SENTINEL_PORT", 26379),
)
]
REDIS_MASTER = os.environ.get("REDIS_MASTER_NAME", "mymaster")
REDIS_DB = 0
REDIS_KEYPREFIX = "pybossa_cache"
REDIS_SOCKET_TIMEOUT = None
REDIS_RETRY_ON_TIMEOUT = True
## Allowed upload extensions
ALLOWED_EXTENSIONS = ["js", "css", "png", "jpg", "jpeg", "gif", "zip"]
## If you want to use the local uploader configure which folder
UPLOAD_METHOD = "local"
UPLOAD_FOLDER = "uploads"
## If you want to use Rackspace for uploads, configure it here
# RACKSPACE_USERNAME = 'username'
# RACKSPACE_API_KEY = 'apikey'
# RACKSPACE_REGION = 'ORD'
## Default number of users shown in the leaderboard
# LEADERBOARD = 20
## Default shown presenters
# PRESENTERS = ["basic", "image", "sound", "video", "map", "pdf"]
# Default Google Docs spreadsheet template tasks URLs
TEMPLATE_TASKS = {
"image": "https://docs.google.com/spreadsheet/ccc?key=0AsNlt0WgPAHwdHFEN29mZUF0czJWMUhIejF6dWZXdkE&usp=sharing",
"sound": "https://docs.google.com/spreadsheet/ccc?key=0AsNlt0WgPAHwdEczcWduOXRUb1JUc1VGMmJtc2xXaXc&usp=sharing",
"video": "https://docs.google.com/spreadsheet/ccc?key=0AsNlt0WgPAHwdGZ2UGhxSTJjQl9YNVhfUVhGRUdoRWc&usp=sharing",
"map": "https://docs.google.com/spreadsheet/ccc?key=0AsNlt0WgPAHwdGZnbjdwcnhKRVNlN1dGXy0tTnNWWXc&usp=sharing",
"pdf": "https://docs.google.com/spreadsheet/ccc?key=0AsNlt0WgPAHwdEVVamc0R0hrcjlGdXRaUXlqRXlJMEE&usp=sharing",
}
# Expiration time for password protected project cookies
PASSWD_COOKIE_TIMEOUT = 60 * 30
# Expiration time for account confirmation / password recovery links
ACCOUNT_LINK_EXPIRATION = 5 * 60 * 60
## Ratelimit configuration
# LIMIT = 300
# PER = 15 * 60
# Disable new account confirmation (via email)
ACCOUNT_CONFIRMATION_DISABLED = True
# Mailchimp API key
# MAILCHIMP_API_KEY = "your-key"
# MAILCHIMP_LIST_ID = "your-list-ID"
# Flickr API key and secret
# FLICKR_API_KEY = 'your-key'
# FLICKR_SHARED_SECRET = 'your-secret'
# Dropbox app key
# DROPBOX_APP_KEY = 'your-key'
# Send emails weekly update every
# WEEKLY_UPDATE_STATS = 'Sunday'
# Youtube API server key
# YOUTUBE_API_SERVER_KEY = 'your-key'
# Enable Server Sent Events
# WARNING: this will require to run PyBossa in async mode. Check the docs.
# WARNING: if you don't enable async when serving PyBossa, the server will lock
# WARNING: and it will not work. For this reason, it's disabled by default.
# SSE = False
# Add here any other ATOM feed that you want to get notified.
NEWS_URL = [
"https://github.com/Scifabric/enki/releases.atom",
"https://github.com/Scifabric/pybossa-client/releases.atom",
"https://github.com/Scifabric/pbs/releases.atom",
]
# Pro user features. False will make the feature available to all regular users,
# while True will make it available only to pro users
PRO_FEATURES = {
"auditlog": True,
"webhooks": True,
"updated_exports": True,
"notify_blog_updates": True,
"project_weekly_report": True,
"autoimporter": True,
"better_stats": True,
}
# Libsass style. You can use nested, expanded, compact and compressed
LIBSASS_STYLE = "compressed"
# CORS resources configuration.
# WARNING: Only modify this if you know what you are doing. The below config
# are the defaults, allowing PYBOSSA to have full CORS api.
# For more options, check the Flask-Cors documentation: https://flask-cors.readthedocs.io/en/latest/
# CORS_RESOURCES = {r"/api/*": {"origins": "*",
# "allow_headers": ['Content-Type',
# 'Authorization'],
# "methods": "*"
# }}
# Email notifications for background jobs.
# FAILED_JOBS_MAILS = 7
# FAILED_JOBS_RETRIES = 3
# Language to use stems, full text search, etc. from postgresql.
# FULLTEXTSEARCH_LANGUAGE = 'english'
# Use strict slashes at endpoints, by default True
# This will return a 404 if and endpoint does not have the api/endpoint/
# while if you configured as False, it will return the resource with and without the trailing /
# STRICT_SLASHES = True
# Use SSO on Disqus.com
# DISQUS_SECRET_KEY = 'secret-key'
# DISQUS_PUBLIC_KEY = 'public-key'
# Use Web Push Notifications
# ONESIGNAL_APP_ID = 'Your-app-id'
# ONESIGNAL_API_KEY = 'your-app-key'
# Enable two factor authentication
# ENABLE_TWO_FACTOR_AUTH = True
# Strong password policy for user accounts
# ENABLE_STRONG_PASSWORD = True
# Create new leaderboards based on info field keys from user
# LEADERBOARDS = ['foo', 'bar']
# Unpublish inactive projects
# UNPUBLISH_PROJECTS = True
# Use this config variable to create valid URLs for your SPA
# SPA_SERVER_NAME = 'https://yourserver.com'
# LDAP
# LDAP_HOST = '127.0.0.1'
# LDAP_BASE_DN = 'ou=users,dc=scifabric,dc=com'
# LDAP_USERNAME = 'cn=yourusername,dc=scifabric,dc=com'
# LDAP_PASSWORD = 'yourpassword'
# LDAP_OBJECTS_DN = 'dn'
# LDAP_OPENLDAP = True
# Adapt it to your specific needs in your LDAP org
# LDAP_USER_OBJECT_FILTER = '(&(objectclass=inetOrgPerson)(cn=%s))'
# LDAP_USER_FILTER_FIELD = 'cn'
# LDAP_PYBOSSA_FIELDS = {'fullname': 'givenName',
# 'name': 'uid',
# 'email_addr': 'cn'}
# Flask profiler
# FLASK_PROFILER = {
# "enabled": True,
# "storage": {
# "engine": "sqlite"
# },
# "basicAuth":{
# "enabled": True,
# "username": "admin",
# "password": "admin"
# },
# "ignore": [
# "^/static/.*"
# ]
# }
# Specify which key from the info field of task, task_run or result is going to be used as the root key
# for exporting in CSV format
# TASK_CSV_EXPORT_INFO_KEY = 'key'
# TASK_RUN_CSV_EXPORT_INFO_KEY = 'key2'
# RESULT_CSV_EXPORT_INFO_KEY = 'key3'
# A 32 char string for AES encryption of public IPs.
# NOTE: this is really important, don't use the following one
# as anyone with the source code of pybossa will be able to reverse
# the anonymization of the IPs.
CRYPTOPAN_KEY = os.environ.get(
"PYBOSSA_CRYPTOPAN_KEY", "32-char-str-for-AES-key-and-pad."
)
# TTL for ZIP files of personal data
TTL_ZIP_SEC_FILES = 3
# Instruct PYBOSSA to generate HTTP or HTTPS
PREFERRED_URL_SCHEME = "https"
# Instruct PYBOSSA to generate absolute paths or not for avatars
AVATAR_ABSOLUTE = True
# Inactive users months to send email notification
USER_INACTIVE_NOTIFICATION = 5
# Inactive users months to delete users
USER_INACTIVE_DELETE = 6
# Inactive users email SQL query
INACTIVE_USERS_SQL_QUERY = """SELECT user_id FROM task_run WHERE user_id IS NOT NULL AND to_date(task_run.finish_time, 'YYYY-MM-DD\THH24:MI:SS.US') >= NOW() - '12 month'::INTERVAL AND to_date(task_run.finish_time, 'YYYY-MM-DD\THH24:MI:SS.US') < NOW() - '3 month'::INTERVAL GROUP BY user_id ORDER BY user_id;"""