]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/changesutils.py
missing the chg parameter
[dak.git] / daklib / changesutils.py
index 3f55fc14a2669028a624a4a0a35be0b2b184ebcb..b268add58810c7e7242d09ca72c04eb769ef753a 100644 (file)
@@ -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,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')