aboutsummaryrefslogtreecommitdiff
path: root/src/conf.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/conf.py')
-rw-r--r--src/conf.py122
1 files changed, 122 insertions, 0 deletions
diff --git a/src/conf.py b/src/conf.py
new file mode 100644
index 00000000..1827a7b3
--- /dev/null
+++ b/src/conf.py
@@ -0,0 +1,122 @@
+#! /usr/bin/env python
+# -*- coding: utf-8 -*-
+""" Program variables.
+
+This file contain the variables used by the application.
+"""
+import os
+import logging
+
+BASE_DIR = os.path.abspath(os.path.dirname(__file__))
+PATH = os.path.abspath(".")
+
+# available languages
+LANGUAGES = {
+ 'en': 'English',
+ 'fr': 'French'
+}
+
+TIME_ZONE = {
+ "en": "US/Eastern",
+ "fr": "Europe/Paris"
+}
+
+ON_HEROKU = int(os.environ.get('HEROKU', 0)) == 1
+DEFAULTS = {"platform_url": "https://JARR.herokuapp.com/",
+ "admin_email": "root@jarr.localhost",
+ "postmark_api_key": "",
+ "recaptcha_public_key": "",
+ "recaptcha_private_key": "",
+ "nb_worker": "100",
+ "api_login": "",
+ "api_passwd": "",
+ "default_max_error": "3",
+ "log_path": "jarr.log",
+ "log_level": "info",
+ "user_agent": "JARR "
+ "(https://github.com/JARR-aggregator)",
+ "resolve_article_url": "false",
+ "http_proxy": "",
+ "secret": "",
+ "enabled": "false",
+ "notification_email": "jarr@no-reply.com",
+ "tls": "false",
+ "ssl": "true",
+ "host": "0.0.0.0",
+ "port": "5000",
+ "crawling_method": "classic",
+ "webzine_root": "/tmp",
+ }
+
+if not ON_HEROKU:
+ try:
+ import configparser as confparser
+ except:
+ import ConfigParser as confparser
+ # load the configuration
+ config = confparser.SafeConfigParser(defaults=DEFAULTS)
+ config.read(os.path.join(BASE_DIR, "conf/conf.cfg"))
+else:
+ class Config(object):
+ def get(self, _, name):
+ return os.environ.get(name.upper(), DEFAULTS.get(name))
+
+ def getint(self, _, name):
+ return int(self.get(_, name))
+
+ def getboolean(self, _, name):
+ value = self.get(_, name)
+ if value == 'true':
+ return True
+ elif value == 'false':
+ return False
+ return None
+ config = Config()
+
+
+PLATFORM_URL = config.get('misc', 'platform_url')
+ADMIN_EMAIL = config.get('misc', 'admin_email')
+RECAPTCHA_PUBLIC_KEY = config.get('misc', 'recaptcha_public_key')
+RECAPTCHA_PRIVATE_KEY = config.get('misc',
+ 'recaptcha_private_key')
+LOG_PATH = config.get('misc', 'log_path')
+NB_WORKER = config.getint('misc', 'nb_worker')
+API_LOGIN = config.get('crawler', 'api_login')
+API_PASSWD = config.get('crawler', 'api_passwd')
+
+WHOOSH_ENABLED = True
+
+SQLALCHEMY_DATABASE_URI = config.get('database', 'database_url')
+
+HTTP_PROXY = config.get('crawler', 'http_proxy')
+USER_AGENT = config.get('crawler', 'user_agent')
+RESOLVE_ARTICLE_URL = config.getboolean('crawler',
+ 'resolve_article_url')
+DEFAULT_MAX_ERROR = config.getint('crawler',
+ 'default_max_error')
+CRAWLING_METHOD = config.get('crawler', 'crawling_method')
+
+LOG_LEVEL = {'debug': logging.DEBUG,
+ 'info': logging.INFO,
+ 'warn': logging.WARN,
+ 'error': logging.ERROR,
+ 'fatal': logging.FATAL}[config.get('misc', 'log_level')]
+
+WEBSERVER_HOST = config.get('webserver', 'host')
+WEBSERVER_PORT = config.getint('webserver', 'port')
+WEBSERVER_SECRET = config.get('webserver', 'secret')
+
+NOTIFICATION_EMAIL = config.get('notification', 'notification_email')
+NOTIFICATION_HOST = config.get('notification', 'host')
+NOTIFICATION_PORT = config.getint('notification', 'port')
+NOTIFICATION_TLS = config.getboolean('notification', 'tls')
+NOTIFICATION_SSL = config.getboolean('notification', 'ssl')
+NOTIFICATION_USERNAME = config.get('notification', 'username')
+NOTIFICATION_PASSWORD = config.get('notification', 'password')
+POSTMARK_API_KEY = config.get('notification', 'postmark_api_key')
+
+WEBZINE_ROOT = config.get('webserver', 'webzine_root')
+
+CSRF_ENABLED = True
+# slow database query threshold (in seconds)
+DATABASE_QUERY_TIMEOUT = 0.5
bgstack15