def test_resolve(self): resolver = ResolvePopoloName( date = datetime.date(month=11, year=2010, day=1) ) popolo_person = resolver.get_person('J Q Smith') self.assertEqual(self.john_q, popolo_person)
def test_resolve_with_filter(self): resolver = ResolvePopoloName( date=datetime.date(month=11, year=2010, day=1), person_filter=ExcludePeopleWithNoMiddleNames(), ) popolo_person = resolver.get_person('John Smith') self.assertEqual(popolo_person.name, 'John Quentin Smith')
def set_resolver_for_date(self, date_string='', date=None): self.resolver = ResolvePopoloName( date=date, date_string=date_string, person_filter=AllowedPersonFilter(self.pombola_id_blacklist), )
class ImportZAMixin(object): def __init__(self, instance=None, commit=True, pombola_id_blacklist=None, **kwargs): super(ImportZAMixin, self).__init__( instance=instance, commit=commit, **kwargs ) self.person_cache = {} self.pombola_id_blacklist = pombola_id_blacklist def set_resolver_for_date(self, date_string='', date=None): self.resolver = ResolvePopoloName( date=date, date_string=date_string, person_filter=AllowedPersonFilter(self.pombola_id_blacklist), ) def debug_output_csv_row(self, pombola_person_slug, from_cache, our_speaker, speaker_from_slug): '''A method to help produce data for analyzing name resolution results''' import csv with open('name-resolution.log', 'ab') as f: writer = csv.writer(f) writer.writerow([ str(self.resolver.date), '' if pombola_person_slug is None else pombola_person_slug, our_speaker.id if our_speaker else '', our_speaker.name.encode('utf-8') if our_speaker else '', speaker_from_slug.id if speaker_from_slug else '', speaker_from_slug.name.encode('utf-8') if speaker_from_slug else '', ]) def get_person(self, name, party, pombola_person_slug=None): # If we can directly find the person from the # pombola_person_slug, use that - the Code4SA / PMG # identification of speakers seems to be better than that from # popolo_name_resolver. speaker_from_slug = None if pombola_person_slug is not None: speaker_from_slug = Speaker.objects.filter( identifiers__scheme='pombola_person_slug', identifiers__identifier=pombola_person_slug).first() if speaker_from_slug: return speaker_from_slug cached = self.person_cache.get(name, None) if cached: return cached display_name = name or '(narrative)' speaker = None person = None if name: person = self.resolver.get_person(display_name, party) if person: speaker = person.speaker if not speaker: try: speaker = Speaker.objects.get(instance=self.instance, name=display_name) except Speaker.DoesNotExist: speaker = Speaker(instance=self.instance, name=display_name) if self.commit: speaker.save() self.person_cache[name] = speaker return speaker
class ImportZAMixin(object): def __init__(self, instance=None, commit=True, pombola_id_blacklist=None, **kwargs): super(ImportZAMixin, self).__init__( instance=instance, commit=commit, **kwargs ) self.person_cache = {} self.pombola_id_blacklist = pombola_id_blacklist def set_resolver_for_date(self, date_string='', date=None): self.resolver = ResolvePopoloName( date=date, date_string=date_string, person_filter=AllowedPersonFilter(self.pombola_id_blacklist), ) def debug_output_csv_row(self, pombola_person_slug, from_cache, our_speaker, speaker_from_slug): '''A method to help produce data for analyzing name resolution results''' import csv with open('name-resolution.log', 'ab') as f: writer = csv.writer(f) writer.writerow([ str(self.resolver.date), '' if pombola_person_slug is None else pombola_person_slug, our_speaker.id if our_speaker else '', our_speaker.name.encode('utf-8') if our_speaker else '', speaker_from_slug.id if speaker_from_slug else '', speaker_from_slug.name.encode( 'utf-8') if speaker_from_slug else '', ]) def get_person(self, name, party, pombola_person_slug=None): # If we can directly find the person from the # pombola_person_slug, use that - the Code4SA / PMG # identification of speakers seems to be better than that from # popolo_name_resolver. speaker_from_slug = None if pombola_person_slug is not None: speaker_from_slug = Speaker.objects.filter( identifiers__scheme='pombola_person_slug', identifiers__identifier=pombola_person_slug).first() if speaker_from_slug: return speaker_from_slug cached = self.person_cache.get(name, None) if cached: return cached display_name = name or '(narrative)' speaker = None person = None if name: person = self.resolver.get_person(display_name, party) if person: speaker = person.speaker if not speaker: try: speaker = Speaker.objects.get( instance=self.instance, name=display_name) except Speaker.DoesNotExist: speaker = Speaker(instance=self.instance, name=display_name) if self.commit: speaker.save() self.person_cache[name] = speaker return speaker
def test_resolve(self): resolver = ResolvePopoloName(date=date(2013, 06, 21)) person = resolver.get_person('Mrs A Steyn', None) self.assertTrue(person)