def __generate_hierarchy(self, place, original_enclosing_places): # Generates the hierarchy. # Returns the place at the top of the hierarchy or None if no hierarchy was generated original_name = place.get_name().get_value() if original_name == "": original_name = place.get_title() separator = ',' if self.spaces.get_active(): separator = None if ' ' not in original_name: return None else: if ',' not in original_name: return None names = [ name.strip() for name in original_name.split(separator) if name.strip() ] if self.reverse.get_active(): names.reverse() place_name = PlaceName() place_name.set_value(names[0]) place.set_name(place_name) place.set_title('') parent_handle = None top_place = place for name, handle, new_place in self.find_hierarchy( names, original_enclosing_places)[:-1]: if handle is None: new_place = Place() place_name = PlaceName() place_name.set_value(name) new_place.set_name(place_name) if parent_handle is None: top_place = new_place if parent_handle is not None: placeref = PlaceRef() placeref.ref = parent_handle placeref.set_date_object(self.date_object) new_place.add_placeref(placeref) parent_handle = self.dbstate.db.add_place( new_place, self.trans) else: if parent_handle is None: top_place = new_place parent_handle = handle if parent_handle is not None: placeref = PlaceRef() placeref.ref = parent_handle placeref.set_date_object(self.date_object) place.set_placeref_list([placeref ]) # this removes any previous parent return top_place
def __get_places(self, obj): gov_id = self.entry.get_text() to_do = [gov_id] try: preferred_lang = config.get('preferences.place-lang') except AttributeError: fmt = config.get('preferences.place-format') pf = _pd.get_formats()[fmt] preferred_lang = pf.language if len(preferred_lang) != 2: preferred_lang = 'de' visited = {} type_dic = dict() type_url = 'http://gov.genealogy.net/types.owl/' response = urlopen(type_url) data = response.read() dom = parseString(data) for group in dom.getElementsByTagName('owl:Class'): url_value = group.attributes['rdf:about'].value group_number = 'j.0:' + url_value.split('#')[1] for element in dom.getElementsByTagName(group_number): type_number = element.attributes['rdf:about'].value.split( '#')[1] for pname in element.getElementsByTagName('rdfs:label'): type_lang = pname.attributes['xml:lang'].value type_text = pname.childNodes[0].data type_dic[type_number, type_lang] = type_text with DbTxn(_('Add GOV-id place %s') % gov_id, self.dbstate.db) as trans: while to_do: gov_id = to_do.pop() place = self.dbstate.db.get_place_from_gramps_id(gov_id) if place is not None: visited[gov_id] = (place, []) else: place, ref_list = self.__get_place(gov_id, type_dic, preferred_lang) if place.get_name().get_value is not '': self.dbstate.db.add_place(place, trans) visited[gov_id] = (place, ref_list) for ref, date in ref_list: if (ref not in to_do) and (ref not in visited): to_do.append(ref) for place, ref_list in visited.values(): if len(ref_list) > 0: for ref, date in ref_list: handle = visited[ref][0].handle place_ref = PlaceRef() place_ref.ref = handle place_ref.set_date_object(date) place.add_placeref(place_ref) self.dbstate.db.commit_place(place, trans)
def __get_places(self, obj): gov_id = self.entry.get_text() to_do = [gov_id] try: preferred_lang = config.get('preferences.place-lang') except AttributeError: fmt = config.get('preferences.place-format') pf = _pd.get_formats()[fmt] preferred_lang = pf.language if len(preferred_lang) != 2: preferred_lang = 'de' visited = {} type_dic = dict() type_url = 'http://gov.genealogy.net/types.owl/' response = urlopen(type_url) data = response.read() dom = parseString(data) for group in dom.getElementsByTagName('owl:Class') : url_value = group.attributes['rdf:about'].value group_number = 'j.0:' + url_value.split('#')[1] for element in dom.getElementsByTagName(group_number): type_number = element.attributes['rdf:about'].value.split('#')[1] for pname in element.getElementsByTagName('rdfs:label'): type_lang = pname.attributes['xml:lang'].value type_text = pname.childNodes[0].data type_dic[type_number,type_lang] = type_text with DbTxn(_('Add GOV-id place %s') % gov_id, self.dbstate.db) as trans: while to_do: gov_id = to_do.pop() place = self.dbstate.db.get_place_from_gramps_id(gov_id) if place is not None: visited[gov_id] = (place, []) else: place, ref_list = self.__get_place(gov_id, type_dic, preferred_lang) if place.get_name().get_value is not '': self.dbstate.db.add_place(place, trans) visited[gov_id] = (place, ref_list) for ref, date in ref_list: if (ref not in to_do) and (ref not in visited): to_do.append(ref) for place, ref_list in visited.values(): if len(ref_list) > 0: for ref, date in ref_list: handle = visited[ref][0].handle place_ref = PlaceRef() place_ref.ref = handle place_ref.set_date_object(date) place.add_placeref(place_ref) self.dbstate.db.commit_place(place, trans)
def __set_enclosing_place(self, place): if not self.selected_handle: return if self.__encloses( place.get_handle(), self.selected_handle): # place should not include itself print("Can't set", place.get_name().value, "inside", self.selected_name) return pname = place.get_name().value if self.selected_handle in [r.ref for r in place.placeref_list]: print(pname, "already enclosed by", self.selected_name) return # prevent duplicates print(pname, "<", self.selected_name) placeref = PlaceRef() placeref.set_date_object(self.date_object) placeref.ref = self.selected_handle place.add_placeref(placeref)
def __get_places(self, _obj): gov_id = self.entry.get_text() to_do = [gov_id] try: preferred_lang = config.get('preferences.place-lang') except AttributeError: fmt = config.get('preferences.place-format') pf = _pd.get_formats()[fmt] preferred_lang = pf.language if len(preferred_lang) != 2: preferred_lang = glocale.lang visited = {} if not self.type_dic: self.__get_types() with DbTxn(_('Add GOV-id place %s') % gov_id, self.dbstate.db) as trans: while to_do: gov_id = to_do.pop() place = self.dbstate.db.get_place_from_gramps_id(gov_id) if place is not None: visited[gov_id] = (place, []) else: place, ref_list = self.__get_place(gov_id, self.type_dic, preferred_lang) if place.get_name().get_value is not '': self.dbstate.db.add_place(place, trans) visited[gov_id] = (place, ref_list) for ref, date in ref_list: if (ref not in to_do) and (ref not in visited): to_do.append(ref) for place, ref_list in visited.values(): if len(ref_list) > 0: for ref, date in ref_list: handle = visited[ref][0].handle place_ref = PlaceRef() place_ref.ref = handle place_ref.set_date_object(date) place.add_placeref(place_ref) self.dbstate.db.commit_place(place, trans) self.dbstate.db.save_place_types()
def __get_places(self, obj): gov_id = self.entry.get_text() to_do = [gov_id] try: preferred_lang = config.get('preferences.place-lang') except AttributeError: fmt = config.get('preferences.place-format') pf = _pd.get_formats()[fmt] preferred_lang = pf.language if len(preferred_lang) != 2: preferred_lang = 'de' visited = {} if not self.type_dic: self.__get_types() with DbTxn(_('Add GOV-id place %s') % gov_id, self.dbstate.db) as trans: while to_do: gov_id = to_do.pop() place = self.dbstate.db.get_place_from_gramps_id(gov_id) if place is not None: visited[gov_id] = (place, []) else: place, ref_list = self.__get_place(gov_id, self.type_dic, preferred_lang) if place.get_name().get_value is not '': self.dbstate.db.add_place(place, trans) visited[gov_id] = (place, ref_list) for ref, date in ref_list: if (ref not in to_do) and (ref not in visited): to_do.append(ref) for place, ref_list in visited.values(): if len(ref_list) > 0: for ref, date in ref_list: handle = visited[ref][0].handle place_ref = PlaceRef() place_ref.ref = handle place_ref.set_date_object(date) place.add_placeref(place_ref) self.dbstate.db.commit_place(place, trans)
def enclosed_by(self, parent, end, start): parent_ent = self.dbstate.db.get_place_from_gramps_id(parent) parent_ref = PlaceRef() parent_ref.set_reference_handle(parent_ent.get_handle()) if start is not None: if end is not None: date = Date() start_dict = start.get_parsed_datetime_dict() end_dict = end.get_parsed_datetime_dict() slash2 = False date.set(quality=None, modifier=Date.MOD_SPAN, calendar=None, value=((start_dict['day']), (start_dict['month']), (start_dict['year']), False, (end_dict['day']), (end_dict['month']), (end_dict['year']), slash2), text=None) parent_ref.set_date_object(date=date) else: date = Date() start_dict = start.get_parsed_datetime_dict() date.set(quality=None, modifier=Date.MOD_AFTER, calendar=None, value=((start_dict['day']), (start_dict['month']), (start_dict['year']), False), text=None) parent_ref.set_date_object(date=date) elif end is not None: date = Date() end_dict = end.get_parsed_datetime_dict() date.set(quality=None, modifier=Date.MOD_BEFORE, calendar=None, value=((end_dict['day']), (end_dict['month']), (end_dict['year']), False), text=None) parent_ref.set_date_object(date=date) return parent_ref