7860: Add new place HasData rule
This commit is contained in:
parent
8be5616802
commit
7ec60ae6a3
@ -37,6 +37,7 @@ from ._hassourceof import HasSourceOf
|
|||||||
from ._placeprivate import PlacePrivate
|
from ._placeprivate import PlacePrivate
|
||||||
from ._matchesfilter import MatchesFilter
|
from ._matchesfilter import MatchesFilter
|
||||||
from ._hasplace import HasPlace
|
from ._hasplace import HasPlace
|
||||||
|
from ._hasdata import HasData
|
||||||
from ._hasnolatorlon import HasNoLatOrLon
|
from ._hasnolatorlon import HasNoLatOrLon
|
||||||
from ._inlatlonneighborhood import InLatLonNeighborhood
|
from ._inlatlonneighborhood import InLatLonNeighborhood
|
||||||
from ._matcheseventfilter import MatchesEventFilter
|
from ._matcheseventfilter import MatchesEventFilter
|
||||||
@ -58,7 +59,7 @@ editor_rule_list = [
|
|||||||
PlacePrivate,
|
PlacePrivate,
|
||||||
MatchesFilter,
|
MatchesFilter,
|
||||||
MatchesSourceConfidence,
|
MatchesSourceConfidence,
|
||||||
HasPlace,
|
HasData,
|
||||||
HasNoLatOrLon,
|
HasNoLatOrLon,
|
||||||
InLatLonNeighborhood,
|
InLatLonNeighborhood,
|
||||||
MatchesEventFilter,
|
MatchesEventFilter,
|
||||||
|
83
gramps/gen/filters/rules/place/_hasdata.py
Normal file
83
gramps/gen/filters/rules/place/_hasdata.py
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
#
|
||||||
|
# Gramps - a GTK+/GNOME based genealogy program
|
||||||
|
#
|
||||||
|
# Copyright (C) 2002-2006 Donald N. Allingham
|
||||||
|
# Copyright (C) 2015 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
#
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Standard Python modules
|
||||||
|
#
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
from ....const import GRAMPS_LOCALE as glocale
|
||||||
|
_ = glocale.translation.sgettext
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# GRAMPS modules
|
||||||
|
#
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
from .. import Rule
|
||||||
|
from ....lib import PlaceType
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# HasData
|
||||||
|
#
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
class HasData(Rule):
|
||||||
|
"""
|
||||||
|
Rule that checks for a place with a particular value
|
||||||
|
"""
|
||||||
|
|
||||||
|
labels = [ _('Name:'),
|
||||||
|
_('Place type:'),
|
||||||
|
_('Code:'),
|
||||||
|
]
|
||||||
|
name = _('Places matching parameters')
|
||||||
|
description = _('Matches places with particular parameters')
|
||||||
|
category = _('General filters')
|
||||||
|
allow_regex = True
|
||||||
|
|
||||||
|
def prepare(self, dbase):
|
||||||
|
self.place_type = self.list[1]
|
||||||
|
|
||||||
|
if self.place_type:
|
||||||
|
self.place_type = PlaceType()
|
||||||
|
self.place_type.set_from_xml_str(self.list[1])
|
||||||
|
|
||||||
|
def apply(self, db, place):
|
||||||
|
if not self.match_name(place):
|
||||||
|
return False
|
||||||
|
|
||||||
|
if self.place_type and place.get_type() != self.place_type:
|
||||||
|
return False
|
||||||
|
|
||||||
|
if not self.match_substring(2, place.get_code()):
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
def match_name(self, place):
|
||||||
|
"""
|
||||||
|
Match any name in a list of names.
|
||||||
|
"""
|
||||||
|
for name in place.get_all_names():
|
||||||
|
if self.match_substring(0, name):
|
||||||
|
return True
|
||||||
|
return False
|
@ -63,7 +63,7 @@ from gramps.gen.const import RULE_GLADE, URL_MANUAL_PAGE
|
|||||||
from ..display import display_help
|
from ..display import display_help
|
||||||
from gramps.gen.errors import WindowActiveError
|
from gramps.gen.errors import WindowActiveError
|
||||||
from gramps.gen.lib import (AttributeType, EventType, FamilyRelType,
|
from gramps.gen.lib import (AttributeType, EventType, FamilyRelType,
|
||||||
NameOriginType, NameType, NoteType)
|
NameOriginType, NameType, NoteType, PlaceType)
|
||||||
from gramps.gen.filters import rules
|
from gramps.gen.filters import rules
|
||||||
from ..autocomp import StandardCustomSelector, fill_entry
|
from ..autocomp import StandardCustomSelector, fill_entry
|
||||||
from ..selectors import SelectorFactory
|
from ..selectors import SelectorFactory
|
||||||
@ -107,6 +107,7 @@ _name2typeclass = {
|
|||||||
_('Note type:') : NoteType,
|
_('Note type:') : NoteType,
|
||||||
_('Name type:') : NameType,
|
_('Name type:') : NameType,
|
||||||
_('Surname origin type:'): NameOriginType,
|
_('Surname origin type:'): NameOriginType,
|
||||||
|
_('Place type:') : PlaceType,
|
||||||
}
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
@ -560,6 +561,8 @@ class EditRule(ManagedWindow):
|
|||||||
additional = self.db.get_name_types()
|
additional = self.db.get_name_types()
|
||||||
elif v == _('Surname origin type:'):
|
elif v == _('Surname origin type:'):
|
||||||
additional = self.db.get_origin_types()
|
additional = self.db.get_origin_types()
|
||||||
|
elif v == _('Place type:'):
|
||||||
|
additional = self.db.get_place_types()
|
||||||
t = MySelect(_name2typeclass[v], additional)
|
t = MySelect(_name2typeclass[v], additional)
|
||||||
elif v == _('Inclusive:'):
|
elif v == _('Inclusive:'):
|
||||||
t = MyBoolean(_('Include original person'))
|
t = MyBoolean(_('Include original person'))
|
||||||
|
Loading…
Reference in New Issue
Block a user