[Erp5-report] r27329 - in /erp5/trunk/products/CMFActivity: ./ Activity/ skins/activity/ te...
nobody at svn.erp5.org
nobody at svn.erp5.org
Tue Jun 2 13:53:26 CEST 2009
Author: jm
Date: Tue Jun 2 13:53:25 2009
New Revision: 27329
URL: http://svn.erp5.org?rev=27329&view=rev
Log:
Fix ActiveProcess.hasActivity. On active processes, hasActivity tests active_process_uid instead of path:
* hasActivity must handle the case when no document is provided (bug #1142)
* Fix initialisation of active_process_uid property on Message objects.
Add unit test.
Modified:
erp5/trunk/products/CMFActivity/ActiveObject.py
erp5/trunk/products/CMFActivity/Activity/SQLDict.py
erp5/trunk/products/CMFActivity/Activity/SQLQueue.py
erp5/trunk/products/CMFActivity/ActivityTool.py
erp5/trunk/products/CMFActivity/skins/activity/SQLDict_hasMessage.zsql
erp5/trunk/products/CMFActivity/skins/activity/SQLQueue_hasMessage.zsql
erp5/trunk/products/CMFActivity/tests/testCMFActivity.py
Modified: erp5/trunk/products/CMFActivity/ActiveObject.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/ActiveObject.py?rev=27329&r1=27328&r2=27329&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/ActiveObject.py [utf8] (original)
+++ erp5/trunk/products/CMFActivity/ActiveObject.py [utf8] Tue Jun 2 13:53:25 2009
@@ -128,8 +128,12 @@
raise ValueError, "Cannot defined a group_id with value None"
elif kw.get('group_method_id') is None and kw.get('group_id') is not None:
raise ValueError, "Cannot defined a group_id without group_method_id"
-
- activity_tool = getToolByName(self, 'portal_activities', None)
+
+ portal = self.getPortalObject()
+ if isinstance(active_process, basestring):
+ active_process = portal.unrestrictedTraverse(active_process)
+
+ activity_tool = getattr(portal, 'portal_activities', None)
if activity_tool is None: return self # Do nothing if no portal_activities
# activate returns an ActiveWrapper
# a queue can be provided as well as extra parameters
Modified: erp5/trunk/products/CMFActivity/Activity/SQLDict.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/Activity/SQLDict.py?rev=27329&r1=27328&r2=27329&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/Activity/SQLDict.py [utf8] (original)
+++ erp5/trunk/products/CMFActivity/Activity/SQLDict.py [utf8] Tue Jun 2 13:53:25 2009
@@ -514,7 +514,10 @@
def hasActivity(self, activity_tool, object, method_id=None, only_valid=None, active_process_uid=None):
hasMessage = getattr(activity_tool, 'SQLDict_hasMessage', None)
if hasMessage is not None:
- my_object_path = '/'.join(object.getPhysicalPath())
+ if object is None:
+ my_object_path = None
+ else:
+ my_object_path = '/'.join(object.getPhysicalPath())
result = hasMessage(path=my_object_path, method_id=method_id, only_valid=only_valid, active_process_uid=active_process_uid)
if len(result) > 0:
return result[0].message_count > 0
Modified: erp5/trunk/products/CMFActivity/Activity/SQLQueue.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/Activity/SQLQueue.py?rev=27329&r1=27328&r2=27329&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/Activity/SQLQueue.py [utf8] (original)
+++ erp5/trunk/products/CMFActivity/Activity/SQLQueue.py [utf8] Tue Jun 2 13:53:25 2009
@@ -360,7 +360,10 @@
def hasActivity(self, activity_tool, object, method_id=None, only_valid=None, active_process_uid=None):
hasMessage = getattr(activity_tool, 'SQLQueue_hasMessage', None)
if hasMessage is not None:
- my_object_path = '/'.join(object.getPhysicalPath())
+ if object is None:
+ my_object_path = None
+ else:
+ my_object_path = '/'.join(object.getPhysicalPath())
result = hasMessage(path=my_object_path, method_id=method_id, only_valid=only_valid, active_process_uid=active_process_uid)
if len(result) > 0:
return result[0].message_count > 0
Modified: erp5/trunk/products/CMFActivity/ActivityTool.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/ActivityTool.py?rev=27329&r1=27328&r2=27329&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/ActivityTool.py [utf8] (original)
+++ erp5/trunk/products/CMFActivity/ActivityTool.py [utf8] Tue Jun 2 13:53:25 2009
@@ -159,6 +159,7 @@
Message instances are stored in an activity queue, inside the Activity Tool.
"""
+ active_process = None
active_process_uid = None
def __init__(self, obj, active_process, activity_kw, method_id, args, kw):
@@ -168,11 +169,7 @@
else:
self.object_path = obj.getPhysicalPath()
activity_creation_trace = obj.getPortalObject().portal_activities.activity_creation_trace
- if type(active_process) is StringType:
- self.active_process = active_process.split('/')
- elif active_process is None:
- self.active_process = None
- else:
+ if active_process is not None:
self.active_process = active_process.getPhysicalPath()
self.active_process_uid = active_process.getUid()
if activity_kw.get('serialization_tag', False) is None:
Modified: erp5/trunk/products/CMFActivity/skins/activity/SQLDict_hasMessage.zsql
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/skins/activity/SQLDict_hasMessage.zsql?rev=27329&r1=27328&r2=27329&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/skins/activity/SQLDict_hasMessage.zsql [utf8] (original)
+++ erp5/trunk/products/CMFActivity/skins/activity/SQLDict_hasMessage.zsql [utf8] Tue Jun 2 13:53:25 2009
@@ -13,8 +13,8 @@
only_valid</params>
SELECT count(path) as message_count FROM
message
-WHERE
-path = <dtml-sqlvar path type="string">
+WHERE 1 = 1
+<dtml-if expr="path is not None">AND path = <dtml-sqlvar path type="string"> </dtml-if>
<dtml-if expr="method_id is not None">AND method_id = <dtml-sqlvar method_id type="string"></dtml-if>
<dtml-if expr="only_valid">AND processing_node > -2</dtml-if>
<dtml-if expr="active_process_uid is not None"> AND active_process_uid = <dtml-sqlvar active_process_uid type="int"> </dtml-if>
Modified: erp5/trunk/products/CMFActivity/skins/activity/SQLQueue_hasMessage.zsql
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/skins/activity/SQLQueue_hasMessage.zsql?rev=27329&r1=27328&r2=27329&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/skins/activity/SQLQueue_hasMessage.zsql [utf8] (original)
+++ erp5/trunk/products/CMFActivity/skins/activity/SQLQueue_hasMessage.zsql [utf8] Tue Jun 2 13:53:25 2009
@@ -13,8 +13,8 @@
only_valid</params>
SELECT count(path) as message_count FROM
message_queue
-WHERE
-path = <dtml-sqlvar path type="string">
+WHERE 1 = 1
+<dtml-if expr="path is not None">AND path = <dtml-sqlvar path type="string"> </dtml-if>
<dtml-if expr="method_id is not None"> AND method_id = <dtml-sqlvar method_id type="string"> </dtml-if>
<dtml-if expr="only_valid"> AND processing_node > -2 </dtml-if>
<dtml-if expr="active_process_uid is not None"> AND active_process_uid = <dtml-sqlvar active_process_uid type="int"> </dtml-if>
Modified: erp5/trunk/products/CMFActivity/tests/testCMFActivity.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/tests/testCMFActivity.py?rev=27329&r1=27328&r2=27329&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/tests/testCMFActivity.py [utf8] (original)
+++ erp5/trunk/products/CMFActivity/tests/testCMFActivity.py [utf8] Tue Jun 2 13:53:25 2009
@@ -3251,19 +3251,28 @@
finally:
delattr(Organisation, 'waitingActivity')
Queue.tic = original_queue_tic
-
- def test_active_object_hasActivity(self):
+
+ def test_hasActivity(self):
active_object = self.portal.organisation_module.newContent(
portal_type='Organisation')
- get_transaction().commit()
- self.tic()
+ active_process = self.portal.portal_activities.newActiveProcess()
+ get_transaction().commit()
+ self.tic()
+
self.assertFalse(active_object.hasActivity())
- for activity in ('SQLDict', 'SQLQueue'):
- active_object.activate(activity=activity).getTitle()
- get_transaction().commit()
- self.assertTrue(active_object.hasActivity(), activity)
- self.tic()
- self.assertFalse(active_object.hasActivity(), activity)
+ self.assertFalse(active_process.hasActivity())
+
+ def test(obj, **kw):
+ for activity in ('SQLDict', 'SQLQueue'):
+ active_object.activate(activity=activity, **kw).getTitle()
+ get_transaction().commit()
+ self.assertTrue(obj.hasActivity(), activity)
+ self.tic()
+ self.assertFalse(obj.hasActivity(), activity)
+
+ test(active_object)
+ test(active_process, active_process=active_process)
+ test(active_process, active_process=active_process.getPath())
def test_active_object_hasActivity_does_not_catch_exceptions(self):
"""
More information about the Erp5-report
mailing list