@@ -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
403403def 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
415413def 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