workflows: fix unlinking when there's no request (#76555)
gitea/wcs/pipeline/head This commit looks good Details

This commit is contained in:
Frédéric Péters 2023-04-12 12:59:18 +02:00
parent 45bdf88ed0
commit 9b8225c402
2 changed files with 37 additions and 1 deletions

View File

@ -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

View File

@ -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()