0001-wf-add-user-unlinking-option-to-anonymise-action-717.patch
tests/workflow/test_carddata.py | ||
---|---|---|
1619 | 1619 |
formdata.just_created() |
1620 | 1620 |
formdata.perform_workflow() |
1621 | 1621 |
assert carddef.data_class().count() == 0 |
1622 | ||
1623 | ||
1624 |
def test_anonymise_action_unlink_user(pub): |
|
1625 |
CardDef.wipe() |
|
1626 |
FormDef.wipe() |
|
1627 |
pub.user_class.wipe() |
|
1628 | ||
1629 |
user = pub.user_class() |
|
1630 |
user.email = 'test@example.net' |
|
1631 |
user.name_identifiers = ['xyz'] |
|
1632 |
user.store() |
|
1633 | ||
1634 |
wf = Workflow(name='test-unlink-user') |
|
1635 |
wf.possible_status = Workflow.get_default_workflow().possible_status[:] |
|
1636 |
anonymise = wf.possible_status[1].add_action('anonymise', id='_anonymise', prepend=True) |
|
1637 |
anonymise.label = 'Unlink User' |
|
1638 |
anonymise.varname = 'mycard' |
|
1639 |
anonymise.unlink_user = True |
|
1640 |
wf.store() |
|
1641 | ||
1642 |
carddef = CardDef() |
|
1643 |
carddef.name = 'Person' |
|
1644 |
carddef.workflow_id = wf.id |
|
1645 |
carddef.store() |
|
1646 |
carddef.data_class().wipe() |
|
1647 | ||
1648 |
carddata = carddef.data_class()() |
|
1649 |
carddata.data = {'0': 'Foo', '1': 'Bar'} |
|
1650 |
carddata.user_id = user.id |
|
1651 |
carddata.just_created() |
|
1652 |
carddata.store() |
|
1653 | ||
1654 |
assert carddef.data_class().select()[0].user.id == user.id |
|
1655 | ||
1656 |
carddata.perform_workflow() |
|
1657 | ||
1658 |
assert carddef.data_class().select()[0].user is None |
tests/workflow/test_formdata.py | ||
---|---|---|
398 | 398 |
formdata.perform_workflow() |
399 | 399 |
assert target_formdef.data_class().count() == 2 |
400 | 400 |
assert formdata.submission_context == {'a': 'b'} |
401 | ||
402 | ||
403 |
def test_anonymise_action_unlink_user(pub): |
|
404 |
CardDef.wipe() |
|
405 |
FormDef.wipe() |
|
406 |
pub.user_class.wipe() |
|
407 | ||
408 |
user = pub.user_class() |
|
409 |
user.email = 'test@example.net' |
|
410 |
user.name_identifiers = ['xyz'] |
|
411 |
user.store() |
|
412 | ||
413 |
wf = Workflow(name='test-unlink-user') |
|
414 |
wf.possible_status = Workflow.get_default_workflow().possible_status[:] |
|
415 |
anonymise = wf.possible_status[1].add_action('anonymise', id='_anonymise', prepend=True) |
|
416 |
anonymise.label = 'Unlink User' |
|
417 |
anonymise.varname = 'mycard' |
|
418 |
anonymise.unlink_user = True |
|
419 |
wf.store() |
|
420 | ||
421 |
formdef = FormDef() |
|
422 |
formdef.name = 'Person' |
|
423 |
formdef.workflow_id = wf.id |
|
424 |
formdef.store() |
|
425 |
formdef.data_class().wipe() |
|
426 | ||
427 |
formdata = formdef.data_class()() |
|
428 |
formdata.data = {'0': 'Foo', '1': 'Bar'} |
|
429 |
formdata.user_id = user.id |
|
430 |
formdata.just_created() |
|
431 |
formdata.store() |
|
432 | ||
433 |
assert formdef.data_class().select()[0].user.id == user.id |
|
434 | ||
435 |
formdata.perform_workflow() |
|
436 | ||
437 |
assert formdef.data_class().select()[0].user is None |
wcs/formdata.py | ||
---|---|---|
1266 | 1266 |
self._store_all_evolution = True |
1267 | 1267 |
self.store() |
1268 | 1268 | |
1269 |
def unlink_user(self): |
|
1270 |
if self.user_id: |
|
1271 |
self.user_id = None |
|
1272 |
self.store() |
|
1273 | ||
1269 | 1274 |
def get_display_name(self): |
1270 | 1275 |
return _('%(name)s #%(id)s') % {'name': self.formdef.name, 'id': self.get_display_id()} |
1271 | 1276 |
wcs/wf/anonymise.py | ||
---|---|---|
15 | 15 |
# along with this program; if not, see <http://www.gnu.org/licenses/>. |
16 | 16 | |
17 | 17 |
from wcs.qommon import _ |
18 |
from wcs.qommon.form import CheckboxWidget |
|
18 | 19 |
from wcs.workflows import WorkflowStatusItem, register_item_class |
19 | 20 | |
20 | 21 | |
... | ... | |
22 | 23 |
description = _('Anonymisation') |
23 | 24 |
key = 'anonymise' |
24 | 25 |
category = 'formdata-action' |
26 |
unlink_user = False |
|
25 | 27 | |
26 | 28 |
def perform(self, formdata): |
27 |
formdata.anonymise() |
|
29 |
if self.unlink_user is True: |
|
30 |
formdata.unlink_user() |
|
31 |
else: |
|
32 |
formdata.anonymise() |
|
33 | ||
34 |
def get_parameters(self): |
|
35 |
return ('unlink_user',) |
|
36 | ||
37 |
def add_parameters_widgets(self, form, parameters, prefix='', formdef=None, **kwargs): |
|
38 |
super().add_parameters_widgets(form, parameters, prefix, formdef, **kwargs) |
|
39 |
if 'unlink_user' in parameters: |
|
40 |
form.add( |
|
41 |
CheckboxWidget, |
|
42 |
'%sunlink_user' % prefix, |
|
43 |
title=_('Only perform form/card user unlinking'), |
|
44 |
hint=_('If checked, this action will only unlink user from the form/card.'), |
|
45 |
value=self.unlink_user, |
|
46 |
) |
|
28 | 47 | |
29 | 48 | |
30 | 49 |
register_item_class(AnonymiseWorkflowStatusItem) |
31 |
- |