7183: Fix source note citation filter

This commit is contained in:
Nick Hall 2014-01-25 19:37:35 +00:00
parent b2dec24edf
commit 3d094d7be1
4 changed files with 70 additions and 1 deletions

View File

@ -38,6 +38,7 @@ from ._hasnoteregexp import HasNoteRegexp
from ._hasreferencecountof import HasReferenceCountOf from ._hasreferencecountof import HasReferenceCountOf
from ._hassource import HasSource from ._hassource import HasSource
from ._hassourceidof import HasSourceIdOf from ._hassourceidof import HasSourceIdOf
from ._hassourcenoteregexp import HasSourceNoteRegexp
from ._matchesfilter import MatchesFilter from ._matchesfilter import MatchesFilter
from ._matchespagesubstringof import MatchesPageSubstringOf from ._matchespagesubstringof import MatchesPageSubstringOf
from ._matchesrepositoryfilter import MatchesRepositoryFilter from ._matchesrepositoryfilter import MatchesRepositoryFilter
@ -58,6 +59,7 @@ editor_rule_list = [
HasReferenceCountOf, HasReferenceCountOf,
HasSource, HasSource,
HasSourceIdOf, HasSourceIdOf,
HasSourceNoteRegexp,
MatchesFilter, MatchesFilter,
MatchesPageSubstringOf, MatchesPageSubstringOf,
MatchesRepositoryFilter, MatchesRepositoryFilter,

View File

@ -0,0 +1,61 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2014 Nick Hall
#
# 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
#
"""
Filter rule to match citations whose source notes contain a substring or
match a regular expression.
"""
#-------------------------------------------------------------------------
#
# Standard python modules
#
#-------------------------------------------------------------------------
from ....const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
#-------------------------------------------------------------------------
#
# Gramps modules
#
#-------------------------------------------------------------------------
from .._hasnoteregexbase import HasNoteRegexBase
#-------------------------------------------------------------------------
#
# HasSourceNoteRegexp
#
#-------------------------------------------------------------------------
class HasSourceNoteRegexp(HasNoteRegexBase):
"""
Rule that checks if a citation has a source note that contains a
substring or matches a regular expression.
"""
name = _('Citations having source notes containing <text>')
description = _("Matches citations whose source notes contain a substring "
"or match a regular expression")
category = _('Source filters')
def apply(self, db, citation):
source = db.get_source_from_handle(citation.get_reference_handle())
if HasNoteRegexBase.apply(self, db, source):
return True
return False

View File

@ -46,7 +46,8 @@ from gramps.gen.constfunc import cuni
from gramps.gen.filters import GenericFilterFactory, rules from gramps.gen.filters import GenericFilterFactory, rules
from gramps.gen.filters.rules.citation import (RegExpIdOf, HasCitation, HasTag, from gramps.gen.filters.rules.citation import (RegExpIdOf, HasCitation, HasTag,
HasNoteRegexp, MatchesFilter, HasNoteRegexp, MatchesFilter,
HasSource, RegExpSourceIdOf) HasSource, RegExpSourceIdOf,
HasSourceNoteRegexp)
from gramps.gen.utils.string import conf_strings from gramps.gen.utils.string import conf_strings
GenericCitationFilter = GenericFilterFactory('Citation') GenericCitationFilter = GenericFilterFactory('Citation')
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
@ -184,6 +185,10 @@ class CitationSidebarFilter(SidebarFilter):
rule = HasNoteRegexp([note], use_regex=regex) rule = HasNoteRegexp([note], use_regex=regex)
generic_filter.add_rule(rule) generic_filter.add_rule(rule)
if src_note:
rule = HasSourceNoteRegexp([src_note], use_regex=regex)
generic_filter.add_rule(rule)
# check the Tag # check the Tag
if tag: if tag:
model = self.tag.get_model() model = self.tag.get_model()

View File

@ -56,6 +56,7 @@ gramps/gen/filters/rules/citation/_hasnoteregexp.py
gramps/gen/filters/rules/citation/_hasreferencecountof.py gramps/gen/filters/rules/citation/_hasreferencecountof.py
gramps/gen/filters/rules/citation/_hassource.py gramps/gen/filters/rules/citation/_hassource.py
gramps/gen/filters/rules/citation/_hassourceidof.py gramps/gen/filters/rules/citation/_hassourceidof.py
gramps/gen/filters/rules/citation/_hassourcenoteregexp.py
gramps/gen/filters/rules/citation/_hastag.py gramps/gen/filters/rules/citation/_hastag.py
gramps/gen/filters/rules/citation/_matchesfilter.py gramps/gen/filters/rules/citation/_matchesfilter.py
gramps/gen/filters/rules/citation/_matchespagesubstringof.py gramps/gen/filters/rules/citation/_matchespagesubstringof.py