From 3cd0926203e1a6e7c8bd50a8195336c85daf9f25 Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Mon, 2 Mar 2009 21:27:46 +0100 Subject: Fix search --- portato/backend/portage/sets.py | 14 +++++++++++--- portato/gui/windows/main.py | 3 +++ 2 files changed, 14 insertions(+), 3 deletions(-) (limited to 'portato') diff --git a/portato/backend/portage/sets.py b/portato/backend/portage/sets.py index dd8257d..234047b 100644 --- a/portato/backend/portage/sets.py +++ b/portato/backend/portage/sets.py @@ -28,7 +28,7 @@ class Set(object): def find (self, key, masked = False, with_version = True, only_cpv = False): if key is None: key = "" - is_regexp = key == "" or ("*" in key and key[0] not in ("*","=","<",">","~","!")) + is_regexp = key == "" or ("*" in key[1:] and key[0] not in ("=","<",">","~","!")) try: t = self.get_pkgs(key, is_regexp, masked, with_version, only_cpv) @@ -99,9 +99,12 @@ class InstalledSet (Set): if key: t = filter(lambda x: re.search(key, x, re.I), t) - return set(t) else: - return set(system.settings.vartree.dbapi.match(key)) + t = system.settings.vartree.dbapi.match(key) + if not with_version: + t = itt.imap(portage.dep.dep_getkey, t) + + return set(t) class TreeSet (Set): @@ -115,11 +118,16 @@ class TreeSet (Set): if key: t = filter(lambda x: re.search(key, x, re.I), t) + return set(t) + elif masked: t = system.settings.porttree.dbapi.xmatch("match-all", key) else: t = system.settings.porttree.dbapi.match(key) + if not with_version: + t = itt.imap(portage.dep.dep_getkey, t) + return set(t) class AllSet (Set): diff --git a/portato/gui/windows/main.py b/portato/gui/windows/main.py index 793d1b6..5b3bf7e 100644 --- a/portato/gui/windows/main.py +++ b/portato/gui/windows/main.py @@ -1646,6 +1646,9 @@ class MainWindow (Window): """Do a search.""" text = entry.get_text() if text != "": + if not "*" in text: + text = ".*%s.*" % text + packages = system.find_packages(text, with_version = False) if packages == []: -- cgit v1.2.3-70-g09d2 From 980f6b90fe2ad4b4ec95d13bb6472bb949b215b1 Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Mon, 2 Mar 2009 21:49:22 +0100 Subject: Fixed interactive search with category names --- portato/db/dict.py | 2 +- portato/db/sql.py | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'portato') diff --git a/portato/db/dict.py b/portato/db/dict.py index f6edea6..4992df6 100644 --- a/portato/db/dict.py +++ b/portato/db/dict.py @@ -86,7 +86,7 @@ class DictDatabase (Database): try: if self.restrict: - return (pkg for pkg in get_pkgs() if self.restrict.search(pkg.pkg))#if pkg[1].find(self.restrict) != -1) + return (pkg for pkg in get_pkgs() if self.restrict.search(pkg.cat+"/"+pkg.pkg)) else: return get_pkgs() diff --git a/portato/db/sql.py b/portato/db/sql.py index cb252c1..b794d08 100644 --- a/portato/db/sql.py +++ b/portato/db/sql.py @@ -248,6 +248,11 @@ class SQLDatabase (Database): self._restrict = "" else: restrict = restrict.replace(".*","%").replace(".","_") - self._restrict = "AND name LIKE '%%%s%%'" % restrict + + if "/" in restrict: + cat,pkg = restrict.split("/") + self._restrict = "AND name LIKE '%%%s%%' AND cat LIKE '%s'" % (pkg, cat) + else: + self._restrict = "AND (name LIKE '%%%(restrict)s%%' OR cat LIKE '%(restrict)s%%')" % {"restrict":restrict} restrict = property(get_restrict, set_restrict) -- cgit v1.2.3-70-g09d2 From 604bad93c0eecc031ac976cd8665f257c030d194 Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Tue, 3 Mar 2009 21:26:57 +0100 Subject: Fix --- portato/backend/flags.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'portato') diff --git a/portato/backend/flags.py b/portato/backend/flags.py index baa1f37..0c3713d 100644 --- a/portato/backend/flags.py +++ b/portato/backend/flags.py @@ -411,7 +411,7 @@ def write_use_flags (): msg += "=%s %s" % (cpv, comb) else: # add on a per-package-base list = system.split_cpv(cpv) - msg += "%s/%s %s" % (list[0], list[1], combine) + msg += "%s/%s %s" % (list[0], list[1], comb) if not file in file_cache: with open(file, "a") as f: -- cgit v1.2.3-70-g09d2 From 6a6aba15ba92c805fe35da7dcbdaa37bacccb6fd Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Tue, 3 Mar 2009 21:38:21 +0100 Subject: Fix sql search --- portato/db/sql.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'portato') diff --git a/portato/db/sql.py b/portato/db/sql.py index b794d08..6c95bb3 100644 --- a/portato/db/sql.py +++ b/portato/db/sql.py @@ -251,7 +251,7 @@ class SQLDatabase (Database): if "/" in restrict: cat,pkg = restrict.split("/") - self._restrict = "AND name LIKE '%%%s%%' AND cat LIKE '%s'" % (pkg, cat) + self._restrict = "AND name LIKE '%s%%' AND cat LIKE '%s'" % (pkg, cat) else: self._restrict = "AND (name LIKE '%%%(restrict)s%%' OR cat LIKE '%(restrict)s%%')" % {"restrict":restrict} -- cgit v1.2.3-70-g09d2