4336: Generate a set of filters matching Alternate names, Nickname attribute and a NameType() selector
svn: r16420
This commit is contained in:
		| @@ -427,6 +427,7 @@ src/Filters/Rules/Person/_Disconnected.py | ||||
| src/Filters/Rules/Person/_Everyone.py | ||||
| src/Filters/Rules/Person/_FamilyWithIncompleteEvent.py | ||||
| src/Filters/Rules/Person/_HasAddress.py | ||||
| src/Filters/Rules/Person/_HasAlternateName.py | ||||
| src/Filters/Rules/Person/_HasAssociation.py | ||||
| src/Filters/Rules/Person/_HasAttribute.py | ||||
| src/Filters/Rules/Person/_HasBirth.py | ||||
| @@ -440,6 +441,9 @@ src/Filters/Rules/Person/_HasGallery.py | ||||
| src/Filters/Rules/Person/_HasIdOf.py | ||||
| src/Filters/Rules/Person/_HasLDS.py | ||||
| src/Filters/Rules/Person/_HasNameOf.py | ||||
| src/Filters/Rules/Person/_HasNameOriginType.py | ||||
| src/Filters/Rules/Person/_HasNameType.py | ||||
| src/Filters/Rules/Person/_HasNickname.py | ||||
| src/Filters/Rules/Person/_HasNote.py | ||||
| src/Filters/Rules/Person/_HasNoteMatchingSubstringOf.py | ||||
| src/Filters/Rules/Person/_HasNoteRegexp.py | ||||
|   | ||||
| @@ -10,6 +10,7 @@ pkgdata_PYTHON = \ | ||||
| 	_FamilyWithIncompleteEvent.py \ | ||||
| 	_HasAttribute.py \ | ||||
| 	_HasAddress.py \ | ||||
| 	_HasAlternateName.py \ | ||||
| 	_HasAssociation.py \ | ||||
| 	_HasBirth.py \ | ||||
| 	_HasCommonAncestorWith.py \ | ||||
| @@ -22,6 +23,9 @@ pkgdata_PYTHON = \ | ||||
| 	_HasIdOf.py \ | ||||
| 	_HasLDS.py \ | ||||
| 	_HasNameOf.py \ | ||||
| 	_HasNameOriginType.py \ | ||||
| 	_HasNameType.py \ | ||||
| 	_HasNickname.py \ | ||||
| 	_HasNote.py \ | ||||
| 	_HasNoteMatchingSubstringOf.py \ | ||||
| 	_HasRelationship.py \ | ||||
|   | ||||
							
								
								
									
										51
									
								
								src/Filters/Rules/Person/_HasAlternateName.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								src/Filters/Rules/Person/_HasAlternateName.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | ||||
| # | ||||
| # Gramps - a GTK+/GNOME based genealogy program | ||||
| # | ||||
| # Copyright (C) 2010  Gramps | ||||
| # | ||||
| # 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 | ||||
| # | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| # Standard Python modules | ||||
| # | ||||
| #------------------------------------------------------------------------- | ||||
| from gen.ggettext import gettext as _ | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| # GRAMPS modules | ||||
| # | ||||
| #------------------------------------------------------------------------- | ||||
| from Filters.Rules._Rule import Rule | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| # HasAlternateName | ||||
| # | ||||
| #------------------------------------------------------------------------- | ||||
| class HasAlternateName(Rule): | ||||
|     """Rule that checks an alternate name""" | ||||
|  | ||||
|     name        = _('People with an alternate name') | ||||
|     description = _("Matches people with an alternate name") | ||||
|     category    = _('General filters') | ||||
|  | ||||
|     def apply(self, db, person): | ||||
|         if person.get_alternate_names(): | ||||
|             return True | ||||
|         else: | ||||
|             return False | ||||
							
								
								
									
										58
									
								
								src/Filters/Rules/Person/_HasNameOriginType.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								src/Filters/Rules/Person/_HasNameOriginType.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | ||||
| # | ||||
| # Gramps - a GTK+/GNOME based genealogy program | ||||
| # | ||||
| # Copyright (C) 2010  Gramps  | ||||
| # | ||||
| # 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 | ||||
| # | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| # Standard Python modules | ||||
| # | ||||
| #------------------------------------------------------------------------- | ||||
| from gen.ggettext import gettext as _ | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| # GRAMPS modules | ||||
| # | ||||
| #------------------------------------------------------------------------- | ||||
| from Filters.Rules._Rule import Rule | ||||
| from gen.lib import NameOriginType | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| # HasNameOriginType | ||||
| # | ||||
| #------------------------------------------------------------------------- | ||||
| class HasNameOriginType(Rule): | ||||
|     """Rule that checks the type of Surname origin""" | ||||
|  | ||||
|     labels      = [ _('Surname origin type:')] | ||||
|     name        = _('People with the <Surname origin type>') | ||||
|     description = _("Matches people with a surname origin") | ||||
|     category    = _('General filters') | ||||
|  | ||||
|     def apply(self, db, person): | ||||
|         if not self.list[0]: | ||||
|             return False | ||||
|         for name in [person.get_primary_name()] + person.get_alternate_names(): | ||||
|             for surname in name.get_surname_list(): | ||||
|                 specified_type = NameOriginType() | ||||
|                 specified_type.set_from_xml_str(self.list[0]) | ||||
|                 if surname.get_origintype() == specified_type: | ||||
|                     return True | ||||
|         return False | ||||
							
								
								
									
										57
									
								
								src/Filters/Rules/Person/_HasNameType.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								src/Filters/Rules/Person/_HasNameType.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,57 @@ | ||||
| # | ||||
| # Gramps - a GTK+/GNOME based genealogy program | ||||
| # | ||||
| # Copyright (C) 2010  Gramps  | ||||
| # | ||||
| # 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 | ||||
| # | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| # Standard Python modules | ||||
| # | ||||
| #------------------------------------------------------------------------- | ||||
| from gen.ggettext import gettext as _ | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| # GRAMPS modules | ||||
| # | ||||
| #------------------------------------------------------------------------- | ||||
| from Filters.Rules._Rule import Rule | ||||
| from gen.lib import NameType | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| # HasNameType | ||||
| # | ||||
| #------------------------------------------------------------------------- | ||||
| class HasNameType(Rule): | ||||
|     """Rule that checks the type of name""" | ||||
|  | ||||
|     labels      = [ _('Name type:')] | ||||
|     name        = _('People with the <Name type>') | ||||
|     description = _("Matches people with a type of name") | ||||
|     category    = _('General filters') | ||||
|  | ||||
|     def apply(self, db, person): | ||||
|         if not self.list[0]: | ||||
|             return False | ||||
|         for name in [person.get_primary_name()] + person.get_alternate_names(): | ||||
|             specified_type = NameType() | ||||
|             specified_type.set_from_xml_str(self.list[0]) | ||||
|             if name.get_type() == specified_type: | ||||
|                 return True | ||||
|         return False | ||||
							
								
								
									
										50
									
								
								src/Filters/Rules/Person/_HasNickname.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								src/Filters/Rules/Person/_HasNickname.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| # | ||||
| # Gramps - a GTK+/GNOME based genealogy program | ||||
| # | ||||
| # Copyright (C) 2010  Gramps | ||||
| # | ||||
| # 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 | ||||
| # | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| # Standard Python modules | ||||
| # | ||||
| #------------------------------------------------------------------------- | ||||
| from gen.ggettext import gettext as _ | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| # GRAMPS modules | ||||
| # | ||||
| #------------------------------------------------------------------------- | ||||
| from Filters.Rules._Rule import Rule | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| # HasNickname | ||||
| # | ||||
| #------------------------------------------------------------------------- | ||||
| class HasNickname(Rule): | ||||
|     """Rule that checks a nickname""" | ||||
|  | ||||
|     name        = _('People with a nickname') | ||||
|     description = _("Matches people with a nickname") | ||||
|     category    = _('General filters') | ||||
|  | ||||
|     def apply(self, db, person): | ||||
|         if person.get_nick_name():  | ||||
|             return True | ||||
|         return False | ||||
| @@ -29,6 +29,7 @@ from _Disconnected import Disconnected | ||||
| from _Everyone import Everyone | ||||
| from _FamilyWithIncompleteEvent import FamilyWithIncompleteEvent | ||||
| from _HasAddress import HasAddress | ||||
| from _HasAlternateName import HasAlternateName | ||||
| from _HasAssociation import HasAssociation | ||||
| from _HasAttribute import HasAttribute | ||||
| from _HasBirth import HasBirth | ||||
| @@ -42,6 +43,9 @@ from _HasGallery import HavePhotos | ||||
| from _HasIdOf import HasIdOf | ||||
| from _HasLDS import HasLDS | ||||
| from _HasNameOf import HasNameOf | ||||
| from _HasNameOriginType import HasNameOriginType | ||||
| from _HasNameType import HasNameType | ||||
| from _HasNickname import HasNickname | ||||
| from _HasNote import HasNote | ||||
| from _HasNoteMatchingSubstringOf import HasNoteMatchingSubstringOf | ||||
| from _HasNoteRegexp import HasNoteRegexp | ||||
| @@ -113,11 +117,15 @@ editor_rule_list = [ | ||||
|     IsMale, | ||||
|     IsDefaultPerson, | ||||
|     IsBookmarked, | ||||
|     HasAlternateName, | ||||
|     HasAddress, | ||||
|     HasAssociation, | ||||
|     HasIdOf, | ||||
|     HasLDS, | ||||
|     HasNameOf, | ||||
|     HasNameOriginType, | ||||
|     HasNameType, | ||||
|     HasNickname, | ||||
|     HasRelationship, | ||||
|     HasDeath, | ||||
|     HasBirth, | ||||
|   | ||||
| @@ -512,6 +512,9 @@ class Person(SourceBase, NoteBase, AttributeBase, MediaBase, | ||||
|         self.alternate_names.append(name) | ||||
|  | ||||
|     def get_nick_name(self): | ||||
|         for name in [self.get_primary_name()] + self.get_alternate_names(): | ||||
|             if name.get_nick_name(): | ||||
|                 return name.get_nick_name() | ||||
|         for attr in self.attribute_list: | ||||
|             if int(attr.type) == AttributeType.NICKNAME: | ||||
|                 return attr.get_value() | ||||
|   | ||||
| @@ -98,6 +98,8 @@ _name2typeclass = { | ||||
|     _('Relationship type:')  : gen.lib.FamilyRelType, | ||||
|     _('Marker type:')        : gen.lib.MarkerType, | ||||
|     _('Note type:')          : gen.lib.NoteType, | ||||
|     _('Name type:')          : gen.lib.NameType, | ||||
|     _('Surname origin type:'): gen.lib.NameOriginType, | ||||
| } | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
|   | ||||
		Reference in New Issue
	
	Block a user