workflows: fix unlinking when there's no request (#76555)
gitea/wcs/pipeline/head This commit looks good
Details
gitea/wcs/pipeline/head This commit looks good
Details
This commit is contained in:
parent
45bdf88ed0
commit
9b8225c402
|
@ -1742,3 +1742,39 @@ def test_anonymise_action_unlink_user(pub, submitter_is_triggerer):
|
|||
pub.get_request().session.is_anonymous_submitter(carddef.data_class().select()[0])
|
||||
is submitter_is_triggerer
|
||||
)
|
||||
|
||||
|
||||
def test_anonymise_action_unlink_user_no_request(pub):
|
||||
pub._request = None
|
||||
|
||||
CardDef.wipe()
|
||||
FormDef.wipe()
|
||||
pub.user_class.wipe()
|
||||
|
||||
user = pub.user_class()
|
||||
user.email = 'test@example.net'
|
||||
user.name_identifiers = ['xyz']
|
||||
user.store()
|
||||
|
||||
wf = Workflow(name='test-unlink-user')
|
||||
wf.possible_status = Workflow.get_default_workflow().possible_status[:]
|
||||
anonymise = wf.possible_status[1].add_action('anonymise', id='_anonymise', prepend=True)
|
||||
anonymise.label = 'Unlink User'
|
||||
anonymise.varname = 'mycard'
|
||||
anonymise.unlink_user = True
|
||||
wf.store()
|
||||
|
||||
carddef = CardDef()
|
||||
carddef.name = 'Person'
|
||||
carddef.workflow_id = wf.id
|
||||
carddef.store()
|
||||
carddef.data_class().wipe()
|
||||
|
||||
carddata = carddef.data_class()()
|
||||
carddata.data = {'0': 'Foo', '1': 'Bar'}
|
||||
carddata.user_id = user.id
|
||||
carddata.just_created()
|
||||
carddata.store()
|
||||
|
||||
carddata.perform_workflow()
|
||||
assert carddef.data_class().select()[0].user is None
|
||||
|
|
|
@ -33,7 +33,7 @@ class AnonymiseWorkflowStatusItem(WorkflowStatusItem):
|
|||
|
||||
def perform(self, formdata):
|
||||
if self.unlink_user is True:
|
||||
if formdata.is_submitter(get_request().user):
|
||||
if get_request() and formdata.is_submitter(get_request().user):
|
||||
get_session().mark_anonymous_formdata(formdata)
|
||||
formdata.unlink_user()
|
||||
formdata.remove_tracking_code()
|
||||
|
|
Loading…
Reference in New Issue