X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fdbconn.py;h=3fad3f50dbba4701bdce5cabaee80eba51c06096;hb=8c5aeba3e18751fd6a09d62e9c7bcf7bd56fd881;hp=5bd1d76595717043fb744d1715d33612e8d9c442;hpb=9f371390bb90395b2f2f0b65c91c21047896774a;p=dak.git diff --git a/daklib/dbconn.py b/daklib/dbconn.py index 5bd1d765..3fad3f50 100755 --- a/daklib/dbconn.py +++ b/daklib/dbconn.py @@ -452,7 +452,33 @@ class DBConn(Singleton): return id - def insert_content_paths(self, package, fullpaths): + def get_suite_architectures(self, suite): + """ + Returns list of architectures for C{suite}. + + @type suite: string, int + @param suite: the suite name or the suite_id + + @rtype: list + @return: the list of architectures for I{suite} + """ + + suite_id = None + if type(suite) == str: + suite_id = self.get_suite_id(suite) + elif type(suite) == int: + suite_id = suite + else: + return None + + c = self.db_con.cursor() + c.execute( """SELECT a.arch_string FROM suite_architectures sa + JOIN architecture a ON (a.id = sa.architecture) + WHERE suite='%s'""" % suite_id ) + + return map(lambda x: x[0], c.fetchall()) + + def insert_content_paths(self, bin_id, fullpaths): """ Make sure given path is associated with given binary id @@ -466,11 +492,47 @@ class DBConn(Singleton): c = self.db_con.cursor() + c.execute("BEGIN WORK") + try: + + for fullpath in fullpaths: + (path, file) = os.path.split(fullpath) + + # 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 + (binary_pkg, filepath, filename) + VALUES ( '%d', '%d', '%d')""" % (bin_id, path_id, file_id) ) + + c.execute("COMMIT") + return True + except: + traceback.print_exc() + c.execute("ROLLBACK") + return False + + def insert_pending_content_paths(self, package, fullpaths): + """ + Make sure given paths are temporarily associated with given + package + + @type package: dict + @param package: the package to associate with should have been read in from the binary control file + @type fullpaths: list + @param fullpaths: the list of paths of the file being associated with the binary + + @return True upon success + """ + + c = self.db_con.cursor() + c.execute("BEGIN WORK") try: # Remove any already existing recorded files for this package - c.execute("""DELETE FROM temp_content_associations + c.execute("""DELETE FROM pending_content_associations WHERE package=%(Package)s AND version=%(Version)s""", package ) @@ -481,7 +543,7 @@ class DBConn(Singleton): file_id = self.get_or_set_contents_file_id(file) path_id = self.get_or_set_contents_path_id(path) - c.execute("""INSERT INTO temp_content_associations + c.execute("""INSERT INTO pending_content_associations (package, version, filepath, filename) VALUES (%%(Package)s, %%(Version)s, '%d', '%d')""" % (path_id, file_id), package )