Daniel Diniz <aja...@gmail.com> added the comment: Reviewers: ,
Description: "This is a very long line. I am wondering how it will be wrapped. What will happen to this exceedingly long line? Will it be wrapped? Will it? Really? What will happen? Here's an example: def fact(n): if n > 1: return n * fact(n-1) else: assert n in (0, 1) return 1 What do you think of that?" Please review this at http://codereview.appspot.com/24075 Affected files: M static/upload.py Index: static/upload.py =================================================================== --- static/upload.py (revision 402) +++ static/upload.py (working copy) @@ -61,7 +61,30 @@ # Max size of patch or base file. MAX_UPLOAD_SIZE = 900 * 1024 +#python static/upload.py -R 2771 -F msg66272 --send_mail +fields = {'issue':'title', 'msg':'content', 'file':'description', } +def fetch_item(nodeid, kind='issue', tracker='http://bugs.python.org'): + query_tpl = [('@action', 'export_csv'), ('@filter', 'id'), + ('id', nodeid), ('@columns', fields[kind])] + item_url = '/%s?%s' % (kind, urllib.urlencode(query_tpl)) + content = urllib.urlopen(tracker + item_url).read().split('\r\n') + if content[0] == 'title': + return '[issue%s] %s' % (nodeid, content[1].strip()) + elif content[0] == 'content' or content[0] == 'description': + return content[1].strip() +def fetch(nodeid, debug=True): + kind = 'issue' + if nodeid.startswith('msg'): + kind = 'msg' + elif nodeid.startswith('file'): + kind = 'file' + nodeid = nodeid.replace(kind, '') + result = fetch_item(int(nodeid), kind) + if debug: + logging.info('Fetched "%s: %s"' % (kind, result)) + return result + def GetEmail(prompt): """Prompts the user for their email address and returns it. @@ -453,6 +476,14 @@ group.add_option("--send_mail", action="store_true", dest="send_mail", default=False, help="Send notification email to reviewers.") +# Link options +group = parser.add_option_group("Link options") +group.add_option("-R", "--roundup", action="store", dest="roundup", + metavar="ROUNDUP", default=None, + help="Python tracker issue number to link with.") +group.add_option("-F", "--fetch_descr", action="store", dest="fetch_descr", + metavar="FETCHDESCR", default=None, + help="Tracker file or message to fetch description from.") def GetRpcServer(options): @@ -1291,7 +1322,10 @@ prompt = "Message describing this patch set: " else: prompt = "New issue subject: " - message = options.message or raw_input(prompt).strip() + if options.roundup: + message = fetch(options.roundup) + else: + message = options.message or raw_input(prompt).strip() if not message: ErrorExit("A non-empty message is required") rpc_server = GetRpcServer(options) @@ -1307,11 +1341,16 @@ if "@" in reviewer and not reviewer.split("@")[1].count(".") == 1: ErrorExit("Invalid email address: %s" % reviewer) form_fields.append(("reviewers", options.reviewers)) + tracker_email = 'rep...@bugs.python.org,' if options.cc: for cc in options.cc.split(','): if "@" in cc and not cc.split("@")[1].count(".") == 1: ErrorExit("Invalid email address: %s" % cc) - form_fields.append(("cc", options.cc)) + if options.roundup: + cc = tracker_email + options.cc + form_fields.append(("cc", cc)) + elif options.roundup: + form_fields.append(("cc", tracker_email[:-1])) description = options.description if options.description_file: if options.description: @@ -1319,6 +1358,9 @@ file = open(options.description_file, 'r') description = file.read() file.close() + elif options.fetch_descr: + # XXX Add error handling as above + description = fetch(options.fetch_descr) if description: form_fields.append(("description", description)) # Send a hash of all the base file so the server can determine if a copy ---------- nosy: +ajaksu2 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue2771> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com