From 82c6c44fe04e26e9134b4c4452a904972cbf1cdf Mon Sep 17 00:00:00 2001 From: Dimitri Yatsenko Date: Mon, 3 Feb 2020 14:14:50 -0600 Subject: [PATCH 1/2] minor indentation --- datajoint/connection.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/datajoint/connection.py b/datajoint/connection.py index b1a4911b6..acc0bf32e 100644 --- a/datajoint/connection.py +++ b/datajoint/connection.py @@ -149,7 +149,7 @@ def connect(self): "STRICT_ALL_TABLES,NO_ENGINE_SUBSTITUTION", charset=config['connection.charset'], **{k: v for k, v in self.conn_info.items() - if k != 'ssl_input'}) + if k != 'ssl_input'}) except client.err.InternalError: self._conn = client.connect( init_command=self.init_fun, @@ -157,8 +157,8 @@ def connect(self): "STRICT_ALL_TABLES,NO_ENGINE_SUBSTITUTION", charset=config['connection.charset'], **{k: v for k, v in self.conn_info.items() - if not(k == 'ssl_input' or - k == 'ssl' and self.conn_info['ssl_input'] is None)}) + if not(k == 'ssl_input' or + k == 'ssl' and self.conn_info['ssl_input'] is None)}) self._conn.autocommit(True) def close(self): From 1497198d5d7f669c0f290f688d44110b7a8bba1b Mon Sep 17 00:00:00 2001 From: Dimitri Yatsenko Date: Thu, 9 Apr 2020 10:33:19 -0500 Subject: [PATCH 2/2] fix #737: The log table does not log event from auxilliary tables such as ~jobs by default. --- datajoint/table.py | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/datajoint/table.py b/datajoint/table.py index cfe86152a..ebc3def23 100644 --- a/datajoint/table.py +++ b/datajoint/table.py @@ -159,7 +159,7 @@ def full_table_name(self): @property def _log(self): if self._log_ is None: - self._log_ = Log(self.connection, database=self.database) + self._log_ = Log(self.connection, database=self.database, skip_logging=self.table_name.startswith('~')) return self._log_ @property @@ -667,20 +667,23 @@ class Log(Table): """ The log table for each schema. Instances are callable. Calls log the time and identifying information along with the event. + :param skip_logging: if True, then log entry is skipped by default. See __call__ """ - def __init__(self, arg, database=None): + def __init__(self, arg, database=None, skip_logging=False): super().__init__() if isinstance(arg, Log): # copy constructor self.database = arg.database + self.skip_logging = arg.skip_logging self._connection = arg._connection self._definition = arg._definition self._user = arg._user return self.database = database + self.skip_logging = skip_logging self._connection = arg self._definition = """ # event logging table for `{database}` id :int unsigned auto_increment # event order id @@ -704,15 +707,21 @@ def definition(self): def table_name(self): return '~log' - def __call__(self, event): - try: - self.insert1(dict( - user=self._user, - version=version + 'py', - host=platform.uname().node, - event=event), skip_duplicates=True, ignore_extra_fields=True) - except DataJointError: - logger.info('could not log event in table ~log') + def __call__(self, event, skip_logging=None): + """ + :param event: string to write into the log table + :param skip_logging: If True then do not log. If None, then use self.skip_logging + """ + skip_logging = self.skip_logging if skip_logging is None else skip_logging + if not skip_logging: + try: + self.insert1(dict( + user=self._user, + version=version + 'py', + host=platform.uname().node, + event=event), skip_duplicates=True, ignore_extra_fields=True) + except DataJointError: + logger.info('could not log event in table ~log') def delete(self): """bypass interactive prompts and cascading dependencies"""