]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/changes.py
changes: Use @session_wrapper
[dak.git] / daklib / changes.py
index c5ac64a917d99c7f1b871ce6d198e1ec53185d84..dd5e373c87dc33942909f51dde3aa3a98634cc15 100755 (executable)
@@ -29,7 +29,6 @@ Changes class for dak
 
 import os
 import stat
-import time
 
 import datetime
 from cPickle import Unpickler, Pickler
@@ -178,35 +177,33 @@ class Changes(object):
 
         return summary
 
+    @session_wrapper
     def remove_known_changes(self, session=None):
-        if session is None:
-            session = DBConn().session()
-            privatetrans = True
-
         session.delete(get_knownchange(self.changes_file, session))
 
-        if privatetrans:
-            session.commit()
-            session.close()
+    def mark_missing_fields(self):
+        """add "missing" in fields which we will require for the known_changes table"""
+        for key in ['urgency', 'maintainer', 'fingerprint', 'changed-by' ]:
+            if (not self.changes.has_key(key)) or (not self.changes[key]):
+                self.changes[key]='missing'
 
-    def add_known_changes(self, queue, session=None):
+    @session_wrapper
+    def add_known_changes(self, dirpath, session=None):
+        """add "missing" in fields which we will require for the known_changes table"""
         cnf = Config()
 
-        if session is None:
-            session = DBConn().session()
-            privatetrans = True
-
-        dirpath = cnf["Dir::Queue::%s" % (queue) ]
         changesfile = os.path.join(dirpath, self.changes_file)
         filetime = datetime.datetime.fromtimestamp(os.path.getctime(changesfile))
 
+        self.mark_missing_fields()
+
         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':changesfile,
+              { 'changesfile':self.changes_file,
                 'filetime':filetime,
                 'source':self.changes["source"],
                 'binary':self.changes["binary"],