[Erp5-report] r46003 arnaud.fontaine - /erp5/trunk/utils/erp5.utils.test_browser/src/erp5/u...
nobody at svn.erp5.org
nobody at svn.erp5.org
Mon Aug 29 09:46:20 CEST 2011
Author: arnaud.fontaine
Date: Mon Aug 29 09:46:19 2011
New Revision: 46003
URL: http://svn.erp5.org?rev=46003&view=rev
Log:
Workflow action may not be available yet, thus provide a way to try again
Modified:
erp5/trunk/utils/erp5.utils.test_browser/src/erp5/utils/test_browser/browser.py
Modified: erp5/trunk/utils/erp5.utils.test_browser/src/erp5/utils/test_browser/browser.py
URL: http://svn.erp5.org/erp5/trunk/utils/erp5.utils.test_browser/src/erp5/utils/test_browser/browser.py?rev=46003&r1=46002&r2=46003&view=diff
==============================================================================
--- erp5/trunk/utils/erp5.utils.test_browser/src/erp5/utils/test_browser/browser.py [utf8] (original)
+++ erp5/trunk/utils/erp5.utils.test_browser/src/erp5/utils/test_browser/browser.py [utf8] Mon Aug 29 09:46:19 2011
@@ -742,6 +742,8 @@ class MainForm(Form):
"""
self.submitSelectFavourite(value='/logout')
+import time
+
class ContextMainForm(MainForm):
"""
Class defining context-dependent convenient methods for the main
@@ -845,7 +847,9 @@ class ContextMainForm(MainForm):
self.submit(name='Base_doSelect:method')
def submitSelectWorkflow(self, label=None, value=None,
- script_id='viewWorkflowActionDialog', **kw):
+ script_id='viewWorkflowActionDialog',
+ maximum_attempt_number=1, sleep_between_attempt=0,
+ **kw):
"""
Select and submit a workflow action, given either by its label
(such as I{Create User}) or value (such as I{create_user_action}
@@ -855,19 +859,41 @@ class ContextMainForm(MainForm):
When validating an object, L{submitDialogConfirm} allows to
perform the validation required on the next page.
+ As the Workflow action may not be available yet, it is possible to set the
+ maximum number of attempts and the sleep duration between each attempt.
+
@param script_id: Script identifier
@type script_id: str
- """
- try:
- self.submitSelect('select_action', 'Base_doAction:method', label,
- value and '%s?workflow_action=%s' % (script_id, value),
- **kw)
-
- except LookupError:
- self.submitSelect('select_action', 'Base_doAction:method', label,
- value and '%s?field_my_workflow_action=%s' % (script_id,
- value),
- **kw)
+ @param maximum_attempt_number: Number of attempts before failing
+ @type maximum_attempt_number: int
+ @param sleep_between_attempt: Sleep N seconds between attempts
+ @type sleep_between_attempt: int
+ @return: The time spent (in seconds) if relevant
+ @rtype: int
+ """
+ current_attempt_number = 1
+ while True:
+ try:
+ try:
+ self.submitSelect('select_action', 'Base_doAction:method', label,
+ value and '%s?workflow_action=%s' % (script_id, value),
+ **kw)
+
+ except LookupError:
+ self.submitSelect('select_action', 'Base_doAction:method', label,
+ value and '%s?field_my_workflow_action=%s' % (script_id,
+ value),
+ **kw)
+ except LookupError:
+ if current_attempt_nbr == maximum_attempt_number:
+ raise
+
+ current_attempt_number += 1
+ time.sleep(sleep_between_attempt)
+ else:
+ break
+
+ return (current_attempt_number - 1) * sleep_between_attempt
def submitDialogCancel(self):
"""
More information about the Erp5-report
mailing list