[session/transaction] move hook management in transaction itself
This is transaction level code.
--- a/server/session.py Mon Mar 25 15:28:18 2013 +0100
+++ b/server/session.py Mon Mar 25 16:08:48 2013 +0100
@@ -183,10 +183,10 @@
:attr:`hooks_mode`, may be either `HOOKS_ALLOW_ALL` or `HOOKS_DENY_ALL`.
- :attr:`enabled_hook_categories`, when :attr:`hooks_mode` is
+ :attr:`enabled_hook_cats`, when :attr:`hooks_mode` is
`HOOKS_DENY_ALL`, this set contains hooks categories that are enabled.
- :attr:`disabled_hook_categories`, when :attr:`hooks_mode` is
+ :attr:`disabled_hook_cats`, when :attr:`hooks_mode` is
`HOOKS_ALLOW_ALL`, this set contains hooks categories that are disabled.
Security level Management:
@@ -299,6 +299,66 @@
else:
self.pending_operations.insert(index, operation)
+ # Hooks control ###########################################################
+
+ def disable_hook_categories(self, *categories):
+ """disable the given hook categories:
+
+ - on HOOKS_DENY_ALL mode, ensure those categories are not enabled
+ - on HOOKS_ALLOW_ALL mode, ensure those categories are disabled
+ """
+ changes = set()
+ self.pruned_hooks_cache.clear()
+ if self.hooks_mode is HOOKS_DENY_ALL:
+ enabledcats = self.enabled_hook_cats
+ for category in categories:
+ if category in enabledcats:
+ enabledcats.remove(category)
+ changes.add(category)
+ else:
+ disabledcats = self.disabled_hook_cats
+ for category in categories:
+ if category not in disabledcats:
+ disabledcats.add(category)
+ changes.add(category)
+ return tuple(changes)
+
+ def enable_hook_categories(self, *categories):
+ """enable the given hook categories:
+
+ - on HOOKS_DENY_ALL mode, ensure those categories are enabled
+ - on HOOKS_ALLOW_ALL mode, ensure those categories are not disabled
+ """
+ changes = set()
+ self.pruned_hooks_cache.clear()
+ if self.hooks_mode is HOOKS_DENY_ALL:
+ enabledcats = self.enabled_hook_cats
+ for category in categories:
+ if category not in enabledcats:
+ enabledcats.add(category)
+ changes.add(category)
+ else:
+ disabledcats = self.disabled_hook_cats
+ for category in categories:
+ if category in disabledcats:
+ disabledcats.remove(category)
+ changes.add(category)
+ return tuple(changes)
+
+ def is_hook_category_activated(self, category):
+ """return a boolean telling if the given category is currently activated
+ or not
+ """
+ if self.hooks_mode is HOOKS_DENY_ALL:
+ return category in self.enabled_hook_cats
+ return category not in self.disabled_hook_cats
+
+ def is_hook_activated(self, hook):
+ """return a boolean telling if the given hook class is currently
+ activated or not
+ """
+ return self.is_hook_category_activated(hook.category)
+
def tx_attr(attr_name, writable=False):
"""return a property to forward attribute access to transaction.
@@ -817,64 +877,10 @@
disabled_hook_categories = tx_attr('disabled_hook_cats')
enabled_hook_categories = tx_attr('enabled_hook_cats')
-
- def disable_hook_categories(self, *categories):
- """disable the given hook categories:
-
- - on HOOKS_DENY_ALL mode, ensure those categories are not enabled
- - on HOOKS_ALLOW_ALL mode, ensure those categories are disabled
- """
- changes = set()
- self.pruned_hooks_cache.clear()
- if self.hooks_mode is HOOKS_DENY_ALL:
- enabledcats = self.enabled_hook_categories
- for category in categories:
- if category in enabledcats:
- enabledcats.remove(category)
- changes.add(category)
- else:
- disabledcats = self.disabled_hook_categories
- for category in categories:
- if category not in disabledcats:
- disabledcats.add(category)
- changes.add(category)
- return tuple(changes)
-
- def enable_hook_categories(self, *categories):
- """enable the given hook categories:
-
- - on HOOKS_DENY_ALL mode, ensure those categories are enabled
- - on HOOKS_ALLOW_ALL mode, ensure those categories are not disabled
- """
- changes = set()
- self.pruned_hooks_cache.clear()
- if self.hooks_mode is HOOKS_DENY_ALL:
- enabledcats = self.enabled_hook_categories
- for category in categories:
- if category not in enabledcats:
- enabledcats.add(category)
- changes.add(category)
- else:
- disabledcats = self.disabled_hook_categories
- for category in categories:
- if category in disabledcats:
- disabledcats.remove(category)
- changes.add(category)
- return tuple(changes)
-
- def is_hook_category_activated(self, category):
- """return a boolean telling if the given category is currently activated
- or not
- """
- if self.hooks_mode is HOOKS_DENY_ALL:
- return category in self.enabled_hook_categories
- return category not in self.disabled_hook_categories
-
- def is_hook_activated(self, hook):
- """return a boolean telling if the given hook class is currently
- activated or not
- """
- return self.is_hook_category_activated(hook.category)
+ disable_hook_categories = tx_meth('disable_hook_categories')
+ enable_hook_categories = tx_meth('enable_hook_categories')
+ is_hook_category_activated = tx_meth('is_hook_category_activated')
+ is_hook_activated = tx_meth('is_hook_activated')
# connection management ###################################################