aboutsummaryrefslogtreecommitdiff
path: root/conf.py
diff options
context:
space:
mode:
Diffstat (limited to 'conf.py')
-rw-r--r--conf.py133
1 files changed, 63 insertions, 70 deletions
diff --git a/conf.py b/conf.py
index 03ff23a2..bd7ba0e9 100644
--- a/conf.py
+++ b/conf.py
@@ -1,12 +1,11 @@
#! /usr/bin/env python
-#-*- coding: utf-8 -*-
-
+# -*- coding: utf-8 -*-
""" Program variables.
This file contain the variables used by the application.
"""
-
import os
+import logging
basedir = os.path.abspath(os.path.dirname(__file__))
PATH = os.path.abspath(".")
@@ -29,11 +28,11 @@ DEFAULTS = {"python": "/usr/bin/python3.4",
"nb_worker": "100",
"default_max_error": "3",
"log_path": "pyaggr3g470r.log",
- "user_agent": "pyAggr3g470r " \
+ "log_level": "info",
+ "user_agent": "pyAggr3g470r "
"(https://bitbucket.org/cedricbonhomme/pyaggr3g470r)",
"resolve_article_url": "false",
"http_proxy": "",
- "debug": "true",
"secret": "",
"enabled": "false",
"email": "",
@@ -42,7 +41,8 @@ DEFAULTS = {"python": "/usr/bin/python3.4",
"host": "0.0.0.0",
"port": "5000",
"crawling_method": "classic",
-}
+ "webzine_root": "/tmp",
+ }
if not ON_HEROKU:
try:
@@ -52,71 +52,64 @@ if not ON_HEROKU:
# load the configuration
config = confparser.SafeConfigParser(defaults=DEFAULTS)
config.read(os.path.join(basedir, "conf/conf.cfg"))
-
- 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')
- PYTHON = config.get('misc', 'python')
- NB_WORKER = config.getint('misc', 'nb_worker')
-
- WHOOSH_ENABLED = True
-
- SQLALCHEMY_DATABASE_URI = config.get('database', 'uri')
-
- HTTP_PROXY = config.get('feedparser', 'http_proxy')
- USER_AGENT = config.get('feedparser', 'user_agent')
- RESOLVE_ARTICLE_URL = config.getboolean('feedparser',
- 'resolve_article_url')
- DEFAULT_MAX_ERROR = config.getint('feedparser',
- 'default_max_error')
- CRAWLING_METHOD = config.get('feedparser', 'crawling_method')
-
- WEBSERVER_DEBUG = config.getboolean('webserver', 'debug')
- WEBSERVER_HOST = config.get('webserver', 'host')
- WEBSERVER_PORT = config.getint('webserver', 'port')
- WEBSERVER_SECRET = config.get('webserver', 'secret')
-
- NOTIFICATION_EMAIL = config.get('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')
-
- WEBZINE_ROOT = PATH + "/pyaggr3g470r/var/export/"
-
else:
- PLATFORM_URL = os.environ.get('PLATFORM_URL',
- 'https://pyaggr3g470r.herokuapp.com/')
- ADMIN_EMAIL = os.environ.get('ADMIN_EMAIL', '')
- RECAPTCHA_PUBLIC_KEY = os.environ.get('RECAPTCHA_PUBLIC_KEY', '')
- RECAPTCHA_PRIVATE_KEY = os.environ.get('RECAPTCHA_PRIVATE_KEY', '')
- LOG_PATH = os.environ.get('LOG_PATH', 'pyaggr3g470r.log')
- PYTHON = 'python'
-
- SQLALCHEMY_DATABASE_URI = os.environ['DATABASE_URL']
-
- HTTP_PROXY = ""
- USER_AGENT = "Mozilla/5.0 " \
- "(X11; Debian; Linux x86_64; rv:28.0) Gecko/20100101 Firefox/28.0"
- RESOLVE_ARTICLE_URL = int(os.environ.get('RESOLVE_ARTICLE_URL', 0)) == 1
- DEFAULT_MAX_ERROR = int(os.environ.get('DEFAULT_MAX_ERROR', 6))
- CRAWLING_METHOD = os.environ.get('CRAWLING_METHOD', DEFAULTS['crawling_method'])
-
- WEBSERVER_DEBUG = False
- WEBSERVER_HOST = '0.0.0.0'
- WEBSERVER_PORT = int(os.environ.get('PORT', 5000))
- WEBSERVER_SECRET = os.environ.get('SECRET_KEY', None)
-
- NOTIFICATION_EMAIL = os.environ.get('NOTIFICATION_EMAIL', '')
- POSTMARK_API_KEY = os.environ.get('POSTMARK_API_KEY', '')
-
- WEBZINE_ROOT = "/tmp/"
-
+ 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')
+PYTHON = config.get('misc', 'python')
+NB_WORKER = config.getint('misc', 'nb_worker')
+
+WHOOSH_ENABLED = True
+
+SQLALCHEMY_DATABASE_URI = config.get('database', 'uri')
+
+HTTP_PROXY = config.get('feedparser', 'http_proxy')
+USER_AGENT = config.get('feedparser', 'user_agent')
+RESOLVE_ARTICLE_URL = config.getboolean('feedparser',
+ 'resolve_article_url')
+DEFAULT_MAX_ERROR = config.getint('feedparser',
+ 'default_max_error')
+CRAWLING_METHOD = config.get('feedparser', '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', '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')
+
+WEBZINE_ROOT = config.get('webserver', 'webzine_root')
CSRF_ENABLED = True
# slow database query threshold (in seconds)
bgstack15