aboutsummaryrefslogtreecommitdiff
path: root/wqflask/utility/tools.py
diff options
context:
space:
mode:
Diffstat (limited to 'wqflask/utility/tools.py')
-rw-r--r--wqflask/utility/tools.py70
1 files changed, 58 insertions, 12 deletions
diff --git a/wqflask/utility/tools.py b/wqflask/utility/tools.py
index bb8241f5..77cb6ac5 100644
--- a/wqflask/utility/tools.py
+++ b/wqflask/utility/tools.py
@@ -3,12 +3,16 @@
import os
import sys
+import json
+
from wqflask import app
# Use the standard logger here to avoid a circular dependency
import logging
logger = logging.getLogger(__name__ )
+OVERRIDES = {}
+
def get_setting(command_id,guess=None):
"""Resolve a setting from the environment or the global settings in
app.config, with valid_path is a function checking whether the
@@ -44,13 +48,15 @@ def get_setting(command_id,guess=None):
logger.debug("Looking for "+command_id+"\n")
command = value(os.environ.get(command_id))
if command is None or command == "":
- # ---- Check whether setting exists in app
- command = value(app.config.get(command_id))
+ command = OVERRIDES.get(command_id)
if command is None:
- command = value(guess)
- if command is None or command == "":
- print command
- raise Exception(command_id+' setting unknown or faulty (update default_settings.py?).')
+ # ---- Check whether setting exists in app
+ command = value(app.config.get(command_id))
+ if command is None:
+ command = value(guess)
+ if command is None or command == "":
+ # print command
+ raise Exception(command_id+' setting unknown or faulty (update default_settings.py?).')
logger.debug("Set "+command_id+"="+str(command))
return command
@@ -92,6 +98,10 @@ def gemma_command(guess=None):
def plink_command(guess=None):
return valid_bin(get_setting("PLINK_COMMAND",guess))
+def flat_file_exists(subdir):
+ base = get_setting("GENENETWORK_FILES")
+ return valid_path(base+"/"+subdir)
+
def flat_files(subdir=None):
base = get_setting("GENENETWORK_FILES")
if subdir:
@@ -103,6 +113,17 @@ def assert_dir(dir):
raise Exception("ERROR: can not find directory "+dir)
return dir
+def assert_writable_dir(dir):
+ try:
+ fn = dir + "/test.txt"
+ fh = open( fn, 'w' )
+ fh.write("I am writing this text to the file\n")
+ fh.close()
+ os.remove(fn)
+ except IOError:
+ raise Exception('Unable to write test.txt to directory ' + dir )
+ return dir
+
def mk_dir(dir):
if not valid_path(dir):
os.makedirs(dir)
@@ -146,7 +167,10 @@ def locate_ignore_error(name, subdir=None):
return None
def tempdir():
- return valid_path(get_setting("TEMPDIR","/tmp"))
+ """
+ Get UNIX TMPDIR by default
+ """
+ return valid_path(get_setting("TMPDIR","/tmp"))
BLUE = '\033[94m'
GREEN = '\033[92m'
@@ -160,18 +184,21 @@ def show_settings():
log_level = getattr(logging, LOG_LEVEL.upper())
logging.basicConfig(level=log_level)
+ logger.info(OVERRIDES)
logger.info(BLUE+"Mr. Mojo Risin 2"+ENDC)
- print "runserver.py: ****** The webserver has the following configuration ******"
+ print "runserver.py: ****** Webserver configuration ******"
keylist = app.config.keys()
keylist.sort()
for k in keylist:
try:
- print("%s %s%s%s%s" % (k,BLUE,BOLD,get_setting(k),ENDC))
+ print("%s: %s%s%s%s" % (k,BLUE,BOLD,get_setting(k),ENDC))
except:
- print("%s %s%s%s%s" % (k,GREEN,BOLD,app.config[k],ENDC))
+ print("%s: %s%s%s%s" % (k,GREEN,BOLD,app.config[k],ENDC))
# Cached values
+GN_VERSION = get_setting('GN_VERSION')
+HOME = get_setting('HOME')
WEBSERVER_MODE = get_setting('WEBSERVER_MODE')
GN_SERVER_URL = get_setting('GN_SERVER_URL')
SQL_URI = get_setting('SQL_URI')
@@ -184,8 +211,27 @@ LOG_FORMAT = "%(message)s" # not yet in use
USE_REDIS = get_setting_bool('USE_REDIS')
USE_GN_SERVER = get_setting_bool('USE_GN_SERVER')
+GENENETWORK_FILES = get_setting('GENENETWORK_FILES')
+
PYLMM_COMMAND = pylmm_command()
GEMMA_COMMAND = gemma_command()
PLINK_COMMAND = plink_command()
-FLAT_FILES = flat_files()
-TEMPDIR = tempdir()
+TEMPDIR = tempdir() # defaults to UNIX TMPDIR
+
+from six import string_types
+
+if os.environ.get('WQFLASK_OVERRIDES'):
+ jsonfn = get_setting('WQFLASK_OVERRIDES')
+ logger.error("WQFLASK_OVERRIDES: %s" % jsonfn)
+ with open(jsonfn) as data_file:
+ overrides = json.load(data_file)
+ for k in overrides:
+ cmd = overrides[k]
+ if isinstance(cmd, string_types):
+ OVERRIDES[k] = eval(cmd)
+ else:
+ OVERRIDES[k] = cmd
+ logger.debug(OVERRIDES)
+
+assert_dir(get_setting("JS_BIODALLIANCE"))
+assert_dir(get_setting("JS_TWITTER_POST_FETCHER"))