]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/changes.py
Merge commit 'public/process-new' into process-new
[dak.git] / daklib / changes.py
old mode 100755 (executable)
new mode 100644 (file)
index 596b746..4d2bcfe
@@ -179,7 +179,7 @@ class Changes(object):
 
     @session_wrapper
     def remove_known_changes(self, session=None):
-        session.delete(get_knownchange(self.changes_file, session))
+        session.delete(get_dbchange(self.changes_file, session))
 
     def mark_missing_fields(self):
         """add "missing" in fields which we will require for the known_changes table"""
@@ -188,7 +188,7 @@ class Changes(object):
                 self.changes[key]='missing'
 
     @session_wrapper
-    def add_known_changes(self, dirpath, session=None):
+    def add_known_changes(self, dirpath, in_queue=None, session=None):
         """add "missing" in fields which we will require for the known_changes table"""
         cnf = Config()
 
@@ -200,28 +200,43 @@ class Changes(object):
         multivalues = {}
         for key in ("distribution", "architecture", "binary"):
             if isinstance(self.changes[key], dict):
-                multivalues[key] = ", ".join(self.changes[key].keys())
+                multivalues[key] = " ".join(self.changes[key].keys())
             else:
-                multivalues[key] = self.changes[key].keys()
-
-        session.execute(
-            """INSERT INTO known_changes
-              (changesname, seen, source, binaries, architecture, version,
-              distribution, urgency, maintainer, fingerprint, changedby, date)
-              VALUES (:changesfile,:filetime,:source,:binary, :architecture,
-              :version,:distribution,:urgency,:maintainer,:fingerprint,:changedby,:date)""",
-              { 'changesfile':  self.changes_file,
-                'filetime':     filetime,
-                'source':       self.changes["source"],
-                'binary':       multivalues["binary"],
-                'architecture': multivalues["architecture"],
-                'version':      self.changes["version"],
-                'distribution': multivalues["distribution"],
-                'urgency':      self.changes["urgency"],
-                'maintainer':   self.changes["maintainer"],
-                'fingerprint':  self.changes["fingerprint"],
-                'changedby':    self.changes["changed-by"],
-                'date':         self.changes["date"]} )
+                multivalues[key] = self.changes[key]
+
+        chg = DBChange()
+        chg.chagnesfile = self.change_file
+        chg.seen = filetime
+        chg.in_queue_id = in_queue
+        chg.source = self.chagnes["source"]
+        chg.binaries = multivalues["binary"]
+        chg.architecture = multivalues["architecture"]
+        chg.version = self.changes["version"]
+        chg.distribution = multivalues["distribution"]
+        chg.urgency = self.changes["urgency"]
+        chg.maintainer = self.changes["maintainer"]
+        chg.fingerprint = self.changes["fingerprint"]
+        chg.changedby = self.changes["changed-by"]
+        chg.date = self.changes["date"]
+        
+        session.add(chg)
+
+        chg_files = []
+        for chg_fn in self.files.keys():
+            cpf = ChangePendingFile()
+            cpf.filename = chg_fn
+            cpf.size = self.files[chg_fn]['size']
+            cpf.md5sum = self.files[chg_fn]['md5sum']
+
+            session.add(cpf)
+            chg_files.append(cpf)
+
+        chg.files = chg_files
+
+        session.commit()
+        chg = session.query(DBChange).filter_by(changesname = self.changes_file).one();
+        
+        return chg
 
     def unknown_files_fields(self, name):
         return sorted(list( set(self.files[name].keys()) -