X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fchangesutils.py;h=3a4c6dd77a292582592a51072df8688d07fcf589;hb=b5b25234382f20595be0b8dad19f6502fb704b52;hp=3f55fc14a2669028a624a4a0a35be0b2b184ebcb;hpb=ea8de5f8d3fe9c642f5de1c2f186485de844f7f8;p=dak.git diff --git a/daklib/changesutils.py b/daklib/changesutils.py old mode 100644 new mode 100755 index 3f55fc14..3a4c6dd7 --- a/daklib/changesutils.py +++ b/daklib/changesutils.py @@ -84,7 +84,7 @@ def sg_compare (a, b): __all__.append('sg_compare') -def sort_changes(changes_files, session): +def sort_changes(changes_files, session, binaries = None): """Sort into source groups, then sort each source group by version, have source, filename. Finally, sort the source groups by have note, time of oldest upload of each source upload.""" @@ -116,7 +116,7 @@ def sort_changes(changes_files, session): # Determine oldest time and have note status for each source group for source in per_source.keys(): q = session.query(DBSource).filter_by(source = source).all() - per_source[source]["source_in_database"] = len(q)>0 + per_source[source]["source_in_database"] = binaries and -(len(q)>0) or len(q)>0 source_list = per_source[source]["list"] first = source_list[0] oldest = os.stat(first["filename"])[stat.ST_MTIME] @@ -149,40 +149,43 @@ def changes_to_queue(upload, srcqueue, destqueue, session): """Move a changes file to a different queue and mark as approved for the source queue""" - chg = session.query(DBChange).filter_by(changesname=os.path.basename(upload.pkg.changes_file)).one() - chg.approved_for = srcqueue.policy_queue_id + try: + chg = session.query(DBChange).filter_by(changesname=os.path.basename(upload.pkg.changes_file)).one() + except NoResultFound: + return False + + chg.approved_for_id = srcqueue.policy_queue_id for f in chg.files: # update the changes_pending_files row f.queue = destqueue - utils.move(os.path.join(srcqueue.path, f.filename), destqueue.path, perms=int(destqueue.perms, 8)) + # Only worry about unprocessed files + if not f.processed: + utils.move(os.path.join(srcqueue.path, f.filename), destqueue.path, perms=int(destqueue.perms, 8)) - utils.move(os.path.join(new.path, upload.pkg.changes_file), destqueue.path, perms=int(destqueue.perms, 8)) + utils.move(os.path.join(srcqueue.path, upload.pkg.changes_file), destqueue.path, perms=int(destqueue.perms, 8)) chg.in_queue = destqueue session.commit() + return True + __all__.append('changes_to_queue') -def new_accept(upload, session): +def new_accept(upload, dry_run, session): print "ACCEPT" - cnf = Config() - if not Options["No-Action"]: + + if not dry_run: + cnf = Config() + (summary, short_summary) = upload.build_summaries() + destqueue = get_policy_queue('newstage', session) - # XXX: mhy: I think this is wrong as these are all attributes on the - # build and policy queues now - if cnf.FindB("Dinstall::SecurityQueueHandling"): - upload.dump_vars(cnf["Dir::Queue::Embargoed"]) - upload.move_to_queue(get_policy_queue('embargoed')) - upload.queue_build("embargoed", cnf["Dir::Queue::Embargoed"]) - # Check for override disparities - upload.Subst["__SUMMARY__"] = summary - else: - # Just a normal upload, accept it... - (summary, short_summary) = upload.build_summaries() + srcqueue = get_policy_queue_from_path(upload.pkg.directory, session) + + if not srcqueue: + # Assume NEW and hope for the best srcqueue = get_policy_queue('new', session) - destqueue = get_policy_queue('newstage', session) - changes_to_queue(upload, srcqueue, destqueue, session) + changes_to_queue(upload, srcqueue, destqueue, session) __all__.append('new_accept')