2006-08-26 Alex Roitman <shura@gramps-project.org>

* src/Filters/Rules/Person/__init__.py (register): Add dictionary
	for private rules.
	* src/Filters/_FilterParser.py (startElement): Support parsing for
	private rules.



svn: r7272
This commit is contained in:
Alex Roitman 2006-08-26 19:39:32 +00:00
parent 13bca83d4c
commit 096613dfd1
3 changed files with 23 additions and 7 deletions

View File

@ -1,3 +1,9 @@
2006-08-26 Alex Roitman <shura@gramps-project.org>
* src/Filters/Rules/Person/__init__.py (register): Add dictionary
for private rules.
* src/Filters/_FilterParser.py (startElement): Support parsing for
private rules.
2006-08-26 Don Allingham <don@gramps-project.org>
* src/GrampsDb/_GrampsDbBase.py (GrampsDbBase.get_name_group_mapping): convert
group as name used as a key back to unicode (bug #389)

View File

@ -93,6 +93,9 @@ from _RegExpName import RegExpName
from _MatchIdOf import MatchIdOf
from _RegExpIdOf import RegExpIdOf
# This is the name->class storage for private rule classes
private = {}
#-------------------------------------------------------------------------
#
# This is used by Custom Filter Editor tool
@ -156,4 +159,5 @@ editor_rule_list = [
]
def register(rule):
private[rule.__name__] = rule
editor_rule_list.append(rule)

View File

@ -91,15 +91,21 @@ class FilterParser(handler.ContentHandler):
except (ImportError, NameError, AttributeError ):
# Now try to use name from Rules.Namespace
mc_match = save_name.split('.')
last_name = mc_match[-1]
try:
exec 'self.r = Rules.%s.%s' % (
self.namespace,mc_match[-1])
except (ImportError, NameError ):
print "ERROR: Filter rule '%s' in "\
"filter '%s' not found!"\
% (save_name,self.f.get_name())
self.r = None
return
self.namespace,last_name)
except (ImportError, NameError, AttributeError ):
# Now try the private rule
try:
exec "self.r = Rules.%s.private['%s']" % (
self.namespace,last_name)
except KeyError:
print "ERROR: Filter rule '%s' in "\
"filter '%s' not found!"\
% (save_name,self.f.get_name())
self.r = None
return
self.a = []
elif tag == "arg":
self.a.append(attrs['value'])