diff roundup/backends/sessions_sqlite.py @ 6823:fe0091279f50

Refactor session db logging and key generation for sessions/otks While I was working on the redis sessiondb stuff, I noticed that log_wanrning, get_logger ... was duplicated. Also there was code to generate a unique key for otks that was duplicated. Changes: creating new sessions_common.py and SessionsCommon class to provide methods: log_warning, log_info, log_debug, get_logger, getUniqueKey getUniqueKey method is closer to the method used to make session keys in client.py. sessions_common.py now report when random_.py chooses a weak random number generator. Removed same from rest.py. get_logger reconciles all logging under roundup.hyperdb.backends.<name of BasicDatabase class> some backends used to log to root logger. have BasicDatabase in other sessions_*.py modules inherit from SessionCommon. change logging to use log_* methods. In addition: remove unused imports reported by flake8 and other formatting changes modify actions.py, rest.py, templating.py to use getUniqueKey method. add tests for new methods test_redis_session.py swap out ModuleNotFoundError for ImportError to prevent crash in python2 when redis is not present. allow injection of username:password or just password into redis connection URL. set pytest_redis_pw envirnment variable to password or user:password when running test.
author John Rouillard <rouilj@ieee.org>
date Sun, 07 Aug 2022 01:51:11 -0400
parents 375d40a9e730
children a96a239db0d9
line wrap: on
line diff
--- a/roundup/backends/sessions_sqlite.py	Sun Aug 07 01:26:30 2022 -0400
+++ b/roundup/backends/sessions_sqlite.py	Sun Aug 07 01:51:11 2022 -0400
@@ -11,53 +11,33 @@
 provide a performance speedup.
 """
 __docformat__ = 'restructuredtext'
-import os, time, logging
+
+from roundup.backends import sessions_rdbms
 
-from roundup.anypy.html import html_escape as escape
-import roundup.backends.sessions_rdbms as rdbms_session
 
-class BasicDatabase(rdbms_session.BasicDatabase):
+class BasicDatabase(sessions_rdbms.BasicDatabase):
     ''' Provide a nice encapsulation of an RDBMS table.
 
         Keys are id strings, values are automatically marshalled data.
     '''
     name = None
+
     def __init__(self, db):
         self.db = db
         self.conn, self.cursor = self.db.sql_open_connection(dbname=self.name)
 
-        self.sql('''SELECT name FROM sqlite_master WHERE type='table' AND name='%ss';'''%self.name)
+        self.sql('''SELECT name FROM sqlite_master WHERE type='table' AND '''
+                 '''name='%ss';''' % self.name)
         table_exists = self.cursor.fetchone()
 
         if not table_exists:
             # create table/rows etc.
             self.sql('''CREATE TABLE %(name)ss (%(name)s_key VARCHAR(255),
-            %(name)s_value TEXT, %(name)s_time REAL)'''%{"name":self.name})
-            self.sql('CREATE INDEX %(name)s_key_idx ON %(name)ss(%(name)s_key)'%{"name":self.name})
+            %(name)s_value TEXT, %(name)s_time REAL)''' % {"name": self.name})
+            self.sql('CREATE INDEX %(name)s_key_idx ON '
+                     '%(name)ss(%(name)s_key)' % {"name": self.name})
             self.commit()
 
-    def log_debug(self, msg, *args, **kwargs):
-        """Log a message with level DEBUG."""
-
-        logger = self.get_logger()
-        logger.debug(msg, *args, **kwargs)
-
-    def log_info(self, msg, *args, **kwargs):
-        """Log a message with level INFO."""
-
-        logger = self.get_logger()
-        logger.info(msg, *args, **kwargs)
-
-    def get_logger(self):
-        """Return the logger for this database."""
-
-        # Because getting a logger requires acquiring a lock, we want
-        # to do it only once.
-        if not hasattr(self, '__logger'):
-            self.__logger = logging.getLogger('roundup')
-
-        return self.__logger
-
     def sql(self, sql, args=None, cursor=None):
         """ Execute the sql with the optional args.
         """
@@ -69,9 +49,11 @@
         else:
             cursor.execute(sql)
 
+
 class Sessions(BasicDatabase):
     name = 'session'
 
+
 class OneTimeKeys(BasicDatabase):
     name = 'otk'
 

Roundup Issue Tracker: http://roundup-tracker.org/