X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fchangesutils.py;h=3a4c6dd77a292582592a51072df8688d07fcf589;hb=ec257c02a5d62fd27844c70814acd9616b24b4c8;hp=6099b489f50ed204d41ff9b6d6e109b1280d864e;hpb=c0e234e1ab2d026ad96ef522ea66e41d47d6faa3;p=dak.git diff --git a/daklib/changesutils.py b/daklib/changesutils.py old mode 100644 new mode 100755 index 6099b489..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,18 +149,26 @@ 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(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, dry_run, session): @@ -170,21 +178,14 @@ def new_accept(upload, dry_run, session): 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')