From 57096df9ad4e85495eb9566dc500c86519855281 Mon Sep 17 00:00:00 2001 From: Doug Blank Date: Mon, 10 Mar 2025 16:27:44 -0400 Subject: [PATCH] Gramp Refinements --- GrampyScript/datadict2.py | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/GrampyScript/datadict2.py b/GrampyScript/datadict2.py index fdca7606c..37df19c3a 100644 --- a/GrampyScript/datadict2.py +++ b/GrampyScript/datadict2.py @@ -45,6 +45,7 @@ def flatten(lst): result.append(item) return result + class NoneData: # def __setattr__(self, attr, value): @@ -68,6 +69,9 @@ def __call__(self, *args, **kwargs): # print(args, kwargs) return "" + def __iter__(self): + return iter([]) + class DataDict2(dict): """ @@ -234,7 +238,9 @@ def tags(self): def citations(self): return DataList2( [ - DataDict2(sa.dbase.get_raw_citation_data(handle), callback=self.callback) + DataDict2( + sa.dbase.get_raw_citation_data(handle), callback=self.callback + ) for handle in self.citation_list ], ) @@ -252,6 +258,10 @@ def events(self): ], ) + @property + def reference(self): + return DataDict2(sa.dbase.get_raw_person_data(self.ref), callback=self.callback) + @property def attributes(self): return self.attribute_list @@ -268,6 +278,22 @@ def lds_ords(self): def references(self): return self.person_ref_list + @property + def back_references(self): + retval = [] + for obj_type, ohandle in sa.dbase.find_backlink_handles(self.handle): + obj = sa.dbase.method("get_%s_from_handle", obj_type)(ohandle) + retval.append(DataDict2(obj, callback=self.callback)) + return DataList2(retval) + + @property + def back_references_recursively(self): + retval = [] + for obj_type, ohandle in self._object.get_referenced_handles_recursively(): + obj = sa.dbase.method("get_%s_from_handle", obj_type)(ohandle) + retval.append(DataDict2(obj, callback=self.callback)) + return DataList2(retval) + @property def name(self): if self["_class"] == "Person":