From 0d2ed79e46868e71498f1bffad13f80864cd814e Mon Sep 17 00:00:00 2001 From: Brian Matherly Date: Sat, 15 Mar 2008 21:03:33 +0000 Subject: [PATCH] 0001938: Substring filter for notes does not work. svn: r10324 --- src/Filters/Rules/Note/Makefile.am | 4 +- ...{_HasNoteRegexp.py => _MatchesRegexpOf.py} | 108 ++++++++++-------- ...gSubstringOf.py => _MatchesSubstringOf.py} | 18 ++- src/Filters/Rules/Note/__init__.py | 8 +- 4 files changed, 83 insertions(+), 55 deletions(-) rename src/Filters/Rules/Note/{_HasNoteRegexp.py => _MatchesRegexpOf.py} (63%) rename src/Filters/Rules/Note/{_HasNoteMatchingSubstringOf.py => _MatchesSubstringOf.py} (75%) diff --git a/src/Filters/Rules/Note/Makefile.am b/src/Filters/Rules/Note/Makefile.am index 2e92cad59..054b2b0b2 100644 --- a/src/Filters/Rules/Note/Makefile.am +++ b/src/Filters/Rules/Note/Makefile.am @@ -6,8 +6,8 @@ pkgdata_PYTHON = \ _AllNotes.py\ _HasIdOf.py\ _HasMarkerOf.py\ - _HasNoteMatchingSubstringOf.py\ - _HasNoteRegexp.py\ + _MatchesSubstringOf.py\ + _MatchesRegexpOf.py\ _HasNote.py\ _HasReferenceCountOf.py\ _MatchesFilter.py\ diff --git a/src/Filters/Rules/Note/_HasNoteRegexp.py b/src/Filters/Rules/Note/_MatchesRegexpOf.py similarity index 63% rename from src/Filters/Rules/Note/_HasNoteRegexp.py rename to src/Filters/Rules/Note/_MatchesRegexpOf.py index 0220e1915..26d649e2c 100644 --- a/src/Filters/Rules/Note/_HasNoteRegexp.py +++ b/src/Filters/Rules/Note/_MatchesRegexpOf.py @@ -1,45 +1,63 @@ -# -# Gramps - a GTK+/GNOME based genealogy program -# -# Copyright (C) 2002-2006 Donald N. Allingham -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# - -# $Id$ - -#------------------------------------------------------------------------- -# -# Standard Python modules -# -#------------------------------------------------------------------------- -from gettext import gettext as _ - -#------------------------------------------------------------------------- -# -# GRAMPS modules -# -#------------------------------------------------------------------------- -from Filters.Rules._HasNoteRegexBase import HasNoteRegexBase - -#------------------------------------------------------------------------- -# "Repos having notes that contain a substring" -#------------------------------------------------------------------------- -class HasNoteRegexp(HasNoteRegexBase): - - name = _('Notes having notes ' - 'containing ') - description = _("Matches notes whose notes contain text " - "matching a regular expression") +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2002-2006 Donald N. Allingham +# Copyright (C) 2008 Brian G. Matherly +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +# $Id: _HasNoteRegexp.py 9912 2008-01-22 09:17:46Z acraphae $ + +#------------------------------------------------------------------------- +# +# Standard Python modules +# +#------------------------------------------------------------------------- +import re +from gettext import gettext as _ + +#------------------------------------------------------------------------- +# +# GRAMPS modules +# +#------------------------------------------------------------------------- +from Filters.Rules import Rule + +#------------------------------------------------------------------------- +# "Repos having notes that contain a substring" +#------------------------------------------------------------------------- +class MatchesRegexpOf(Rule): + + labels = [ _('Regular expression:')] + name = _('Notes containing ') + description = _("Matches notes who contain text " + "matching a regular expression") + category = _('General filters') + + def __init__(self, list): + Rule.__init__(self, list) + + try: + self.match = re.compile(list[0], re.I|re.U|re.L) + except: + self.match = re.compile('') + + def apply(self, db, note): + """ Apply the filter """ + text = unicode(note.get()) + if self.match.match(text) != None: + return True + return False diff --git a/src/Filters/Rules/Note/_HasNoteMatchingSubstringOf.py b/src/Filters/Rules/Note/_MatchesSubstringOf.py similarity index 75% rename from src/Filters/Rules/Note/_HasNoteMatchingSubstringOf.py rename to src/Filters/Rules/Note/_MatchesSubstringOf.py index 136e7a1d5..e8a5a35a8 100644 --- a/src/Filters/Rules/Note/_HasNoteMatchingSubstringOf.py +++ b/src/Filters/Rules/Note/_MatchesSubstringOf.py @@ -2,6 +2,7 @@ # Gramps - a GTK+/GNOME based genealogy program # # Copyright (C) 2002-2006 Donald N. Allingham +# Copyright (C) 2008 Brian G. Matherly # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -32,14 +33,23 @@ from gettext import gettext as _ # GRAMPS modules # #------------------------------------------------------------------------- -from Filters.Rules._HasNoteSubstrBase import HasNoteSubstrBase +from Filters.Rules import Rule #------------------------------------------------------------------------- # "Events having notes that contain a substring" #------------------------------------------------------------------------- -class HasNoteMatchingSubstringOf(HasNoteSubstrBase): +class MatchesSubstringOf(Rule): """Notes having notes containing """ - name = _('Notes having notes containing ') - description = _("Matches notes whose notes contain text " + labels = [ _('Substring:')] + name = _('Notes containing ') + description = _("Matches notes who contain text " "matching a substring") + category = _('General filters') + + def apply(self, db, note): + """ Apply the filter """ + text = unicode(note.get()) + if text.upper().find(self.list[0].upper()) != -1: + return True + return False diff --git a/src/Filters/Rules/Note/__init__.py b/src/Filters/Rules/Note/__init__.py index 6eeb83bcc..ea01536f9 100644 --- a/src/Filters/Rules/Note/__init__.py +++ b/src/Filters/Rules/Note/__init__.py @@ -29,8 +29,8 @@ from _AllNotes import AllNotes from _HasIdOf import HasIdOf from _HasMarkerOf import HasMarkerOf from _RegExpIdOf import RegExpIdOf -from _HasNoteRegexp import HasNoteRegexp -from _HasNoteMatchingSubstringOf import HasNoteMatchingSubstringOf +from _MatchesRegexpOf import MatchesRegexpOf +from _MatchesSubstringOf import MatchesSubstringOf from _HasReferenceCountOf import HasReferenceCountOf from _NotePrivate import NotePrivate from _MatchesFilter import MatchesFilter @@ -42,8 +42,8 @@ editor_rule_list = [ HasMarkerOf, RegExpIdOf, HasNote, - HasNoteRegexp, - HasNoteMatchingSubstringOf, + MatchesRegexpOf, + MatchesSubstringOf, HasReferenceCountOf, NotePrivate, MatchesFilter,