Skip to content

Commit

Permalink
get_user_and_role_names_for_db returns two sets
Browse files Browse the repository at this point in the history
  • Loading branch information
jirik committed Nov 28, 2023
1 parent 2214031 commit a841702
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 20 deletions.
21 changes: 13 additions & 8 deletions src/layman/common/prime_db_schema/publications.py
Original file line number Diff line number Diff line change
Expand Up @@ -427,12 +427,17 @@ def check_publication_info(workspace_name, info):


def get_user_and_role_names_for_db(users_and_roles_list, workspace_name):
result_set = set(users_and_roles_list)
result_set.discard(ROLE_EVERYONE)
user_names, role_names = split_user_and_role_names(users_and_roles_list)

users_set = set(user_names)
user_info = users.get_user_infos(workspace_name)
if user_info:
result_set.discard(workspace_name)
return result_set
users_set.discard(workspace_name)

roles_set = set(role_names)
roles_set.discard(ROLE_EVERYONE)

return users_set, roles_set


def insert_publication(workspace_name, info):
Expand Down Expand Up @@ -469,8 +474,8 @@ def insert_publication(workspace_name, info):
)
pub_id = db_util.run_query(insert_publications_sql, data)[0][0]

read_users = get_user_and_role_names_for_db(info['access_rights']['read'], workspace_name)
write_users = get_user_and_role_names_for_db(info['access_rights']['write'], workspace_name)
read_users = get_user_and_role_names_for_db(info['access_rights']['read'], workspace_name)[0]
write_users = get_user_and_role_names_for_db(info['access_rights']['write'], workspace_name)[0]
rights.insert_rights(pub_id,
read_users,
'read')
Expand Down Expand Up @@ -514,8 +519,8 @@ def update_publication(workspace_name, info):
if info['access_rights'].get(right_type):
usernames_list = info["access_rights"].get(right_type)
access_rights_changes[right_type]['EVERYONE'] = ROLE_EVERYONE in usernames_list
usernames_list_clear = get_user_and_role_names_for_db(usernames_list, workspace_name)
usernames_old_list_clear = get_user_and_role_names_for_db(access_rights_changes[right_type]['username_list_old'], workspace_name)
usernames_list_clear = get_user_and_role_names_for_db(usernames_list, workspace_name)[0]
usernames_old_list_clear = get_user_and_role_names_for_db(access_rights_changes[right_type]['username_list_old'], workspace_name)[0]
access_rights_changes[right_type]['add'] = usernames_list_clear.difference(usernames_old_list_clear)
access_rights_changes[right_type]['remove'] = usernames_old_list_clear.difference(usernames_list_clear)

Expand Down
34 changes: 22 additions & 12 deletions src/layman/common/prime_db_schema/publications_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,23 +184,33 @@ def test_get_user_and_role_names_for_db():
userinfo['sub'] = '20'
users.ensure_user(id_workspace_user, userinfo)

list = publications.get_user_and_role_names_for_db({username, }, workspace_name)
assert list == {username, }, list
user_names, role_names = publications.get_user_and_role_names_for_db({username, }, workspace_name)
assert user_names == {username}
assert role_names == set()

list = publications.get_user_and_role_names_for_db({username, workspace_name, }, workspace_name)
assert list == {username, workspace_name, }, list
user_names, role_names = publications.get_user_and_role_names_for_db({username, workspace_name, }, workspace_name)
assert user_names == {username, workspace_name}
assert role_names == set()

list = publications.get_user_and_role_names_for_db({username, }, username)
assert list == set(), list
user_names, role_names = publications.get_user_and_role_names_for_db({username, }, username)
assert user_names == set()
assert role_names == set()

list = publications.get_user_and_role_names_for_db({username, workspace_name, }, username)
assert list == {workspace_name, }, list
user_names, role_names = publications.get_user_and_role_names_for_db({username, workspace_name, }, username)
assert user_names == {workspace_name}
assert role_names == set()

list = publications.get_user_and_role_names_for_db({username, settings.RIGHTS_EVERYONE_ROLE, }, workspace_name)
assert list == {username, }, list
user_names, role_names = publications.get_user_and_role_names_for_db({username, settings.RIGHTS_EVERYONE_ROLE, }, workspace_name)
assert user_names == {username}
assert role_names == set()

list = publications.get_user_and_role_names_for_db({username, settings.RIGHTS_EVERYONE_ROLE, }, username)
assert list == set(), list
user_names, role_names = publications.get_user_and_role_names_for_db({username, settings.RIGHTS_EVERYONE_ROLE, }, username)
assert user_names == set()
assert role_names == set()

user_names, role_names = publications.get_user_and_role_names_for_db({workspace_name, settings.RIGHTS_EVERYONE_ROLE, 'ROLE1'}, username)
assert user_names == {workspace_name}
assert role_names == {'ROLE1'}

users.delete_user(username)
workspaces.delete_workspace(workspace_name)
Expand Down

0 comments on commit a841702

Please sign in to comment.