Daniel Diniz <aja...@gmail.com> added the comment: Reviewers: ,
Message: While this is a test issue, the attached diff is a crude first draft of a patched upload.py that makes linking to the Python Tracker a bit easier. Here's the command line and output: $ python static/upload.py -R 400608 -F msg32813 Upload server: [...] Loaded authentication cookies [...] Issue created. URL: http://codereview.appspot.com/25073 Uploading base file for static/upload.py And the help is: $ python static/upload.py -h | tail -n5 Link options: -R ROUNDUP, --roundup=ROUNDUP Python tracker issue number to link with. -F FETCHDESCR, --fetch_descr=FETCHDESCR Tracker file or message to fetch description from. I like it :) Description: wish we could expunge the deleted ones Please review this at http://codereview.appspot.com/25073 Affected files: M static/upload.py Index: static/upload.py =================================================================== --- static/upload.py (revision 402) +++ static/upload.py (working copy) @@ -61,7 +61,31 @@ # Max size of patch or base file. MAX_UPLOAD_SIZE = 900 * 1024 +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): + try: + result = fetch_item(int(nodeid)) + except ValueError: + if nodeid.startswith('msg'): + nodeid = nodeid.replace('msg', '') + result = fetch_item(int(nodeid), 'msg') + elif nodeid.startswith('file'): + nodeid = nodeid.replace('file', '') + result = fetch_item(int(nodeid), 'file') + else: + raise + return result + def GetEmail(prompt): """Prompts the user for their email address and returns it. @@ -453,6 +477,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 +1323,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 +1342,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 +1359,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/issue400608> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com