From e30055bd089b464ae3e6992795d2e092bf3660a6 Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Sun, 29 Mar 2009 19:49:24 +0200 Subject: [PATCH] entropy.db.LocalRepository.retrieveDependencies: new argument (feature) retrieveDependencies features a new argument "exclude_deptypes", useful to filter out unwanted dependency types from the results. It is used by entropy.client.interfaces.dep.dependencies_test to ignore PDEPENDs --- libraries/entropy/db.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/libraries/entropy/db.py b/libraries/entropy/db.py index 61774f168..04d31e629 100644 --- a/libraries/entropy/db.py +++ b/libraries/entropy/db.py @@ -2563,7 +2563,8 @@ class LocalRepository: def retrieveManualDependencies(self, idpackage, extended = False): return self.retrieveDependencies(idpackage, extended = extended, deptype = etpConst['spm']['mdepend_id']) - def retrieveDependencies(self, idpackage, extended = False, deptype = None): + def retrieveDependencies(self, idpackage, extended = False, deptype = None, + exclude_deptypes = None): searchdata = [idpackage] @@ -2572,17 +2573,27 @@ class LocalRepository: depstring = ' and dependencies.type = (?)' searchdata.append(deptype) + excluded_deptypes_query = "" + if exclude_deptypes != None: + for dep_type in exclude_deptypes: + excluded_deptypes_query += " AND dependencies.type != %s" % ( + dep_type,) + if extended: self.cursor.execute(""" - SELECT dependenciesreference.dependency,dependencies.type FROM dependencies,dependenciesreference + SELECT dependenciesreference.dependency,dependencies.type + FROM dependencies,dependenciesreference WHERE dependencies.idpackage = (?) AND - dependencies.iddependency = dependenciesreference.iddependency"""+depstring, searchdata) + dependencies.iddependency = dependenciesreference.iddependency %s %s""" % ( + depstring,excluded_deptypes_query,), searchdata) deps = self.cursor.fetchall() else: self.cursor.execute(""" - SELECT dependenciesreference.dependency FROM dependencies,dependenciesreference + SELECT dependenciesreference.dependency + FROM dependencies,dependenciesreference WHERE dependencies.idpackage = (?) AND - dependencies.iddependency = dependenciesreference.iddependency"""+depstring, searchdata) + dependencies.iddependency = dependenciesreference.iddependency %s %s""" % ( + depstring,excluded_deptypes_query,), searchdata) deps = self.fetchall2set(self.cursor.fetchall()) return deps