workflows: add user to jumps done from global actions (#74480) #771
|
@ -3858,6 +3858,7 @@ def test_user_global_action(pub):
|
|||
|
||||
resp = app.get(formdata.get_url())
|
||||
assert 'HELLO WORLD GLOBAL ACTION' in resp.text
|
||||
assert resp.pyquery('.endpoint .user').text() == 'User Name'
|
||||
assert formdef.data_class().get(formdata.id).status == 'wf-finished'
|
||||
trace_event, trace_action = WorkflowTrace.select_for_formdata(formdata)[:2]
|
||||
assert (
|
||||
|
|
|
@ -244,6 +244,14 @@ class Evolution:
|
|||
def datetime(self):
|
||||
return datetime.datetime(*self.time[:6])
|
||||
|
||||
def set_user(self, formdata, user):
|
||||
if user is None:
|
||||
self.who = None
|
||||
elif formdata.is_submitter(user):
|
||||
self.who = '_submitter'
|
||||
else:
|
||||
self.who = user.id
|
||||
|
||||
def get_status(self):
|
||||
status = self.status
|
||||
if not self.status:
|
||||
|
@ -692,7 +700,7 @@ class FormData(StorableObject):
|
|||
if action.id != action_id:
|
||||
continue
|
||||
with push_perform_workflow(self):
|
||||
return perform_items(action.items, self, global_action=True)
|
||||
return perform_items(action.items, formdata=self, user=user, global_action=True)
|
||||
|
||||
def get_workflow_messages(self, position='top', user=None):
|
||||
wf_status = self.get_visible_status(user=user)
|
||||
|
|
|
@ -75,7 +75,7 @@ def lax_int(s):
|
|||
return -1
|
||||
|
||||
|
||||
def perform_items(items, formdata, depth=20, global_action=False):
|
||||
def perform_items(items, formdata, depth=20, user=None, global_action=False):
|
||||
if depth == 0: # prevents infinite loops
|
||||
return
|
||||
url = None
|
||||
|
@ -101,6 +101,8 @@ def perform_items(items, formdata, depth=20, global_action=False):
|
|||
if not formdata.evolution:
|
||||
formdata.evolution = []
|
||||
evo = Evolution()
|
||||
if global_action:
|
||||
evo.set_user(formdata=formdata, user=user)
|
||||
evo.time = time.localtime()
|
||||
evo.status = formdata.status
|
||||
formdata.evolution.append(evo)
|
||||
|
@ -2221,11 +2223,7 @@ class SerieOfActionsMixin:
|
|||
|
||||
def handle_form(self, form, filled, user, evo):
|
||||
evo.time = time.localtime()
|
||||
if user:
|
||||
if filled.is_submitter(user):
|
||||
evo.who = '_submitter'
|
||||
else:
|
||||
evo.who = user.id
|
||||
evo.set_user(formdata=filled, user=user)
|
||||
if not filled.evolution:
|
||||
filled.evolution = []
|
||||
|
||||
|
|
Loading…
Reference in New Issue