[Erp5-report] r13415 - in /erp5/trunk/products/CMFActivity: Activity/ skins/activity/ tests/
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Mar 14 14:49:04 CET 2007
Author: vincent
Date: Wed Mar 14 14:49:01 2007
New Revision: 13415
URL: http://svn.erp5.org?rev=13415&view=rev
Log:
Do queue new activities even if there is already activities on same object with same method id but with different tag.
Add a unit test for this feature (and general behaviour of the key function behind this).
Modified:
erp5/trunk/products/CMFActivity/Activity/SQLDict.py
erp5/trunk/products/CMFActivity/skins/activity/SQLDict_readMessageList.zsql
erp5/trunk/products/CMFActivity/tests/testCMFActivity.py
Modified: erp5/trunk/products/CMFActivity/Activity/SQLDict.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/Activity/SQLDict.py?rev=13415&r1=13414&r2=13415&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/Activity/SQLDict.py (original)
+++ erp5/trunk/products/CMFActivity/Activity/SQLDict.py Wed Mar 14 14:49:01 2007
@@ -120,12 +120,12 @@
def isMessageRegistered(self, activity_buffer, activity_tool, m):
uid_set = activity_buffer.getUidSet(self)
- return (tuple(m.object_path), m.method_id) in uid_set
+ return (tuple(m.object_path), m.method_id, m.activity_kw.get('tag')) in uid_set
def registerMessage(self, activity_buffer, activity_tool, m):
m.is_registered = 1
uid_set = activity_buffer.getUidSet(self)
- uid_set.add((tuple(m.object_path), m.method_id))
+ uid_set.add((tuple(m.object_path), m.method_id, m.activity_kw.get('tag')))
message_list = activity_buffer.getMessageList(self)
message_list.append(m)
@@ -133,7 +133,7 @@
m.is_registered = 0 # This prevents from inserting deleted messages into the queue
class_name = self.__class__.__name__
uid_set = activity_buffer.getUidSet(self)
- uid_set.discard((tuple(m.object_path), m.method_id))
+ uid_set.discard((tuple(m.object_path), m.method_id, m.activity_kw.get('tag')))
def getRegisteredMessageList(self, activity_buffer, activity_tool):
message_list = activity_buffer.getMessageList(self)
Modified: erp5/trunk/products/CMFActivity/skins/activity/SQLDict_readMessageList.zsql
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/skins/activity/SQLDict_readMessageList.zsql?rev=13415&r1=13414&r2=13415&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/skins/activity/SQLDict_readMessageList.zsql (original)
+++ erp5/trunk/products/CMFActivity/skins/activity/SQLDict_readMessageList.zsql Wed Mar 14 14:49:01 2007
@@ -35,6 +35,6 @@
<dtml-if path>AND path = <dtml-sqlvar path type="string"> </dtml-if>
<dtml-if method_id> AND method_id = <dtml-sqlvar method_id type="string"> </dtml-if>
GROUP BY
- path, method_id, processing_node, processing
+ path, method_id, tag, processing_node, processing
ORDER BY
priority, date
Modified: erp5/trunk/products/CMFActivity/tests/testCMFActivity.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/tests/testCMFActivity.py?rev=13415&r1=13414&r2=13415&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/tests/testCMFActivity.py (original)
+++ erp5/trunk/products/CMFActivity/tests/testCMFActivity.py Wed Mar 14 14:49:01 2007
@@ -784,6 +784,58 @@
DB.query = DB.original_query
del DB.original_query
+ def checkIsMessageRegisteredMethod(self, activity):
+ activity_tool = self.getPortal().portal_activities
+ object_a = self.getOrganisationModule()
+ if not object_a.hasContent(self.company_id):
+ object_a.newContent(id=self.company_id)
+ object_b = object_a._getOb(self.company_id)
+ activity_tool.manageClearActivities(keep=0)
+ get_transaction().commit()
+ # First case: creating the same activity twice must only register one.
+ self.assertEquals(len(activity_tool.getMessageList()), 0) # Sanity check
+ object_a.activate(activity=activity).getId()
+ object_a.activate(activity=activity).getId()
+ get_transaction().commit()
+ self.assertEquals(len(activity_tool.getMessageList()), 1)
+ activity_tool.manageClearActivities(keep=0)
+ get_transaction().commit()
+ # Second case: creating activity with same tag must only register one.
+ # This behaviour is actually the same as the no-tag behaviour.
+ self.assertEquals(len(activity_tool.getMessageList()), 0) # Sanity check
+ object_a.activate(activity=activity, tag='foo').getId()
+ object_a.activate(activity=activity, tag='foo').getId()
+ get_transaction().commit()
+ self.assertEquals(len(activity_tool.getMessageList()), 1)
+ activity_tool.manageClearActivities(keep=0)
+ get_transaction().commit()
+ # Third case: creating activities with different tags must register both.
+ self.assertEquals(len(activity_tool.getMessageList()), 0) # Sanity check
+ object_a.activate(activity=activity, tag='foo').getId()
+ object_a.activate(activity=activity, tag='bar').getId()
+ get_transaction().commit()
+ self.assertEquals(len(activity_tool.getMessageList()), 2)
+ activity_tool.manageClearActivities(keep=0)
+ get_transaction().commit()
+ # Fourth case: creating activities on different objects must register
+ # both.
+ self.assertEquals(len(activity_tool.getMessageList()), 0) # Sanity check
+ object_a.activate(activity=activity).getId()
+ object_b.activate(activity=activity).getId()
+ get_transaction().commit()
+ self.assertEquals(len(activity_tool.getMessageList()), 2)
+ activity_tool.manageClearActivities(keep=0)
+ get_transaction().commit()
+ # Fifth case: creating activities with different method must register
+ # both.
+ self.assertEquals(len(activity_tool.getMessageList()), 0) # Sanity check
+ object_a.activate(activity=activity).getId()
+ object_a.activate(activity=activity).getTitle()
+ get_transaction().commit()
+ self.assertEquals(len(activity_tool.getMessageList()), 2)
+ activity_tool.manageClearActivities(keep=0)
+ get_transaction().commit()
+
def test_01_DeferedSetTitleSQLDict(self, quiet=0, run=run_all_test):
# Test if we can add a complete sales order
if not run: return
@@ -1688,6 +1740,17 @@
get_transaction().commit()
self.assertEqual(len(activity_tool.getMessageList()), 0)
+ def test_78_IsMessageRegisteredSQLDict(self, quiet=0, run=run_all_test):
+ """
+ This test tests behaviour of IsMessageRegistered method.
+ """
+ if not run: return
+ if not quiet:
+ message = '\nTest IsMessageRegistered behaviour with SQLDict'
+ ZopeTestCase._print(message)
+ LOG('Testing... ',0,message)
+ self.checkIsMessageRegisteredMethod('SQLDict')
+
if __name__ == '__main__':
framework()
else:
More information about the Erp5-report
mailing list