requestsync: move post_bug() to ubuntutools/requestsync/lp.py

This commit is contained in:
Michael Bienia 2009-08-12 13:46:21 +02:00
parent 7ff9aa777a
commit d96e4af643
2 changed files with 36 additions and 48 deletions

View File

@ -41,6 +41,7 @@ import ubuntutools.common
from ubuntutools.requestsync.mail import * from ubuntutools.requestsync.mail import *
from ubuntutools.requestsync.common import * from ubuntutools.requestsync.common import *
from ubuntutools.requestsync.lp import postBug
def checkExistingReports(package): def checkExistingReports(package):
""" Check existing bug reports on Launchpad for a possible sync request. """ Check existing bug reports on Launchpad for a possible sync request.
@ -199,51 +200,6 @@ Content-Type: text/plain; charset=UTF-8
return True return True
def post_bug(source_package, subscribe, status, bugtitle, bugtext):
'''Use python-launchpadlib to submit the sync request.
Return True if successfully posted, otherwise False.'''
import glob, os.path
try:
launchpad = Launchpad.login()
except ImportError:
print >> sys.stderr, 'Importing launchpadlib failed. Is python-launchpadlib installed?'
return False
except IOError, msg:
# No credentials found.
print msg
sys.exit(1)
if source_package:
product_url = "%subuntu/+source/%s" %(launchpad._root_uri, source_package)
else:
# new source package
product_url = "%subuntu" %launchpad._root_uri
print 'Summary:\n%s\n\nDescription:\n%s' % (bugtitle, bugtext)
# ask for confirmation and allow to edit:
print 'Do you want to edit the report before sending [y/N]? Press Control-C to abort.'
raw_input_exit_on_ctrlc()
# Create bug
bug = launchpad.bugs.createBug(description=bugtext, title=bugtitle, target=product_url)
#newly created bugreports have one task
task = bug.bug_tasks[0]
# Only members of ubuntu-bugcontrol can set importance
if PersonTeam.getMe().isLpTeamMember('ubuntu-bugcontrol'):
task.importance = 'Wishlist'
task.status = status
task.lp_save()
subscribe_url = "%s~%s" %(launchpad._root_uri, subscribe)
bug.subscribe(person=subscribe_url)
print 'Sync request filed as bug #%i: %s' % (bug.id,
lp_libsupport.translate_api_web(bug.self_link))
return True
# #
# entry point # entry point
@ -405,7 +361,7 @@ if __name__ == '__main__':
if use_lp_bugs: if use_lp_bugs:
# Map status to the values expected by lp-bugs # Map status to the values expected by lp-bugs
mapping = {'new': 'New', 'confirmed': 'Confirmed'} mapping = {'new': 'New', 'confirmed': 'Confirmed'}
if post_bug(srcpkg, subscribe, mapping[status], title, report): if postBug(srcpkg, subscribe, mapping[status], title, report):
sys.exit(0) sys.exit(0)
# Abort on error: # Abort on error:
print 'Something went wrong. No sync request filed.' print 'Something went wrong. No sync request filed.'

View File

@ -21,8 +21,9 @@
# of the GNU General Public License license. # of the GNU General Public License license.
from .common import raw_input_exit_on_ctrlc from .common import raw_input_exit_on_ctrlc
from ..lp.lpapiwrapper import Distribution, PersonTeam from ..lp.lpapiwrapper import Launchpad, Distribution, PersonTeam, DistributionSourcePackage
from ..lp.udtexceptions import * from ..lp.udtexceptions import *
from ..lp.lp_libsupport import translate_api_web
def getDebianSrcPkg(name, release): def getDebianSrcPkg(name, release):
debian = Distribution('debian') debian = Distribution('debian')
@ -54,6 +55,37 @@ Your sync request shall require an approval by a member of the appropriate
sponsorship team, who shall be subscribed to this bug report. 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 This must be done before it can be processed by a member of the Ubuntu Archive
team.''' team.'''
raw_input_exit_on_ctrlc('If the above is correct please press [Enter]: ' raw_input_exit_on_ctrlc('If the above is correct please press [Enter]: ')
return need_sponsor return need_sponsor
def postBug(srcpkg, subscribe, status, bugtitle, bugtext):
'''
Use the LP API to file the sync request.
'''
print 'The final report is:\nSummary: %s\nDescription:\n%s\n' % (bugtitle, bugtext)
raw_input_exit_on_ctrlc('Press [Enter] to continue and [Ctrl-C] to abort. ')
if srcpkg:
bug_target = DistributionSourcePackage(
'%subuntu/+source/%s' % (Launchpad._root_uri, srcpkg))
else:
# new source package
bug_target = Distribution('ubuntu')
# create bug
bug = Launchpad.bugs.createBug(title = bugtitle, description = bugtext, target = bug_target)
# newly created bugreports have only one task
task = bug.bug_tasks[0]
# only members of ubuntu-bugcontrol can set importance
if PersonTeam.getMe().isLpTeamMember('ubuntu-bugcontrol'):
task.importance = 'Wishlist'
task.status = status
task.lp_save()
bug.subscribe(person = PersonTeam(subscribe))
print 'Sync request filed as bug #%i: %s' % (bug.id,
translate_api_web(bug.self_link))