mirror of
https://git.launchpad.net/ubuntu-dev-tools
synced 2025-03-13 08:01:09 +00:00
requestsync: refactor 'checkNeedsSponsorship'
This commit is contained in:
parent
5748f9d64f
commit
6d924143c0
28
requestsync
28
requestsync
@ -42,32 +42,6 @@ import ubuntutools.common
|
||||
from ubuntutools.requestsync.mail import *
|
||||
from ubuntutools.requestsync.common import *
|
||||
|
||||
def checkNeedsSponsorship(srcpkg):
|
||||
"""
|
||||
Check that the user has the appropriate permissions by checking what
|
||||
Launchpad returns when we check if someone can upload a package or not.
|
||||
|
||||
If they are an indirect or direct member of the ~ubuntu-dev team on
|
||||
Launchpad - sponsorship is not required if the package is in the
|
||||
universe / multiverse component.
|
||||
|
||||
If they are in the ~ubuntu-core-dev team, no sponsorship required.
|
||||
"""
|
||||
if not LpApiWrapper.canUploadPackage(srcpkg):
|
||||
|
||||
print "You are not able to upload this package directly to Ubuntu.\n" \
|
||||
"Your sync request shall require an approval by a member of " \
|
||||
"the appropriate sponsorship team, who shall be subscribed to " \
|
||||
"this bug report.\n" \
|
||||
"This must be done before it can be processed by a member of " \
|
||||
"the Ubuntu Archive team."
|
||||
print "If the above is correct please press Enter."
|
||||
raw_input_exit_on_ctrlc() # Abort if necessary.
|
||||
return True # Sponsorship required.
|
||||
|
||||
# Is a team member, no sponsorship required.
|
||||
return False
|
||||
|
||||
def checkExistingReports(package):
|
||||
""" Check existing bug reports on Launchpad for a possible sync request.
|
||||
|
||||
@ -371,7 +345,7 @@ if __name__ == '__main__':
|
||||
sys.exit(1)
|
||||
|
||||
# -s flag not specified - check if we do need sponsorship.
|
||||
if not sponsorship: sponsorship = checkNeedsSponsorship(srcpkg)
|
||||
if not sponsorship: sponsorship = needSponsorship(srcpkg, component)
|
||||
|
||||
# Check for existing package reports.
|
||||
if not newsource and use_lp_bugs: checkExistingReports(srcpkg)
|
||||
|
@ -20,7 +20,8 @@
|
||||
# Please see the /usr/share/common-licenses/GPL-2 file for the full text
|
||||
# of the GNU General Public License license.
|
||||
|
||||
from ..lp.lpapiwrapper import Distribution
|
||||
from .common import raw_input_exit_on_ctrlc
|
||||
from ..lp.lpapiwrapper import Distribution, PersonTeam
|
||||
from ..lp.udtexceptions import *
|
||||
|
||||
def getDebianSrcPkg(name, release):
|
||||
@ -38,3 +39,21 @@ def getUbuntuSrcPkg(name, release):
|
||||
ubuntu_archive = ubuntu.getArchive()
|
||||
|
||||
return ubuntu_archive.getSourcePackage(name, release)
|
||||
|
||||
def needSponsorship(name, component):
|
||||
'''
|
||||
Check if the user has upload permissions for either the package
|
||||
itself or the component
|
||||
'''
|
||||
archive = Distribution('ubuntu').getArchive()
|
||||
|
||||
need_sponsor = not PersonTeam.getMe().canUploadPackage(archive, name, component)
|
||||
if need_sponsor:
|
||||
print '''You are not able to upload this package directly to Ubuntu.
|
||||
Your sync request shall require an approval by a member of the appropriate
|
||||
sponsorship team, who shall be subscribed to this bug report.
|
||||
This must be done before it can be processed by a member of the Ubuntu Archive
|
||||
team.'''
|
||||
raw_input_exit_on_ctrlc('If the above is correct please press [Enter]: '
|
||||
|
||||
return need_sponsor
|
||||
|
@ -22,6 +22,7 @@
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
from .common import raw_input_exit_on_ctrlc
|
||||
from ..lp.udtexceptions import PackageNotFoundException
|
||||
|
||||
__all__ = ['getDebianSrcPkg', 'getUbuntuSrcPkg']
|
||||
@ -93,3 +94,20 @@ def get_email_address():
|
||||
'EMAIL needs to be set to let this script mail the ' \
|
||||
'sync request.'
|
||||
return myemailaddr
|
||||
|
||||
def needSponsorship(name, component):
|
||||
'''
|
||||
Ask the user if he has upload permissions for the package or the
|
||||
component.
|
||||
'''
|
||||
|
||||
while 1:
|
||||
print "Do you have upload permissions for the '%s' component " \
|
||||
"or the package '%s'?" % (component, name)
|
||||
val = raw_input_exit_on_ctrlc("If in doubt answer 'no'. [y/N]? ")
|
||||
if val.lower() in ('y', 'yes'):
|
||||
return False
|
||||
elif val.lower() in ('n', 'no', ''):
|
||||
return True
|
||||
else:
|
||||
print 'Invalid answer'
|
||||
|
Loading…
x
Reference in New Issue
Block a user