From 452e77b1f94be12375b389ae2f4553f7b6bf38b3 Mon Sep 17 00:00:00 2001 From: Michiel Nauta Date: Wed, 20 Apr 2011 13:33:02 +0000 Subject: [PATCH] 4284: Common ancestor filter ignores persons without ancestors svn: r17167 --- src/Filters/Rules/Person/_HasCommonAncestorWith.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Filters/Rules/Person/_HasCommonAncestorWith.py b/src/Filters/Rules/Person/_HasCommonAncestorWith.py index 1782ba868..3086278e0 100644 --- a/src/Filters/Rules/Person/_HasCommonAncestorWith.py +++ b/src/Filters/Rules/Person/_HasCommonAncestorWith.py @@ -66,6 +66,11 @@ class HasCommonAncestorWith(Rule): def add_ancs(self, db, person): if person and person.handle not in self.ancestor_cache: self.ancestor_cache[person.handle] = set() + # We are going to compare ancestors of one person with that of + # another person; if that other person is an ancestor and itself + # has no ancestors is must be included, this is achieved by the + # little trick of making a person his own ancestor. + self.ancestor_cache[person.handle].add(person.handle) else: return @@ -78,7 +83,6 @@ class HasCommonAncestorWith(Rule): if par and par.handle not in self.ancestor_cache: self.add_ancs(db, par) if par: - self.ancestor_cache[person.handle].add(par) self.ancestor_cache[person.handle] |= self.ancestor_cache[par.handle] def reset(self):