Exemple #1
0
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
Exemple #2
0
 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))
Exemple #3
0
 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))
Exemple #4
0
 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)
Exemple #5
0
 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)
Exemple #6
0
 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)
Exemple #7
0
 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)
Exemple #8
0
 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))
Exemple #9
0
 def get_fred_teeven(self):
     filter = Persoon.create_filter()
     filter.filter_achternaam('Teeven')
     return self.api.get_personen(filter=filter)[0]
Exemple #10
0
 def get_pechtold(self):
     filter = Persoon.create_filter()
     filter.filter_achternaam('Pechtold')
     return self.api.get_personen(filter=filter)[0]