Use EditBugReport instead of requestsync's edit_report. Drop that.

This commit is contained in:
Stefano Rivera 2011-11-13 20:15:19 +02:00
parent f06bc5b375
commit d4fbed617f
5 changed files with 29 additions and 108 deletions

View File

@ -26,8 +26,7 @@ from ubuntutools.lp.lpapicache import Launchpad, Distribution
from ubuntutools.lp.udtexceptions import PackageNotFoundException
from ubuntutools.config import UDTConfig
from ubuntutools.rdepends import query_rdepends, RDependsException
from ubuntutools.requestsync.common import edit_report
from ubuntutools.question import YesNoQuestion
from ubuntutools.question import YesNoQuestion, EditBugReport
class DestinationException(Exception):
@ -195,7 +194,9 @@ def request_backport(package_spph, source, destinations):
+ [""]
) % subst)
subject, body = edit_report(subject, body, changes_required=True)
editor = EditBugReport(subject, body)
editor.edit()
subject, body = editor.get_report()
Logger.normal('The final report is:\nSummary: %s\nDescription:\n%s\n',
subject, body)

View File

@ -36,8 +36,8 @@ from distro_info import UbuntuDistroInfo
from ubuntutools.config import UDTConfig, ubu_email
from ubuntutools.lp import udtexceptions
from ubuntutools.misc import require_utf8
from ubuntutools.requestsync.common import (edit_report, get_debian_changelog,
raw_input_exit_on_ctrlc)
from ubuntutools.question import confirmation_prompt, EditBugReport
from ubuntutools.requestsync.common import get_debian_changelog
#
# entry point
@ -205,8 +205,7 @@ def main():
print ("'%s' doesn't exist in 'Ubuntu %s'.\n"
"Do you want to sync a new package?"
% (srcpkg, release))
raw_input_exit_on_ctrlc('Press [Enter] to continue '
'or [Ctrl-C] to abort. ')
confirmation_prompt()
newsource = True
# Get the requested Debian source package
@ -283,8 +282,7 @@ def main():
'>>> ENTER_EXPLANATION_HERE <<<\n\n')
if need_interaction:
raw_input_exit_on_ctrlc('Press [Enter] to continue.'
'Press [Ctrl-C] to abort now. ')
confirmation_prompt()
base_version = force_base_version or ubuntu_version
@ -306,8 +304,13 @@ def main():
changelog = "XXX FIXME: add changelog here XXX"
report += changelog
(title, report) = edit_report(title, report,
changes_required=need_interaction)
editor = EditBugReport(title, report)
if need_interaction:
editor.edit()
else:
editor.optional_edit()
title, report = editor.get_report()
if 'XXX FIXME' in report:
print >> sys.stderr, ("E: changelog boilerplate found in report, "
"please manually add changelog when using '-C'")

View File

@ -22,22 +22,10 @@
import os
import sys
import urllib2
import re
import tempfile
from debian.changelog import Changelog
from ubuntutools import subprocess
def raw_input_exit_on_ctrlc(*args, **kwargs):
'''
A wrapper around raw_input() to exit with a normalized message on Control-C
'''
try:
return raw_input(*args, **kwargs)
except KeyboardInterrupt:
print '\nAbort requested. No sync request filed.'
sys.exit(1)
def get_changelog(srcpkg, distro):
'''
Download and return a parsed changelog for srcpackage, from
@ -83,68 +71,3 @@ def get_debian_changelog(srcpkg, version):
break
new_entries.append(unicode(block))
return u''.join(new_entries)
def edit_report(subject, body, changes_required = False):
'''
Ask if the user wants to edit a report (consisting of subject and body)
in sensible-editor.
If changes_required is True then the file has to be edited before we
can proceed.
Returns (new_subject, new_body).
'''
editing_finished = False
while not editing_finished:
report = 'Summary (one line):\n%s\n\nDescription:\n%s' % (subject, body)
if not changes_required:
print 'Currently the report looks as follows:\n%s' % report
while True:
val = raw_input_exit_on_ctrlc('Do you want to edit the report '
'[y/N]? ')
if val.lower() in ('y', 'yes'):
break
elif val.lower() in ('n', 'no', ''):
editing_finished = True
break
else:
print 'Invalid answer.'
if not editing_finished:
# Create tempfile and remember mtime
report_file = tempfile.NamedTemporaryFile(prefix='requestsync_')
report_file.write(report.encode('utf-8'))
report_file.flush()
mtime_before = os.stat(report_file.name).st_mtime
# Launch editor
try:
subprocess.check_call(['sensible-editor', report_file.name])
except subprocess.CalledProcessError, e:
print >> sys.stderr, ('Error calling sensible-editor: %s\n'
'Aborting.' % e)
sys.exit(1)
# Check if the tempfile has been changed
if changes_required:
if mtime_before == os.stat(report_file.name).st_mtime:
print ('The report has not been changed, but you have to '
'explain why the Ubuntu changes can be dropped.')
raw_input_exit_on_ctrlc('Press [Enter] to retry or '
'[Control-C] to abort. ')
else:
changes_required = False
report_file.seek(0)
report = report_file.read().decode('utf-8')
report_file.close()
# Undecorate report again
(subject, body) = report.split("\nDescription:\n", 1)
# Remove prefix and whitespace from subject
subject = re.sub('^Summary \(one line\):\s*', '', subject,
1).strip()
return (subject, body)

View File

@ -26,9 +26,9 @@ import urllib2
from debian.deb822 import Changes
from distro_info import DebianDistroInfo
from ubuntutools.requestsync.common import raw_input_exit_on_ctrlc
from ubuntutools.lp.lpapicache import (Launchpad, Distribution, PersonTeam,
DistributionSourcePackage)
from ubuntutools.question import confirmation_prompt
def get_debian_srcpkg(name, release):
debian = Distribution('debian')
@ -60,7 +60,7 @@ 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] ')
confirmation_prompt()
return need_sponsor
@ -88,8 +88,7 @@ def check_existing_reports(srcpkg):
'Please check the above URL to verify this before '
'continuing.'
% (bug.title, bug.web_link))
raw_input_exit_on_ctrlc('Press [Enter] to continue or [Ctrl-C] '
'to abort. ')
confirmation_prompt()
def get_ubuntu_delta_changelog(srcpkg):
'''
@ -133,7 +132,7 @@ def post_bug(srcpkg, subscribe, status, bugtitle, bugtext):
print ('The final report is:\nSummary: %s\nDescription:\n%s\n'
% (bugtitle, bugtext))
raw_input_exit_on_ctrlc('Press [Enter] to continue or [Ctrl-C] to abort. ')
confirmation_prompt()
if srcpkg:
bug_target = DistributionSourcePackage(

View File

@ -30,8 +30,8 @@ from devscripts.logger import Logger
from distro_info import DebianDistroInfo
from ubuntutools.archive import rmadison, FakeSPPH
from ubuntutools.requestsync.common import (get_changelog,
raw_input_exit_on_ctrlc)
from ubuntutools.requestsync.common import get_changelog
from ubuntutools.question import confirmation_prompt, YesNoQuestion
from ubuntutools import subprocess
from ubuntutools.lp.udtexceptions import PackageNotFoundException
@ -71,17 +71,12 @@ def need_sponsorship(name, component, release):
component.
'''
while True:
print ("Do you have upload permissions for the '%s' component "
"or the package '%s' in Ubuntu %s?"
% (component, name, release))
val = raw_input_exit_on_ctrlc("If in doubt answer 'n'. [y/N]? ")
if val.lower() in ('y', 'yes'):
return False
elif val.lower() in ('n', 'no', ''):
return True
else:
print 'Invalid answer'
val = YesNoQuestion().ask("Do you have upload permissions for the "
"'%s' component or the package '%s' in "
"Ubuntu %s?\n"
"If in doubt answer 'n'."
% (component, name, release), 'no')
return val == 'no'
def check_existing_reports(srcpkg):
'''
@ -90,7 +85,7 @@ def check_existing_reports(srcpkg):
print ('Please check on '
'https://bugs.launchpad.net/ubuntu/+source/%s/+bugs\n'
'for duplicate sync requests before continuing.' % srcpkg)
raw_input_exit_on_ctrlc('Press [Enter] to continue or [Ctrl-C] to abort. ')
confirmation_prompt()
def get_ubuntu_delta_changelog(srcpkg):
'''
@ -166,7 +161,7 @@ Content-Type: text/plain; charset=UTF-8
%s''' % (myemailaddr, to, bugtitle, signed_report)
print 'The final report is:\n%s' % mail
raw_input_exit_on_ctrlc('Press [Enter] to continue or [Ctrl-C] to abort. ')
confirmation_prompt()
# connect to the server
try: