From cad20f42f1db0e6473246466f6b8a707450bccb7 Mon Sep 17 00:00:00 2001 From: Doug Blank Date: Sat, 28 Dec 2013 13:32:15 -0500 Subject: [PATCH] Allow an attribute lookup on a list to select from the list --- gramps/gen/merge/diff.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/gramps/gen/merge/diff.py b/gramps/gen/merge/diff.py index 1d579e896..b7c795b82 100644 --- a/gramps/gen/merge/diff.py +++ b/gramps/gen/merge/diff.py @@ -450,6 +450,15 @@ class Struct(object): elif isinstance(self.struct, HandleClass): struct = self.handle_join(self.struct) return getattr(struct, attr) + elif isinstance(self.struct, (list, tuple)): + # then, let's make this select from the list + sublist = [getattr(Struct(item, self.db), attr) for item in self.struct] + if len(sublist) == 0: + return None + elif len(sublist) == 1: + return sublist[0] + else: + return Struct(sublist, self.db) else: # better be a property of the list/tuple/dict/value: return getattr(self.struct, attr)