osclib/core: maintainers_get(): rework to properly supports groups.
Previously, group members were only added if no maintainers were present whereas group members should always be considered. Additionally, project queries never included group members. Now groups are included in both.
This commit is contained in:
parent
038bec6113
commit
ffcee027c0
@ -55,14 +55,22 @@ def owner_fallback(apiurl, project, package):
|
||||
@memoize(session=True)
|
||||
def maintainers_get(apiurl, project, package=None):
|
||||
if package is None:
|
||||
meta = ET.fromstringlist(show_project_meta(apiurl, project))
|
||||
return [p.get('userid') for p in meta.findall('.//person') if p.get('role') == 'maintainer']
|
||||
meta = ETL.fromstringlist(show_project_meta(apiurl, project))
|
||||
maintainers = meta.xpath('//person[@role="maintainer"]/@userid')
|
||||
|
||||
groups = meta.xpath('//group[@role="maintainer"]/@groupid')
|
||||
maintainers.extend(groups_members(apiurl, groups))
|
||||
|
||||
return maintainers
|
||||
|
||||
# Ugly reparse, but real xpath makes the rest much cleaner.
|
||||
root = owner_fallback(apiurl, project, package)
|
||||
maintainers = [p.get('name') for p in root.findall('.//person') if p.get('role') == 'maintainer']
|
||||
if not maintainers:
|
||||
for group in [p.get('name') for p in root.findall('.//group') if p.get('role') == 'maintainer']:
|
||||
maintainers = maintainers + group_members(apiurl, group)
|
||||
root = ETL.fromstringlist(ET.tostringlist(root))
|
||||
maintainers = root.xpath('//person[@role="maintainer"]/@name')
|
||||
|
||||
groups = root.xpath('//group[@role="maintainer"]/@name')
|
||||
maintainers.extend(groups_members(apiurl, groups))
|
||||
|
||||
return maintainers
|
||||
|
||||
@memoize(session=True)
|
||||
|
Loading…
x
Reference in New Issue
Block a user