def test_place_should_encode_full(self): place_id = 'the_place' name = 'The Place' locale = 'nl-NL' latitude = 12.345 longitude = -54.321 coordinates = Point(latitude, longitude) place = Place(place_id, [LocalizedName(name, locale)]) place.coordinates = coordinates place.enclosed_by = Place('the_enclosing_place', []) place.encloses.append(Place('the_enclosed_place', [])) place.links.add( Link('https://example.com/the-place', 'The Place Online')) place.events.append(IdentifiableEvent('E1', Event.Type.BIRTH)) expected = { '$schema': '/schema.json#/definitions/place', '@context': { 'encloses': 'https://schema.org/containsPlace', 'events': 'https://schema.org/event', 'enclosedBy': 'https://schema.org/containedInPlace', 'coordinates': 'https://schema.org/geo', }, '@type': 'https://schema.org/Place', 'id': place_id, 'names': [ { 'name': name, 'locale': 'nl-NL', }, ], 'events': [ '/event/E1/index.json', ], 'links': [ { 'url': 'https://example.com/the-place', 'label': 'The Place Online', }, ], 'coordinates': { '@context': { 'latitude': 'https://schema.org/latitude', 'longitude': 'https://schema.org/longitude', }, '@type': 'https://schema.org/GeoCoordinates', 'latitude': latitude, 'longitude': longitude, }, 'encloses': [ '/place/the_enclosed_place/index.json', ], 'enclosedBy': '/place/the_enclosing_place/index.json', } self.assert_encodes(expected, place, 'place')
def _parse_place(element: Element) -> Tuple[str, _IntermediatePlace]: handle = _xpath1(element, './@handle') properties = {'name': _xpath1(element, './ns:pname/@value')} place = Place(_xpath1(element, './@id'), **properties) coordinates = _parse_coordinates(element) if coordinates: place.coordinates = coordinates # Set the first place reference as the place that encloses this place. enclosed_by_handle = _xpath1(element, './ns:placeref/@hlink') _parse_urls(place, element) return handle, _IntermediatePlace(place, enclosed_by_handle)
def test_place_should_encode_full(self): place_id = 'the_place' name = 'The Place' latitude = 12.345 longitude = -54.321 coordinates = Point(latitude, longitude) place = Place(place_id, name) place.coordinates = coordinates expected = { 'id': place_id, 'name': name, 'coordinates': { 'latitude': latitude, 'longitude': longitude, } } self.assert_encodes(expected, place)
def _load_place(element: ElementTree.Element) -> Tuple[str, _IntermediatePlace]: handle = element.get('handle') names = [] for name_element in _xpath(element, './ns:pname'): # The Gramps language is a single ISO language code, which is a valid BCP 47 locale. language = name_element.get('lang') date = _load_date(name_element) name = PlaceName(name_element.get('value'), locale=language, date=date) names.append(name) place = Place(element.get('id'), names) coordinates = _load_coordinates(element) if coordinates: place.coordinates = coordinates enclosed_by_handles = [element.get('hlink') for element in _xpath(element, './ns:placeref')] _load_urls(place, element) return handle, _IntermediatePlace(place, enclosed_by_handles)
def _parse_place(element: Element) -> Tuple[str, _IntermediatePlace]: handle = _xpath1(element, './@handle') names = [] for name_element in _xpath(element, './ns:pname'): # The Gramps language is a single ISO language code, which is a valid BCP 47 locale. language = _xpath1(name_element, './@lang') names.append( LocalizedName(str(_xpath1(name_element, './@value')), language)) place = Place(_xpath1(element, './@id'), names) coordinates = _parse_coordinates(element) if coordinates: place.coordinates = coordinates # Set the first place reference as the place that encloses this place. enclosed_by_handle = _xpath1(element, './ns:placeref/@hlink') _parse_urls(place, element) return handle, _IntermediatePlace(place, enclosed_by_handle)
def _parse_place(element: Element) -> Tuple[str, _IntermediatePlace]: handle = _xpath1(element, './@handle') names = [] for name_element in _xpath(element, './ns:pname'): # The Gramps language is a single ISO language code, which is a valid BCP 47 locale. language = _xpath1(name_element, './@lang') date = _parse_date(name_element) name = PlaceName(str(_xpath1(name_element, './@value')), locale=language, date=date) names.append(name) place = Place(_xpath1(element, './@id'), names) coordinates = _parse_coordinates(element) if coordinates: place.coordinates = coordinates enclosed_by_handles = _xpath(element, './ns:placeref/@hlink') _parse_urls(place, element) return handle, _IntermediatePlace(place, enclosed_by_handles)
def test_coordinates(self) -> None: name = PlaceName('The Place') sut = Place('P1', [name]) coordinates = Point() sut.coordinates = coordinates self.assertEquals(coordinates, sut.coordinates)
def test_place_should_encode_full(self): place_id = 'the_place' name = 'The Place' locale = 'nl-NL' latitude = 12.345 longitude = -54.321 coordinates = Point(latitude, longitude) place = Place(place_id, [PlaceName(name, locale)]) place.coordinates = coordinates Enclosure(place, Place('the_enclosing_place', [])) Enclosure(Place('the_enclosed_place', []), place) link = Link('https://example.com/the-place') link.label = 'The Place Online' place.links.add(link) place.events.append(IdentifiableEvent('E1', Birth())) expected = { '$schema': '/schema.json#/definitions/place', '@context': { 'enclosedBy': 'https://schema.org/containedInPlace', 'encloses': 'https://schema.org/containsPlace', 'events': 'https://schema.org/event', 'coordinates': 'https://schema.org/geo', }, '@type': 'https://schema.org/Place', 'id': place_id, 'names': [ { 'name': name, 'locale': 'nl-NL', }, ], 'events': [ '/en/event/E1/index.json', ], 'links': [ { 'url': '/en/place/the_place/index.json', 'relationship': 'canonical', 'mediaType': 'application/json', }, { 'url': '/nl/place/the_place/index.json', 'relationship': 'alternate', 'locale': 'nl-NL', }, { 'url': '/en/place/the_place/index.html', 'relationship': 'alternate', 'mediaType': 'text/html', }, { 'url': 'https://example.com/the-place', 'label': 'The Place Online', }, ], 'coordinates': { '@context': { 'latitude': 'https://schema.org/latitude', 'longitude': 'https://schema.org/longitude', }, '@type': 'https://schema.org/GeoCoordinates', 'latitude': latitude, 'longitude': longitude, }, 'encloses': [ '/en/place/the_enclosed_place/index.json', ], 'enclosedBy': [ '/en/place/the_enclosing_place/index.json', ], } self.assert_encodes(expected, place, 'place')
async def load(self) -> None: amsterdam = Place('betty-demo-amsterdam', [PlaceName('Amsterdam')]) amsterdam.coordinates = Point(52.366667, 4.9) amsterdam.links.add(Link('https://nl.wikipedia.org/wiki/Amsterdam')) self._ancestry.places[amsterdam.id] = amsterdam ilpendam = Place('betty-demo-ilpendam', [PlaceName('Ilpendam')]) ilpendam.coordinates = Point(52.465556, 4.951111) ilpendam.links.add(Link('https://nl.wikipedia.org/wiki/Ilpendam')) self._ancestry.places[ilpendam.id] = ilpendam personal_accounts = IdentifiableSource('betty-demo-personal-accounts', 'Personal accounts') self._ancestry.sources[personal_accounts.id] = personal_accounts cite_first_person_account = IdentifiableCitation( 'betty-demo-first-person-account', personal_accounts) self._ancestry.citations[ cite_first_person_account.id] = cite_first_person_account bevolkingsregister_amsterdam = IdentifiableSource( 'betty-demo-bevolkingsregister-amsterdam', 'Bevolkingsregister Amsterdam') bevolkingsregister_amsterdam.author = 'Gemeente Amsterdam' bevolkingsregister_amsterdam.publisher = 'Gemeente Amsterdam' self._ancestry.sources[ bevolkingsregister_amsterdam.id] = bevolkingsregister_amsterdam david_marinus_lankester = Person('betty-demo-david-marinus-lankester') david_marinus_lankester.names.append( PersonName('David Marinus', 'Lankester')) self._ancestry.people[ david_marinus_lankester.id] = david_marinus_lankester geertruida_van_ling = Person('betty-demo-geertruida-van-ling') geertruida_van_ling.names.append(PersonName('Geertruida', 'Van Ling')) self._ancestry.people[geertruida_van_ling.id] = geertruida_van_ling marriage_of_dirk_jacobus_lankester_and_jannigje_palsen = IdentifiableEvent( 'betty-demo-marriage-of-dirk-jacobus-lankester-and-jannigje-palsen', Marriage(), Date(1922, 7, 4)) marriage_of_dirk_jacobus_lankester_and_jannigje_palsen.place = ilpendam self._ancestry.events[ marriage_of_dirk_jacobus_lankester_and_jannigje_palsen. id] = marriage_of_dirk_jacobus_lankester_and_jannigje_palsen birth_of_dirk_jacobus_lankester = IdentifiableEvent( 'betty-demo-birth-of-dirk-jacobus-lankester', Birth(), Date(1897, 8, 25)) birth_of_dirk_jacobus_lankester.place = amsterdam self._ancestry.events[birth_of_dirk_jacobus_lankester. id] = birth_of_dirk_jacobus_lankester death_of_dirk_jacobus_lankester = IdentifiableEvent( 'betty-demo-death-of-dirk-jacobus-lankester', Death(), Date(1986, 8, 18)) death_of_dirk_jacobus_lankester.place = amsterdam self._ancestry.events[death_of_dirk_jacobus_lankester. id] = death_of_dirk_jacobus_lankester dirk_jacobus_lankester = Person('betty-demo-dirk-jacobus-lankester') dirk_jacobus_lankester.names.append( PersonName('Dirk Jacobus', 'Lankester')) Presence(dirk_jacobus_lankester, Subject(), birth_of_dirk_jacobus_lankester) Presence(dirk_jacobus_lankester, Subject(), death_of_dirk_jacobus_lankester) Presence(dirk_jacobus_lankester, Subject(), marriage_of_dirk_jacobus_lankester_and_jannigje_palsen) dirk_jacobus_lankester.parents.append(david_marinus_lankester, geertruida_van_ling) self._ancestry.people[ dirk_jacobus_lankester.id] = dirk_jacobus_lankester birth_of_marinus_david_lankester = IdentifiableEvent( 'betty-demo-birth-of-marinus-david', Birth(), DateRange(Date(1874, 1, 15), Date(1874, 3, 21), start_is_boundary=True, end_is_boundary=True)) birth_of_marinus_david_lankester.place = amsterdam self._ancestry.events[birth_of_marinus_david_lankester. id] = birth_of_marinus_david_lankester death_of_marinus_david_lankester = IdentifiableEvent( 'betty-demo-death-of-marinus-david', Death(), Date(1971)) death_of_marinus_david_lankester.place = amsterdam self._ancestry.events[death_of_marinus_david_lankester. id] = death_of_marinus_david_lankester marinus_david_lankester = Person('betty-demo-marinus-david-lankester') marinus_david_lankester.names.append( PersonName('Marinus David', 'Lankester')) Presence(marinus_david_lankester, Subject(), birth_of_marinus_david_lankester) Presence(marinus_david_lankester, Subject(), death_of_marinus_david_lankester) marinus_david_lankester.parents.append(david_marinus_lankester, geertruida_van_ling) self._ancestry.people[ marinus_david_lankester.id] = marinus_david_lankester birth_of_jacoba_gesina_lankester = IdentifiableEvent( 'betty-demo-birth-of-jacoba-gesina', Birth(), Date(1900, 3, 14)) birth_of_jacoba_gesina_lankester.place = amsterdam self._ancestry.events[birth_of_jacoba_gesina_lankester. id] = birth_of_jacoba_gesina_lankester jacoba_gesina_lankester = Person('betty-demo-jacoba-gesina-lankester') jacoba_gesina_lankester.names.append( PersonName('Jacoba Gesina', 'Lankester')) Presence(jacoba_gesina_lankester, Subject(), birth_of_jacoba_gesina_lankester) jacoba_gesina_lankester.parents.append(david_marinus_lankester, geertruida_van_ling) self._ancestry.people[ jacoba_gesina_lankester.id] = jacoba_gesina_lankester jannigje_palsen = Person('betty-demo-jannigje-palsen') jannigje_palsen.names.append(PersonName('Jannigje', 'Palsen')) Presence(jannigje_palsen, Subject(), marriage_of_dirk_jacobus_lankester_and_jannigje_palsen) self._ancestry.people[jannigje_palsen.id] = jannigje_palsen marriage_of_johan_de_boer_and_liberta_lankester = IdentifiableEvent( 'betty-demo-marriage-of-johan-de-boer-and-liberta-lankester', Marriage(), Date(1953, 6, 19)) marriage_of_johan_de_boer_and_liberta_lankester.place = amsterdam self._ancestry.events[ marriage_of_johan_de_boer_and_liberta_lankester. id] = marriage_of_johan_de_boer_and_liberta_lankester cite_birth_of_liberta_lankester_from_bevolkingsregister_amsterdam = IdentifiableCitation( 'betty-demo-birth-of-liberta-lankester-from-bevolkingsregister-amsterdam', bevolkingsregister_amsterdam) cite_birth_of_liberta_lankester_from_bevolkingsregister_amsterdam.location = 'Amsterdam' self._ancestry.citations[ cite_birth_of_liberta_lankester_from_bevolkingsregister_amsterdam. id] = cite_birth_of_liberta_lankester_from_bevolkingsregister_amsterdam birth_of_liberta_lankester = IdentifiableEvent( 'betty-demo-birth-of-liberta-lankester', Birth(), Date(1929, 12, 22)) birth_of_liberta_lankester.place = amsterdam birth_of_liberta_lankester.citations.append( cite_birth_of_liberta_lankester_from_bevolkingsregister_amsterdam) self._ancestry.events[ birth_of_liberta_lankester.id] = birth_of_liberta_lankester death_of_liberta_lankester = IdentifiableEvent( 'betty-demo-death-of-liberta-lankester', Death(), Date(2015, 1, 17)) death_of_liberta_lankester.place = amsterdam death_of_liberta_lankester.citations.append(cite_first_person_account) self._ancestry.events[ death_of_liberta_lankester.id] = death_of_liberta_lankester liberta_lankester = Person('betty-demo-liberta-lankester') liberta_lankester.names.append(PersonName('Liberta', 'Lankester')) liberta_lankester.names.append(PersonName('Betty')) Presence(liberta_lankester, Subject(), birth_of_liberta_lankester) Presence(liberta_lankester, Subject(), death_of_liberta_lankester) Presence(liberta_lankester, Subject(), marriage_of_johan_de_boer_and_liberta_lankester) liberta_lankester.parents.append(dirk_jacobus_lankester, jannigje_palsen) self._ancestry.people[liberta_lankester.id] = liberta_lankester birth_of_johan_de_boer = IdentifiableEvent( 'betty-demo-birth-of-johan-de-boer', Birth(), Date(1930, 6, 20)) birth_of_johan_de_boer.place = amsterdam self._ancestry.events[ birth_of_johan_de_boer.id] = birth_of_johan_de_boer death_of_johan_de_boer = IdentifiableEvent( 'betty-demo-death-of-johan-de-boer', Death(), Date(1999, 3, 10)) death_of_johan_de_boer.place = amsterdam death_of_johan_de_boer.citations.append(cite_first_person_account) self._ancestry.events[ death_of_johan_de_boer.id] = death_of_johan_de_boer johan_de_boer = Person('betty-demo-johan-de-boer') johan_de_boer.names.append(PersonName('Johan', 'De Boer')) johan_de_boer.names.append(PersonName('Hans')) Presence(johan_de_boer, Subject(), birth_of_johan_de_boer) Presence(johan_de_boer, Subject(), death_of_johan_de_boer) Presence(johan_de_boer, Subject(), marriage_of_johan_de_boer_and_liberta_lankester) self._ancestry.people[johan_de_boer.id] = johan_de_boer parent_of_bart_feenstra_child_of_liberta_lankester = Person( 'betty-demo-parent-of-bart-feenstra-child-of-liberta-lankester') parent_of_bart_feenstra_child_of_liberta_lankester.names.append( PersonName('Bart\'s parent')) parent_of_bart_feenstra_child_of_liberta_lankester.parents.append( johan_de_boer, liberta_lankester) self._ancestry.people[ parent_of_bart_feenstra_child_of_liberta_lankester. id] = parent_of_bart_feenstra_child_of_liberta_lankester bart_feenstra = Person('betty-demo-bart-feenstra') bart_feenstra.names.append(PersonName('Bart', 'Feenstra')) bart_feenstra.parents.append( parent_of_bart_feenstra_child_of_liberta_lankester) self._ancestry.people[bart_feenstra.id] = bart_feenstra