]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/dbconn.py
merge with master
[dak.git] / daklib / dbconn.py
index 46d4d3d5791c461ffaed84504ea2367fe18e12dc..b29137221672d7f698fd7459a1f12c0a2ff1c630 100755 (executable)
@@ -35,7 +35,6 @@
 
 import os
 import psycopg2
-import psycopg2.extras
 import traceback
 
 from singleton import Singleton
@@ -133,17 +132,6 @@ class DBConn(Singleton):
         return self.db_con.commit()
 
     ## Get functions
-    def __get_single_row(self, query, values):
-        c = self.db_con.cursor(cursor_factory=psycopg2.extras.DictCursor)
-        c.execute(query, values)
-
-        if c.rowcount < 1:
-            return None
-
-        res = c.fetchone()
-
-        return res
-
     def __get_single_id(self, query, values, cachename=None):
         # This is a bit of a hack but it's an internal function only
         if cachename is not None:
@@ -215,8 +203,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
@@ -328,15 +316,6 @@ class DBConn(Singleton):
         return self.__get_single_id("SELECT id FROM source s WHERE s.source=%(source)s AND s.version=%(version)s",
                                  {'source': source, 'version': version}, cachename='source')
 
-    def get_suite(self, suite):
-        if isinstance(suite, str):
-            suite_id = self.get_suite_id(suite.lower())
-        elif type(suite) == int:
-            suite_id = suite
-
-        return self.__get_single_row("SELECT * FROM suite WHERE id = %(id)s",
-                                     {'id': suite_id})
-
     def get_suite_version(self, source, suite):
         """
         Returns database id for a combination of C{source} and C{suite}.
@@ -419,11 +398,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
@@ -521,10 +500,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()
@@ -535,6 +514,8 @@ 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)
@@ -560,7 +541,7 @@ 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()
@@ -597,31 +578,3 @@ class DBConn(Singleton):
             traceback.print_exc()
             c.execute("ROLLBACK")
             return False
-
-################################################################################
-
-class Suite(object):
-    # This should be kept in sync with the suites table;
-    # we should probably just do introspection on the table
-    # (or maybe use an ORM)
-    _fieldnames = ['announce', 'changelogbase', 'codename', 'commentsdir',
-                   'copychanges', 'copydotdak', 'description', 'id',
-                   'label', 'notautomatic', 'origin', 'overridecodename',
-                   'overridesuite', 'policy_engine', 'priority', 'suite_name',
-                   'untouchable', 'validtime', 'version']
-
-    def __init_fields(self):
-        for k in self._fieldnames:
-            setattr(self, k, None)
-
-    def __init__(self, suite):
-        self.__init_fields()
-        if suite is not None:
-            db_conn = DBConn()
-            suite_data = db_conn.get_suite(suite)
-            if suite_data is not None:
-                for k in suite_data.keys():
-                    setattr(self, k, suite_data[k])
-
-
-