about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPjotr Prins2016-06-19 16:03:26 +0000
committerPjotr Prins2016-06-19 16:03:26 +0000
commitaae827674cdbe46c7f1ce5d2246bf485a24dbbb3 (patch)
treef6a106c6544c8d68aae29b8a2e3e1ceb3de648b3
parent2214650621ee57b4c427bf8b5cab1128eb06db93 (diff)
downloadgenenetwork2-aae827674cdbe46c7f1ce5d2246bf485a24dbbb3.tar.gz
gn_server: SQL handling
-rw-r--r--etc/default_settings.py1
-rw-r--r--wqflask/dbFunction/webqtlDatabaseFunction.py26
-rw-r--r--wqflask/runserver.py4
-rw-r--r--wqflask/utility/logger.py16
-rw-r--r--wqflask/utility/tools.py1
5 files changed, 38 insertions, 10 deletions
diff --git a/etc/default_settings.py b/etc/default_settings.py
index f3a3e1ea..296ffcb0 100644
--- a/etc/default_settings.py
+++ b/etc/default_settings.py
@@ -41,6 +41,7 @@ LOG_LEVEL_DEBUG = 1         # Debug log level (0-5) (nyi)
 LOG_SQL         = 'False'   # Log SQL/backend calls
 
 USE_REDIS       = True      # REDIS caching (note that redis will be phased out)
+USE_GN_SERVER   = True      # Use GN_SERVER SQL calls
 
 # Path overrides for Genenetwork
 HOME=os.environ['HOME']
diff --git a/wqflask/dbFunction/webqtlDatabaseFunction.py b/wqflask/dbFunction/webqtlDatabaseFunction.py
index 1bc67992..5b968d7e 100644
--- a/wqflask/dbFunction/webqtlDatabaseFunction.py
+++ b/wqflask/dbFunction/webqtlDatabaseFunction.py
@@ -20,11 +20,13 @@
 #
 # This module is used by GeneNetwork project (www.genenetwork.org)
 
+from inspect import stack
 from flask import Flask, g
 
 import MySQLdb
 import string
 from base import webqtlConfig
+from utility.tools import USE_GN_SERVER
 
 from utility.logger import getLogger
 logger = getLogger(__name__ )
@@ -35,13 +37,31 @@ logger = getLogger(__name__ )
 ###########################################################################
 def getCursor():
     try:
+        logger.warning("Creating new MySQLdb cursor")
         con = MySQLdb.Connect(db=webqtlConfig.DB_NAME, host=webqtlConfig.MYSQL_SERVER, user=webqtlConfig.DB_USER, passwd=webqtlConfig.DB_PASSWD)
         cursor = con.cursor()
         return cursor
     except:
         return None
 
+def fetchone(cursor,query):
+    result = g.db.execute("""select Species.Name from Species, InbredSet where InbredSet.Name = %s and InbredSet.SpeciesId = Species.Id""", (group)).fetchone()[0]
+    return cursor.execute(query)
 
+def retrieve_species(group):
+    """Get the species of a group (e.g. returns string "mouse" on "BXD"
+
+    """
+    if USE_GN_SERVER:
+        raise Exception("NYI")
+    else:
+        res = logger.sql(stack()[0][3],"select Species.Name from Species, InbredSet where InbredSet.Name = '%s' and InbredSet.SpeciesId = Species.Id" % (group), g.db.execute)
+        result = res.fetchone()[0]
+
+        # result = g.db.execute("""select Species.Name from Species, InbredSet where InbredSet.Name = %s and InbredSet.SpeciesId = Species.Id""", (group)).fetchone()[0]
+
+    logger.info(result,type(result))
+    return result
 
 ###########################################################################
 #input: cursor, groupName (string)
@@ -78,12 +98,6 @@ def getAllSpecies(cursor=None):
     allSpecies = cursor.fetchall()
     return allSpecies
 
-def retrieve_species(group):
-    logger.debug("retrieve_species",group)
-    logger.sql(""""select Species.Name from Species, InbredSet where InbredSet.Name = %s and InbredSet.SpeciesId = Species.Id""", (group))
-
-    return g.db.execute("""select Species.Name from Species, InbredSet where InbredSet.Name =
-%s and InbredSet.SpeciesId = Species.Id""", (group)).fetchone()[0]
 
 def retrieve_species_id(group):
     return g.db.execute("select SpeciesId from InbredSet where Name = %s", (group)).fetchone()[0]
diff --git a/wqflask/runserver.py b/wqflask/runserver.py
index 9339acf8..12ec904e 100644
--- a/wqflask/runserver.py
+++ b/wqflask/runserver.py
@@ -16,9 +16,11 @@ GREEN = '\033[92m'
 BOLD  = '\033[1m'
 ENDC  = '\033[0m'
 
-
 logger.info("GN2 is running. Visit %shttp://localhost:5003/%s" % (BLUE,ENDC))
 
+import os
+app.config['SECRET_KEY'] = os.urandom(24)
+
 from utility.tools import WEBSERVER_MODE
 
 werkzeug_logger = logging.getLogger('werkzeug')
diff --git a/wqflask/utility/logger.py b/wqflask/utility/logger.py
index bc0578c9..0d374f1a 100644
--- a/wqflask/utility/logger.py
+++ b/wqflask/utility/logger.py
@@ -62,14 +62,24 @@ class GNLogger:
         """Call logging.error for multiple args"""
         self.collect(self.logger.error,*args)
 
+    def infof(self,*args):
+        """Call logging.info for multiple args lazily"""
+        # only evaluate function when logging
+        if self.logger.getEffectiveLevel() < 30:
+            self.collectf(self.logger.debug,*args)
+
     def debugf(self,*args):
         """Call logging.debug for multiple args lazily"""
-        if self.logger.getEffectiveLevel() <= 10:
-            self.debug("Calling debug function!")
+        # only evaluate function when logging
+        if self.logger.getEffectiveLevel() < 20:
             self.collectf(self.logger.debug,*args)
 
-    def sql(self, sqlcommand, fun = None):
+    def sql(self, description, sqlcommand, fun = None):
         """Log SQL command, optionally invoking a timed fun"""
+        self.info(description,sqlcommand)
+        if fun:
+            self.info("Invoking function")
+            return fun(sqlcommand)
 
     def collect(self,fun,*args):
         """Collect arguments and use fun to output one by one"""
diff --git a/wqflask/utility/tools.py b/wqflask/utility/tools.py
index 2affd130..fca5917e 100644
--- a/wqflask/utility/tools.py
+++ b/wqflask/utility/tools.py
@@ -172,6 +172,7 @@ LOG_LEVEL          = get_setting('LOG_LEVEL')
 LOG_LEVEL_DEBUG    = get_setting_int('LOG_LEVEL_DEBUG')
 LOG_SQL            = get_setting_bool('LOG_SQL')
 USE_REDIS          = get_setting_bool('USE_REDIS')
+USE_GN_SERVER      = get_setting_bool('USE_GN_SERVER')
 
 PYLMM_COMMAND      = pylmm_command()
 GEMMA_COMMAND      = gemma_command()