def find_tkapi_person(person: Person) -> TKPersoon or None: # TODO BR: cleanup: this is a mess! filter = TKPersoon.create_filter() filter.filter_achternaam(person.surname) try: persons = tkapi.TKApi.get_personen(filter=filter) if not persons: persons = [] surname_parts = person.surname.split('-') surname_parts += person.surname.split(' ') for part in surname_parts: filter = TKPersoon.create_filter() filter.filter_achternaam(part) persons += tkapi.TKApi.get_personen(filter=filter) except KeyError: logger.exception('Could not find TK Person for {} ({})'.format( person.surname, person.initials)) return None surname_matches = [ tkperson for tkperson in persons if tkperson.achternaam.lower() == person.surname.lower() ] if len(surname_matches) == 0: surname_parts = person.surname.split('-') surname_parts += person.surname.split(' ') surname_parts = [ surname.lower() for surname in surname_parts if len(surname) > 3 ] surname_matches = [] for tkperson in persons: tk_surname_parts = [] tk_surname_parts += tkperson.achternaam.split('-') tk_surname_parts += tkperson.achternaam.split(' ') tk_surname_parts = [ surname.lower() for surname in tk_surname_parts if len(surname) > 3 ] for tk_part in tk_surname_parts: if tk_part in surname_parts: surname_matches.append(tkperson) initial_matches = [] for tkperson in surname_matches: if initials_equal(tkperson.initialen, person.initials): initial_matches.append(tkperson) for tkperson in initial_matches: if forename_almost_equal(person, tkperson): return tkperson for tkperson in surname_matches: if forename_almost_equal(person, tkperson): return tkperson return None
def test_filter_name_ormel(self): filter = Persoon.create_filter() filter.filter_achternaam("Ormel") personen = self.api.get_personen(filter=filter) for persoon in personen: print(persoon) print(personen[0].achternaam) self.assertEqual(1, len(personen))
def test_filter_ids(self): filter = Persoon.create_filter() persoon_a = self.get_pechtold() persoon_b = self.get_teeven() personen_ids = [persoon_a.id, persoon_b.id] filter.filter_ids(ids=personen_ids) personen = self.api.get_personen(filter=filter) self.assertEqual(2, len(personen))
def test_filter_has_fractiezetel(self): n_items = 10 filter = Persoon.create_filter() filter.filter_has_fractiezetel() personen = self.api.get_personen(filter=filter, max_items=n_items) self.assertEqual(n_items, len(personen)) for persoon in personen: self.assertTrue(persoon.fractieleden)
def test_filter_achternaam(self): achternaam = 'Pechtold' filter = Persoon.create_filter() filter.filter_achternaam(achternaam) personen = self.api.get_personen(filter=filter) self.assertEqual(1, len(personen)) persoon = personen[0] self.assertEqual(achternaam, persoon.achternaam)
def test_filter_name_ozturk(self): filter = Persoon.create_filter() filter.filter_achternaam("Öztürk") personen = self.api.get_personen(filter=filter) self.assertEqual(1, len(personen)) print(personen[0].achternaam)
def test_filter_name_bijsterveldt(self): filter = Persoon.create_filter() filter.filter_achternaam("Bijsterveldt") personen = self.api.get_personen(filter=filter) self.assertEqual(1, len(personen)) print(personen[0].achternaam)
def test_filter_name_non_unicode(self): filter = Persoon.create_filter() filter.filter_achternaam("Koşer Kaya") personen = self.api.get_personen(filter=filter) self.assertEqual(1, len(personen))
def get_fred_teeven(self): filter = Persoon.create_filter() filter.filter_achternaam('Teeven') return self.api.get_personen(filter=filter)[0]
def get_pechtold(self): filter = Persoon.create_filter() filter.filter_achternaam('Pechtold') return self.api.get_personen(filter=filter)[0]
def persoon(self): if self.json['VastPersoon']: return Persoon(self.json['VastPersoon']) return None