From 216891a1d26ed2bad851248ca1361a646cab9992 Mon Sep 17 00:00:00 2001 From: cbroz1 Date: Wed, 7 Feb 2024 09:41:35 -0800 Subject: [PATCH] #818 --- CHANGELOG.md | 1 + src/spyglass/utils/dj_mixin.py | 32 ++++++++++++++++++++++---------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e35bf00ef..cbc20cc6e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ - More robust caching of join to downstream tables. #806 - Overwrite datajoint `delete` method to use `cautious_delete`. #806 - Reverse join order for session summary. #821 + - Add temporary logging of use to `common_usage`. #811, #821 - Add `deprecation_factory` to facilitate table migration. #717 - Add Spyglass logger. #730 - IntervalList: Add secondary key `pipeline` #742 diff --git a/src/spyglass/utils/dj_mixin.py b/src/spyglass/utils/dj_mixin.py index 62bbc9af6..7a69ba75e 100644 --- a/src/spyglass/utils/dj_mixin.py +++ b/src/spyglass/utils/dj_mixin.py @@ -365,17 +365,29 @@ def _usage_table(self): def _log_use(self, start, merge_deletes=None): """Log use of cautious_delete.""" - self._usage_table.insert1( - dict( - duration=time() - start, - dj_user=dj.config["database.user"], - origin=self.full_table_name, - restriction=( - str(self.restriction)[:255] if self.restriction else "None" - ), - merge_deletes=merge_deletes, - ) + if isinstance(merge_deletes, QueryExpression): + merge_deletes = merge_deletes.fetch(as_dict=True) + safe_insert = dict( + duration=time() - start, + dj_user=dj.config["database.user"], + origin=self.full_table_name, ) + try: + self._usage_table.insert1( + dict( + **safe_insert, + restriction=( + "".join(self.restriction)[255:] # handle list + if self.restriction + else "None" + ), + merge_deletes=merge_deletes, + ) + ) + except (DataJointError, DataError): + self._usage_table.insert1( + dict(**safe_insert, restriction="Unknown") + ) # TODO: Intercept datajoint delete confirmation prompt for merge deletes def cautious_delete(self, force_permission: bool = False, *args, **kwargs):