]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/changesutils.py
Attempt to fix BYHAND handling
[dak.git] / daklib / changesutils.py
index 3f55fc14a2669028a624a4a0a35be0b2b184ebcb..35b3d57be454634dac1fc45a29c2d3e380fc0903 100644 (file)
@@ -149,24 +149,34 @@ 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()
 
         # XXX: mhy: I think this is wrong as these are all attributes on the
@@ -180,9 +190,14 @@ def new_accept(upload, 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')