1#
2# Gramps - a GTK+/GNOME based genealogy program
3#
4# Copyright (C) 2002-2006  Donald N. Allingham
5#
6# This program is free software; you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation; either version 2 of the License, or
9# (at your option) any later version.
10#
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14# GNU General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License
17# along with this program; if not, write to the Free Software
18# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19#
20
21#-------------------------------------------------------------------------
22#
23# Standard Python modules
24#
25#-------------------------------------------------------------------------
26import re
27from ...const import GRAMPS_LOCALE as glocale
28_ = glocale.translation.gettext
29
30#-------------------------------------------------------------------------
31#
32# Gramps modules
33#
34#-------------------------------------------------------------------------
35from . import Rule
36
37#-------------------------------------------------------------------------
38# Objects having notes that contain a substring or match a regular expression
39#-------------------------------------------------------------------------
40class HasNoteRegexBase(Rule):
41    """Objects having notes containing <text>."""
42
43    labels = [ _('Text:')]
44    name = 'Objects having notes containing <text>'
45    description = ("Matches objects whose notes contain a substring "
46                   "or match a regular expression")
47    category = _('General filters')
48    allow_regex = True
49
50    def apply(self, db, person):
51        for handle in person.get_note_list():
52            note = db.get_note_from_handle(handle)
53            if self.match_substring(0, note.get()):
54                return True
55        return False
56