X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fchangesutils.py;h=35b3d57be454634dac1fc45a29c2d3e380fc0903;hb=5537d969662dd89432dbede1e985d17a7ac632ef;hp=6099b489f50ed204d41ff9b6d6e109b1280d864e;hpb=c0e234e1ab2d026ad96ef522ea66e41d47d6faa3;p=dak.git diff --git a/daklib/changesutils.py b/daklib/changesutils.py index 6099b489..35b3d57b 100644 --- a/daklib/changesutils.py +++ b/daklib/changesutils.py @@ -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): @@ -182,9 +190,14 @@ def new_accept(upload, dry_run, session): else: # Just a normal upload, accept it... (summary, short_summary) = upload.build_summaries() - srcqueue = get_policy_queue('new', session) destqueue = get_policy_queue('newstage', session) + 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) + changes_to_queue(upload, srcqueue, destqueue, session) __all__.append('new_accept')