X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fprocess_new.py;h=afd03d23c8283ee5410ac4cc4ab76f83def95c38;hb=e3d2c47d31abaee8ba54fa215704d81bd2be0073;hp=8d4cd6bb6bc00fe03250b1266af7bd0162c94576;hpb=5aa537fb21083ac84fe7bc3bf3ff7e834b5a3add;p=dak.git diff --git a/dak/process_new.py b/dak/process_new.py index 8d4cd6bb..afd03d23 100755 --- a/dak/process_new.py +++ b/dak/process_new.py @@ -457,7 +457,6 @@ def get_reject_reason(reason=''): ################################################################################ def do_new(upload, upload_copy, handler, session): - print "NEW\n" cnf = Config() run_user_inspect_command(upload, upload_copy) @@ -475,6 +474,9 @@ def do_new(upload, upload_copy, handler, session): #if len(byhand) == 0 and len(missing) == 0: # break + if missing: + print "NEW\n" + answer = "XXX" if Options["No-Action"] or Options["Automatic"]: answer = 'S' @@ -532,7 +534,7 @@ def do_new(upload, upload_copy, handler, session): missing = edit_overrides (missing, upload, session) elif answer == 'M' and not Options["Trainee"]: reason = Options.get('Manual-Reject', '') + "\n" - reason = reason + "\n".join([n.comment for n in get_new_comments(upload.changes.source, session=session)]) + reason = reason + "\n\n=====\n\n".join([n.comment for n in get_new_comments(upload.changes.source, session=session)]) reason = get_reject_reason(reason) if reason is not None: Logger.log(["NEW REJECT", upload.changes.changesname]) @@ -568,6 +570,9 @@ def do_new(upload, upload_copy, handler, session): end() sys.exit(0) + if handler.get_action(): + print "PENDING %s\n" % handler.get_action() + ################################################################################ ################################################################################ ################################################################################ @@ -668,6 +673,7 @@ def do_pkg(upload, session): with UploadCopy(upload) as upload_copy: handler = PolicyQueueUploadHandler(upload, session) if handler.get_action() is not None: + print "PENDING %s\n" % handler.get_action() return do_new(upload, upload_copy, handler, session) @@ -693,6 +699,43 @@ def show_new_comments(uploads, session): ################################################################################ +def sort_uploads(uploads, session, nobinaries=False): + sources = {} + sorteduploads = [] + suitesrc = [s.source for s in session.query(DBSource.source). \ + filter(DBSource.suites.any(Suite.suite_name.in_(['unstable', 'experimental'])))] + comments = [p.package for p in session.query(NewComment.package). \ + filter_by(trainee=False).distinct()] + for upload in uploads: + source = upload.changes.source + if not source in sources: + sources[source] = [] + sources[source].append({'upload': upload, + 'date': upload.changes.created, + 'stack': 1, + 'binary': True if source in suitesrc else False, + 'comments': True if source in comments else False}) + for src in sources: + if len(sources[src]) > 1: + changes = sources[src] + firstseen = sorted(changes, key=lambda k: (k['date']))[0]['date'] + changes.sort(key=lambda item:item['date']) + for i in range (0, len(changes)): + changes[i]['date'] = firstseen + changes[i]['stack'] = i + 1 + sorteduploads += sources[src] + if nobinaries: + sorteduploads = [u["upload"] for u in sorted(sorteduploads, + key=lambda k: (k["comments"], k["binary"], + k["date"], -k["stack"]))] + else: + sorteduploads = [u["upload"] for u in sorted(sorteduploads, + key=lambda k: (k["comments"], -k["binary"], + k["date"], -k["stack"]))] + return sorteduploads + +################################################################################ + def end(): accept_count = SummaryStats().accept_count accept_bytes = SummaryStats().accept_bytes @@ -755,7 +798,7 @@ def main(): if len(uploads) > 1: sys.stderr.write("Sorting changes...\n") - uploads.sort() + uploads = sort_uploads(uploads, session, Options["No-Binaries"]) if Options["Comments"]: show_new_comments(uploads, session)