ne pas inclure la fonction attribuée au niveau du formdef dans le filtrage sur les fonctions de l'usager (#76682) #301

Merged
fpeters merged 1 commits from wip/76682-merged-roles-dict into main 2023-11-11 08:17:02 +01:00
3 changed files with 25 additions and 6 deletions

View File

@ -1564,7 +1564,7 @@ def test_cards_filter_function(pub, local_user):
)
assert len(resp.json['data']) == 2
# with function obtained via role set on carddef
# make sure formdata functions override formdef functions
carddef.workflow_roles = {'_foobar': role.id}
carddef.store()
carddef.data_class().rebuild_security()
@ -1575,4 +1575,11 @@ def test_cards_filter_function(pub, local_user):
% local_user.name_identifiers[0]
)
)
assert len(resp.json['data']) == 3
assert len(resp.json['data']) == 1
resp = get_app(pub).get(
sign_uri(
'/api/cards/test/list/shared-carddef-custom-view?filter-user-uuid=%s' % user1.name_identifiers[0]
)
)
assert len(resp.json['data']) == 2

View File

@ -2201,6 +2201,17 @@ def test_workflow_roles_dict_change(pub):
formdef.workflow_roles = {'_receiver': '123'}
formdef.store()
formdata = formdef.data_class()()
formdata.workflow_roles = {}
formdata.store()
conn, cur = sql.get_connection_and_cursor()
cur.execute('SELECT workflow_merged_roles_dict FROM %s WHERE id = %s' % (formdef.table_name, formdata.id))
merged_roles_dict = cur.fetchone()[0]
assert merged_roles_dict == {'_receiver': ['123']}
conn.commit()
cur.close()
formdata = formdef.data_class()()
formdata.workflow_roles = {'_receiver': ['_user:123', '_user:456']}
formdata.store()
@ -2208,7 +2219,7 @@ def test_workflow_roles_dict_change(pub):
conn, cur = sql.get_connection_and_cursor()
cur.execute('SELECT workflow_merged_roles_dict FROM %s WHERE id = %s' % (formdef.table_name, formdata.id))
merged_roles_dict = cur.fetchone()[0]
assert merged_roles_dict == {'_receiver': ['123', '_user:123', '_user:456']}
assert merged_roles_dict == {'_receiver': ['_user:123', '_user:456']}
conn.commit()
cur.close()
@ -2219,7 +2230,7 @@ def test_workflow_roles_dict_change(pub):
conn, cur = sql.get_connection_and_cursor()
cur.execute('SELECT workflow_merged_roles_dict FROM %s WHERE id = %s' % (formdef.table_name, formdata.id))
merged_roles_dict = cur.fetchone()[0]
assert merged_roles_dict == {'_receiver': ['234', '_user:123', '_user:456']}
assert merged_roles_dict == {'_receiver': ['_user:123', '_user:456']}
conn.commit()
cur.close()

View File

@ -1213,14 +1213,15 @@ class FormData(StorableObject):
@property
def workflow_merged_roles_dict(self):
merged_dict = {}
for k, v in (self.formdef.workflow_roles or {}).items():
merged_dict[k] = [v]
for k, v in (self.workflow_roles or {}).items():
if k not in merged_dict:
merged_dict[k] = []
if isinstance(v, (int, str)):
v = [str(v)]
merged_dict[k].extend(v)
for k, v in (self.formdef.workflow_roles or {}).items():
if k not in merged_dict and v:
merged_dict[k] = [v]
return merged_dict
@workflow_merged_roles_dict.setter