X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=dak%2Fprocess_policy.py;h=2890c8615403b4017710e711194de46f7cda7f7b;hb=fa727dcf0058058565278421d16ea75c156e7fa3;hp=db459607588971ae19c1b80b6dc04dd85b44560a;hpb=2af1fccea2cdefc22dc0bab0540287611014abd1;p=dak.git diff --git a/dak/process_policy.py b/dak/process_policy.py index db459607..2890c861 100755 --- a/dak/process_policy.py +++ b/dak/process_policy.py @@ -56,6 +56,7 @@ Logger = None def do_comments(dir, srcqueue, opref, npref, line, fn, transaction): session = transaction.session + actions = [] for comm in [ x for x in os.listdir(dir) if x.startswith(opref) ]: lines = open(os.path.join(dir, comm)).readlines() if len(lines) == 0 or lines[0] != line + "\n": continue @@ -75,13 +76,19 @@ def do_comments(dir, srcqueue, opref, npref, line, fn, transaction): uploads = session.query(PolicyQueueUpload).filter_by(policy_queue=srcqueue) \ .join(PolicyQueueUpload.changes).filter(DBChange.changesname.startswith(changes_prefix)) \ .order_by(PolicyQueueUpload.source_id) - for u in uploads: - print "Processing changes file: %s" % u.changes.changesname - fn(u, srcqueue, "".join(lines[1:]), transaction) + reason = "".join(lines[1:]) + actions.extend((u, reason) for u in uploads) if opref != npref: newcomm = npref + comm[len(opref):] - transaction.fs.move(os.path.join(dir, comm), os.path.join(dir, newcomm)) + newcomm = utils.find_next_free(os.path.join(dir, newcomm)) + transaction.fs.move(os.path.join(dir, comm), newcomm) + + actions.sort() + + for u, reason in actions: + print("Processing changes file: {0}".format(u.changes.changesname)) + fn(u, srcqueue, reason, transaction) ################################################################################ @@ -162,16 +169,19 @@ def comment_accept(upload, srcqueue, comments, transaction): if upload.source is not None: for f in [ df.poolfile for df in upload.source.srcfiles ]: dst = os.path.join(copydir, f.basename) - fs.copy(f.fullpath, dst, mode=mode) + if not os.path.exists(dst): + fs.copy(f.fullpath, dst, mode=mode) for db_binary in upload.binaries: f = db_binary.poolfile dst = os.path.join(copydir, f.basename) - fs.copy(f.fullpath, dst, mode=mode) + if not os.path.exists(dst): + fs.copy(f.fullpath, dst, mode=mode) src = os.path.join(upload.policy_queue.path, upload.changes.changesname) dst = os.path.join(copydir, upload.changes.changesname) - fs.copy(src, dst, mode=mode) + if not os.path.exists(dst): + fs.copy(src, dst, mode=mode) if upload.source is not None and not Options['No-Action']: urgency = upload.changes.urgency @@ -409,9 +419,9 @@ def main(): # The comments stuff relies on being in the right directory os.chdir(pq.path) + do_comments(commentsdir, pq, "REJECT.", "REJECTED.", "NOTOK", comment_reject, transaction) do_comments(commentsdir, pq, "ACCEPT.", "ACCEPTED.", "OK", comment_accept, transaction) do_comments(commentsdir, pq, "ACCEPTED.", "ACCEPTED.", "OK", comment_accept, transaction) - do_comments(commentsdir, pq, "REJECT.", "REJECTED.", "NOTOK", comment_reject, transaction) remove_unreferenced_binaries(pq, transaction) remove_unreferenced_sources(pq, transaction)