Skip to content

Commit 2bb698a

Browse files
committed
Quality pass
1 parent 2c5c1cc commit 2bb698a

File tree

1 file changed

+14
-18
lines changed

1 file changed

+14
-18
lines changed

sonar/permissions/permissions.py

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ def to_json(self, perm_type: Optional[str] = None) -> types.JsonPermissions:
9393
if not v or len(v) == 0:
9494
continue
9595
perms += [{p[:-1]: k, "permissions": encode(v, order)}]
96+
if perm_type:
97+
perms = [p for p in perms if perm_type[:-1] in p.keys()]
9698
return perms if len(perms) > 0 else None
9799

98100
def export(self) -> types.ObjectJsonRepr:
@@ -135,19 +137,17 @@ def clear(self) -> Permissions:
135137
"""
136138
return self.set({"users": {}, "groups": {}})
137139

138-
def users(self) -> dict[str, list[str]]:
140+
def users(self) -> types.JsonPermissions:
139141
"""
140142
:return: User permissions of an object
141-
:rtype: list (for QualityGate and QualityProfile) or dict (for other objects)
142143
"""
143144
if self.permissions is None:
144145
self.read()
145146
return self.to_json(perm_type="users")
146147

147-
def groups(self) -> dict[str, list[str]]:
148+
def groups(self) -> types.JsonPermissions:
148149
"""
149150
:return: Group permissions of an object
150-
:rtype: list (for QualityGate and QualityProfile) or dict (for other objects)
151151
"""
152152
if self.permissions is None:
153153
self.read()
@@ -402,25 +402,21 @@ def diffarray(perms_1: list[str], perms_2: list[str]) -> list[str]:
402402

403403
def white_list(perms: types.JsonPermissions, allowed_perms: list[str]) -> types.JsonPermissions:
404404
"""Returns permissions filtered from a white list of allowed permissions"""
405-
resulting_perms = {}
406-
for perm_type, sub_perms in perms.items():
407-
# if perm_type not in PERMISSION_TYPES:
408-
# continue
409-
resulting_perms[perm_type] = {}
410-
for user_or_group, original_perms in sub_perms.items():
411-
resulting_perms[perm_type][user_or_group] = [p for p in original_perms if p in allowed_perms]
405+
resulting_perms = []
406+
for perm in perms:
407+
k = "users" if "users" in perm else "groups"
408+
v = [p for p in perm["permissions"] if p in allowed_perms]
409+
resulting_perms.append({k: perm[k], "permissions": v})
412410
return resulting_perms
413411

414412

415413
def black_list(perms: types.JsonPermissions, disallowed_perms: list[str]) -> types.JsonPermissions:
416414
"""Returns permissions filtered after a black list of disallowed permissions"""
417-
resulting_perms = {}
418-
for perm_type, sub_perms in perms.items():
419-
# if perm_type not in PERMISSION_TYPES:
420-
# continue
421-
resulting_perms[perm_type] = {}
422-
for user_or_group, original_perms in sub_perms.items():
423-
resulting_perms[perm_type][user_or_group] = [p for p in original_perms if p not in disallowed_perms]
415+
resulting_perms = []
416+
for perm in perms:
417+
k = "users" if "users" in perm else "groups"
418+
v = [p for p in perm["permissions"] if p not in disallowed_perms]
419+
resulting_perms.append({k: perm[k], "permissions": v})
424420
return resulting_perms
425421

426422

0 commit comments

Comments
 (0)