]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/dbconn.py
merge from master with sqla
[dak.git] / daklib / dbconn.py
index 89072918a2f2c25f4a7a5c81bf39fa7c26ca36ad..a1ac7038ce8cb920fea6ac6a9e80fe20855ad2f1 100755 (executable)
@@ -73,7 +73,8 @@ class DBConn(Singleton):
     ## Connection functions
     def __createconn(self):
         cnf = Config()
-        connstr = "dbname=%s" % cnf["DB::Name"]
+        connstr = "dbname=%s" % "projectbstew" #cnf["DB::Name"]
+        print( "connstr: %s "% connstr)
         if cnf["DB::Host"]:
            connstr += " host=%s" % cnf["DB::Host"]
         if cnf["DB::Port"] and cnf["DB::Port"] != "-1":
@@ -168,7 +169,11 @@ class DBConn(Singleton):
         @return: the database id for the given suite
 
         """
-        return self.__get_id('id', 'suite', 'suite_name', suite)
+        suiteid = self.__get_id('id', 'suite', 'suite_name', suite)
+        if suiteid is None:
+            return None
+        else:
+            return int(suiteid)
 
     def get_section_id(self, section):
         """
@@ -203,8 +208,8 @@ class DBConn(Singleton):
         Returns database id for given override C{type}.
         Results are kept in a cache during runtime to minimize database queries.
 
-        @type type: string
-        @param type: The name of the override type
+        @type override_type: string
+        @param override_type: The name of the override type
 
         @rtype: int
         @return: the database id for the given override type
@@ -398,11 +403,11 @@ class DBConn(Singleton):
             else:
                 row = cursor.fetchone()
 
-                if row[1] != size or row[2] != md5sum:
+                if row[1] != int(size) or row[2] != md5sum:
                     res =  -2
 
                 else:
-                    self.caches[cachename].SetValue(values, row[0])
+                    self.caches['files'].SetValue(values, row[0])
                     res = row[0]
 
         return res
@@ -500,10 +505,10 @@ class DBConn(Singleton):
 
         @type bin_id: int
         @param bin_id: the id of the binary
-        @type fullpath: string
-        @param fullpath: the path of the file being associated with the binary
+        @type fullpaths: list
+        @param fullpaths: the list of paths of the file being associated with the binary
 
-        @return True upon success
+        @return: True upon success
         """
 
         c = self.db_con.cursor()
@@ -514,11 +519,14 @@ class DBConn(Singleton):
             for fullpath in fullpaths:
                 (path, file) = os.path.split(fullpath)
 
+                if path.startswith( "./" ):
+                    path = path[2:]
                 # Get the necessary IDs ...
                 file_id = self.get_or_set_contents_file_id(file)
                 path_id = self.get_or_set_contents_path_id(path)
 
-                c.execute("""INSERT INTO content_associations
+                c.execute("""INSERT INTO deb_contents
+                
                                (binary_pkg, filepath, filename)
                            VALUES ( '%d', '%d', '%d')""" % (bin_id, path_id, file_id) )
 
@@ -539,18 +547,22 @@ class DBConn(Singleton):
         @type fullpaths: list
         @param fullpaths: the list of paths of the file being associated with the binary
 
-        @return True upon success
+        @return: True upon success
         """
 
         c = self.db_con.cursor()
 
         c.execute("BEGIN WORK")
         try:
+            arch_id = self.get_architecture_id(package['Architecture'])
 
-                # Remove any already existing recorded files for this package
+            # Remove any already existing recorded files for this package
             c.execute("""DELETE FROM pending_content_associations
                          WHERE package=%(Package)s
-                         AND version=%(Version)s""", package )
+                         AND version=%(Version)s
+                         AND architecture=%(ArchID)s""", {'Package': package['Package'],
+                                                          'Version': package['Version'],
+                                                          'ArchID':  arch_id})
 
             for fullpath in fullpaths:
                 (path, file) = os.path.split(fullpath)
@@ -562,9 +574,10 @@ class DBConn(Singleton):
                 path_id = self.get_or_set_contents_path_id(path)
 
                 c.execute("""INSERT INTO pending_content_associations
-                               (package, version, filepath, filename)
-                           VALUES (%%(Package)s, %%(Version)s, '%d', '%d')""" % (path_id, file_id),
-                          package )
+                               (package, version, architecture, filepath, filename)
+                            VALUES (%%(Package)s, %%(Version)s, '%d', '%d', '%d')"""
+                    % (arch_id, path_id, file_id), package )
+
             c.execute("COMMIT")
             return True
         except: