[Erp5-report] r19258 - /erp5/trunk/products/CMFActivity/ActivityTool.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Feb 12 09:46:06 CET 2008


Author: yo
Date: Tue Feb 12 09:46:05 2008
New Revision: 19258

URL: http://svn.erp5.org?rev=19258&view=rev
Log:
Add activity tracking. It is turned off by default.

Modified:
    erp5/trunk/products/CMFActivity/ActivityTool.py

Modified: erp5/trunk/products/CMFActivity/ActivityTool.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/ActivityTool.py?rev=19258&r1=19257&r2=19258&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/ActivityTool.py (original)
+++ erp5/trunk/products/CMFActivity/ActivityTool.py Tue Feb 12 09:46:05 2008
@@ -53,7 +53,7 @@
 from ZODB.POSException import ConflictError
 from Products.MailHost.MailHost import MailHostError
 
-from zLOG import LOG, INFO, WARNING, ERROR
+from zLOG import LOG, INFO, WARNING, ERROR, DEBUG
 
 try:
   from Products.TimerService import getTimerService
@@ -78,6 +78,16 @@
 
 # Activity Registration
 activity_dict = {}
+
+logging = True
+
+def enableLogging():
+  global logging
+  logging = True
+
+def disableLogging():
+  global logging
+  logging = False
 
 # Here go ActivityBuffer instances
 # Structure:
@@ -273,6 +283,8 @@
 
   def __call__(self, *args, **kw):
     m = Message(self.__passive_self, self.__active_process, self.__kw, self.__method_id, args, kw)
+    if logging:
+      LOG('Activity Tracking', DEBUG, 'queuing message: activity=%s, object_path=%s, method_id=%s, args=%s, kw=%s, activity_kw=%s, user_name=%s' % (self.__activity, '/'.join(m.object_path), m.method_id, m.args, m.kw, m.activity_kw, m.user_name))
     activity_dict[self.__activity].queueMessage(self.__passive_self.portal_activities, m)
 
 allow_class(Method)
@@ -767,6 +779,8 @@
         activity.stop(aq_inner(self), **kw)
 
     def invoke(self, message):
+      if logging:
+        LOG('Activity Tracking', DEBUG, 'invoking message: object_path=%s, method_id=%s, args=%s, kw=%s, activity_kw=%s, user_name=%s' % ('/'.join(message.object_path), message.method_id, message.args, message.kw, message.activity_kw, message.user_name))
       if getattr(self, 'aq_chain', None) is not None:
         # Grab existing acquisition chain and extrach base objects.
         base_chain = [aq_base(x) for x in self.aq_chain]
@@ -789,11 +803,15 @@
         my_self = self
         LOG('CMFActivity.ActivityTool.invoke', INFO, 'Strange: invoke is called outside of acquisition context.')
       message(my_self)
+      if logging:
+        LOG('Activity Tracking', DEBUG, 'invoked message')
       if my_self is not self: # We rewrapped self
         for held in my_self.REQUEST._held:
           self.REQUEST._hold(held)
 
     def invokeGroup(self, method_id, message_list):
+      if logging:
+        LOG('Activity Tracking', DEBUG, 'invoking group messages: method_id=%s, paths=%s' % (method_id, ['/'.join(m.object_path) for m in message_list]))
       # Invoke a group method.
       object_list = []
       expanded_object_list = []
@@ -893,6 +911,8 @@
               LOG('ActivityTool', WARNING,
                   'Could not call method %s on object %s' % (
                   m.method_id, m.object_path), error=sys.exc_info())
+      if logging:
+        LOG('Activity Tracking', DEBUG, 'invoked group messages')
 
     def newMessage(self, activity, path, active_process,
                    activity_kw, method_id, *args, **kw):




More information about the Erp5-report mailing list