]> git.decadent.org.uk Git - dak.git/blobdiff - dak/process_new.py
allow newstage to act like unchecked
[dak.git] / dak / process_new.py
index bb7ebc7d664d4e2ea6412eaea82410b0d313b140..ee5d61cf004dc6d67b5081546ace585685f0a4ba 100755 (executable)
@@ -666,6 +666,7 @@ def do_new(upload, session):
             try:
                 check_daily_lock()
                 done = add_overrides (new, upload, session)
+                do_accept(upload, session)
                 Logger.log(["NEW ACCEPT: %s" % (upload.pkg.changes_file)])
             except CantGetLockError:
                 print "Hello? Operator! Give me the number for 911!"
@@ -816,28 +817,46 @@ def lock_package(package):
     finally:
         os.unlink(path)
 
-def changes_to_unchecked(upload, session):
-    """move a changes file to unchecked"""
-    unchecked = get_policy_queue('unchecked', session );
+class clean_holding(object):
+    def __init__(self,pkg):
+        self.pkg = pkg
+
+    def __enter__(self):
+        pass
+
+    def __exit__(self, type, value, traceback):
+        h = Holding()
+
+        for f in self.pkg.files.keys():
+            if os.path.exists(os.path.join(h.holding_dir, f)):
+                os.unlink(os.path.join(h.holding_dir, f))
 
-#    changes.in_queue = unchecked
+
+
+def changes_to_newstage(upload, session):
+    """move a changes file to newstage"""
+    new = get_policy_queue('new', session );
+    newstage = get_policy_queue('newstage', session );
 
     chg = session.query(DBChange).filter_by(changesname=os.path.basename(upload.pkg.changes_file)).one()
-    chg.approved_for = unchecked.policy_queue_id
+    chg.approved_for = newstage.policy_queue_id
 
-    for f in upload.pkg.files:
+    for f in chg.files:
         # update the changes_pending_files row
-        f.queue = unchecked
+        f.queue = newstage
+        utils.move(os.path.join(new.path, f.filename), newstage.path, perms=int(newstage.perms, 8))
 
-    # actually move files
-    upload.move_to_queue(unchecked)
+    utils.move(os.path.join(new.path, upload.pkg.changes_file), newstage.path, perms=int(newstage.perms, 8))
+    chg.in_queue = newstage
+    session.commit()
 
 def _accept(upload, session):
     if Options["No-Action"]:
         return
     (summary, short_summary) = upload.build_summaries()
-#    upload.accept(summary, short_summary, targetqueue)
-    changes_to_unchecked(upload, session)
+    # upload.accept(summary, short_summary, targetqueue)
+
+    changes_to_newstage(upload, session)
 
 def do_accept(upload, session):
     print "ACCEPT"
@@ -886,15 +905,21 @@ def do_pkg(changes_file, session):
 
     try:
         with lock_package(u.pkg.changes["source"]):
-            if not recheck(u, session):
-                return
+            with clean_holding(u.pkg):
+                if not recheck(u, session):
+                    return
 
             # FIXME: This does need byhand checks added!
             new = determine_new(u.pkg.changes, files)
             if new:
                 do_new(u, session)
             else:
-                do_accept(u, session)
+                try:
+                    check_daily_lock()
+                    do_accept(u, session)
+                except CantGetLockError:
+                    print "Hello? Operator! Give me the number for 911!"
+                    print "Dinstall in the locked area, cant process packages, come back later"
 #             (new, byhand) = check_status(files)
 #             if new or byhand:
 #                 if new: