7183: Fix source note citation filter

This commit is contained in:
Nick Hall 2014-01-25 19:18:28 +00:00
parent e22bd2bfcb
commit 0972d72079
5 changed files with 70 additions and 1 deletions

View File

@ -642,6 +642,7 @@ src/Filters/Rules/Citation/_HasNoteRegexp.py
src/Filters/Rules/Citation/_HasReferenceCountOf.py src/Filters/Rules/Citation/_HasReferenceCountOf.py
src/Filters/Rules/Citation/_HasSource.py src/Filters/Rules/Citation/_HasSource.py
src/Filters/Rules/Citation/_HasSourceIdOf.py src/Filters/Rules/Citation/_HasSourceIdOf.py
src/Filters/Rules/Citation/_HasSourceNoteRegexp.py
src/Filters/Rules/Citation/_MatchesFilter.py src/Filters/Rules/Citation/_MatchesFilter.py
src/Filters/Rules/Citation/_MatchesPageSubstringOf.py src/Filters/Rules/Citation/_MatchesPageSubstringOf.py
src/Filters/Rules/Citation/_RegExpIdOf.py src/Filters/Rules/Citation/_RegExpIdOf.py

View File

@ -17,6 +17,7 @@ pkgpython_PYTHON = \
_HasReferenceCountOf.py \ _HasReferenceCountOf.py \
_HasSource.py \ _HasSource.py \
_HasSourceIdOf.py \ _HasSourceIdOf.py \
_HasSourceNoteRegexp.py \
_MatchesFilter.py \ _MatchesFilter.py \
_MatchesPageSubstringOf.py \ _MatchesPageSubstringOf.py \
_MatchesRepositoryFilter.py \ _MatchesRepositoryFilter.py \

View File

@ -0,0 +1,60 @@
#
# 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 gen.ggettext import gettext as _
#-------------------------------------------------------------------------
#
# Gramps modules
#
#-------------------------------------------------------------------------
from Filters.Rules._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

@ -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
@ -57,6 +58,7 @@ editor_rule_list = [
HasReferenceCountOf, HasReferenceCountOf,
HasSource, HasSource,
HasSourceIdOf, HasSourceIdOf,
HasSourceNoteRegexp,
MatchesFilter, MatchesFilter,
MatchesPageSubstringOf, MatchesPageSubstringOf,
MatchesRepositoryFilter, MatchesRepositoryFilter,

View File

@ -45,7 +45,8 @@ import gen.lib
from Filters.SideBar import SidebarFilter from Filters.SideBar import SidebarFilter
from Filters import GenericFilterFactory, build_filter_model, Rules from Filters import GenericFilterFactory, build_filter_model, Rules
from Filters.Rules.Citation import (RegExpIdOf, HasCitation, HasNoteRegexp, from Filters.Rules.Citation import (RegExpIdOf, HasCitation, HasNoteRegexp,
MatchesFilter, HasSource, RegExpSourceIdOf) MatchesFilter, HasSource, RegExpSourceIdOf,
HasSourceNoteRegexp)
from Utils import confidence from Utils import confidence
GenericCitationFilter = GenericFilterFactory('Citation') GenericCitationFilter = GenericFilterFactory('Citation')
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
@ -173,6 +174,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)
if self.generic.get_active() != 0: if self.generic.get_active() != 0:
model = self.generic.get_model() model = self.generic.get_model()
node = self.generic.get_active_iter() node = self.generic.get_active_iter()