diff --git a/debian/changelog b/debian/changelog index 0bcc159..d4d8f1d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -18,11 +18,11 @@ ubuntu-dev-tools (0.137) UNRELEASED; urgency=low * mk-sbuild, pbuilder-dist, ubuntu-build: Add armhf. * pull-debian-source, pull-lp-source: Resolve the source package (via DDE), if a binary package was requested (LP: #617349) - * New Tool: who-can-upload (LP: #876554) + * New Tool: upload-permission: Query upload permissions (LP: #876554) [ Andreas Moog ] * sponsor-patch: Check permission to unsubscribe sponsors-team (LP: #896884) - * grep-merges: We already require a UTF-8 enabled terminal, so encode + * grep-merges: We already require a UTF-8 enabled terminal, so encode package and uploader name in UTF-8 (LP: #694388) -- Andreas Moog Wed, 30 Nov 2011 21:04:39 +0100 diff --git a/who-can-upload b/upload-permission similarity index 63% rename from who-can-upload rename to upload-permission index a0a9f23..b48018b 100755 --- a/who-can-upload +++ b/upload-permission @@ -15,6 +15,7 @@ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. import optparse +import sys from ubuntutools.lp.lpapicache import (Launchpad, Distribution, PersonTeam, Packageset, @@ -26,15 +27,22 @@ def main(): parser.add_option('-r', '--release', default=None, metavar='RELEASE', help='Use RELEASE, rather than the current development ' 'release') + parser.add_option('-a', '--list-uploaders', + default=False, action='store_true', + help='List all the people/teams with upload rights') parser.add_option('-t', '--list-team-members', default=False, action='store_true', - help='List all team members of teams with upload rights') + help='List all team members of teams with upload rights ' + '(implies --list-uploaders)') options, args = parser.parse_args() if len(args) != 1: parser.error("One (and only one) package must be specified") package = args[0] + if options.list_team_members: + options.list_uploaders = True + # Need to be logged in to see uploaders: Launchpad.login() @@ -50,41 +58,48 @@ def main(): spph = archive.getSourcePackage(package) component = spph.getComponent() - component_uploader = archive.getUploadersForComponent( - component_name=component)[0] - print "All upload permissions for %s:" % package - print - print "Component (%s)" % component - print "============" + ("=" * len(component)) - print_uploaders([component_uploader], options.list_team_members) - - packagesets = sorted(Packageset.setsIncludingSource(distroseries=series, - sourcepackagename=package)) - if packagesets: + if options.list_uploaders: + component_uploader = archive.getUploadersForComponent( + component_name=component)[0] + print "All upload permissions for %s:" % package print - print "Packagesets" - print "===========" - for packageset in packagesets: + print "Component (%s)" % component + print "============" + ("=" * len(component)) + print_uploaders([component_uploader], options.list_team_members) + + packagesets = sorted(Packageset.setsIncludingSource( + distroseries=series, + sourcepackagename=package)) + if packagesets: print - print "%s:" % packageset.name - print_uploaders(archive.getUploadersForPackageset( - packageset=packageset), options.list_team_members) + print "Packagesets" + print "===========" + for packageset in packagesets: + print + print "%s:" % packageset.name + print_uploaders(archive.getUploadersForPackageset( + packageset=packageset), options.list_team_members) - ppu_uploaders = archive.getUploadersForPackage(source_package_name=package) - if ppu_uploaders: + ppu_uploaders = archive.getUploadersForPackage( + source_package_name=package) + if ppu_uploaders: + print + print "Per-Package-Uploaders" + print "=====================" + print + print_uploaders(ppu_uploaders, options.list_team_members) print - print "Per-Package-Uploaders" - print "=====================" - print - print_uploaders(ppu_uploaders, options.list_team_members) - print if PersonTeam.me.canUploadPackage(archive, series, package, component): - print "You can upload this package" + print "You can upload this package." else: print "You can not upload this package, yourself." print ("But you can still contribute to it via the sponsorship " "process: https://wiki.ubuntu.com/SponsorshipProcess") + if not options.list_uploaders: + print ("To see who has the necessary upload rights, " + "use the --list-uploaders option.") + sys.exit(1) def print_uploaders(uploaders, expand_teams=False, prefix=''):