def process(filename): data = json.loads(open(filename, 'r').read()) # pprint.pprint( data ) print "%s (%s) - %s" % (data['name'], data['slug'], filename) slug = data['slug'] try: person = models.Person.objects.get(slug=slug) return # don't try to update the person except models.Person.DoesNotExist: person = models.Person(slug=slug) person.legal_name = data['name'] person.summary = data['summary'] person.date_of_birth = data['date_of_birth'] person.save() content_type = ContentType.objects.get_for_model(person) if data.get('profile_url'): models.Contact.objects.get_or_create( content_type=content_type, object_id=person.id, value=re.sub('\s', '%20', data['profile_url']), kind=profile_url_kind, ) if data.get('email'): models.Contact.objects.get_or_create( content_type=content_type, object_id=person.id, value=data['email'], kind=email_kind, ) # import image if data.get('image') and 'img_not_found' not in data['image']: image_url = re.sub('\s', '%20', data['image']) photo, created = Image.objects.get_or_create( content_type=content_type, object_id=person.id, source=image_url, ) if created: print " Fetching " + image_url try: img_temp = NamedTemporaryFile(delete=True) img_temp.write(urllib2.urlopen(image_url).read()) img_temp.flush() photo.image.save(person.slug, File(img_temp)) photo.save() except urllib2.HTTPError: print " ...failed!"
def test_naming(self): # create a test person person = models.Person(legal_name="Alfred Smith") person.save() self.assertEqual(person.name, "Alfred Smith") self.assertEqual(person.additional_names(), []) self.assertEqual(person.sort_name, "Smith") # Add an alternative name person.add_alternative_name("Freddy Smith", name_to_use=True) self.assertEqual(person.name, "Freddy Smith") self.assertEqual(person.additional_names(), []) # Add yet another alternative name person.add_alternative_name("Fred Smith", name_to_use=True) self.assertEqual(person.name, "Fred Smith") self.assertEqual(person.additional_names(), ['Freddy Smith']) # Remove the first of those names: person.remove_alternative_name("Fred Smith") self.assertEqual(person.name, "Alfred Smith") self.assertEqual(person.additional_names(), ['Freddy Smith']) # Add yet another alternative name person.add_alternative_name("\n\nFred Smith\n\n", name_to_use=True) self.assertEqual(person.name, "Fred Smith") self.assertEqual(person.additional_names(), ['Freddy Smith'])
def test_urls(self): person = models.Person( legal_name="Alfred Smith", slug='alfred-smith', ) person.save() resp = self.app.get('/person/alfred-smith/') self.assertContains(resp, person.legal_name)
def setUp(self): self.person = models.Person(legal_name="Test Person", slug='test-person') self.person.save() self.phone = models.ContactKind( slug='phone', name='Phone', ) self.phone.save()
def testAllAppearances(self): person = models.Person( legal_name="Alfred Smith", slug='alfred-smith', ) person.save() self.app.get('/hansard/person/alfred-smith/appearances/')
def setUp(self): self.person = models.Person( legal_name='Test Person', slug='test-person', ) self.person.save() self.organisation_kind = models.OrganisationKind( name='Test OrgKind', slug='test-orgkind', ) self.organisation_kind.save() self.organisation = models.Organisation( name='Test Org', slug='test-org', kind=self.organisation_kind, ) self.organisation.save() self.title = models.PositionTitle.objects.create( name='Test PositionTitle', slug='test-positiontitle', ) SlugRedirect.objects.create( content_type=ContentType.objects.get_for_model( models.OrganisationKind), new_object=self.organisation_kind, old_object_slug='old-orgkind', ) SlugRedirect.objects.create( content_type=ContentType.objects.get_for_model( models.Organisation), new_object=self.organisation, old_object_slug='old-org', ) SlugRedirect.objects.create( content_type=ContentType.objects.get_for_model( models.PositionTitle), new_object=self.title, old_object_slug='old-positiontitle', ) self.election_list_kind = models.OrganisationKind.objects.create( name="Election List", slug="election-list", ) self.election_list_da = models.Organisation.objects.create( slug='da-election-list-2019', name="DA Election List", kind=self.election_list_kind, ) self.first_candidate = models.PositionTitle.objects.create( name="1st Candidate", slug="1st-candidate")
def test_redirect_uniqueness_validation(self): # Validation should stop someone changing a person slug to one # that's redirecting via SlugRedirect. redirectee = models.Person.objects.create( legal_name='Johan Sebastian Bach', slug='bach', ) existing_redirect = SlugRedirect.objects.create( new_object=redirectee, old_object_slug='jsb', ) other_person = models.Person(legal_name='John Smith Bloggs', slug='jsb') with self.assertRaises(ValidationError): other_person.clean_fields()
def setUp(self): self.person = models.Person( legal_name='Test Person', slug='test-person', ) self.person.save() self.organisation_kind = models.OrganisationKind( name='Test OrgKind', slug='test-orgkind', ) self.organisation_kind.save() self.organisation = models.Organisation( name='Test Org', slug='test-org', kind=self.organisation_kind, ) self.organisation.save() self.title = models.PositionTitle.objects.create( name='Test PositionTitle', slug='test-positiontitle', ) SlugRedirect.objects.create( content_type=ContentType.objects.get_for_model( models.OrganisationKind), new_object=self.organisation_kind, old_object_slug='old-orgkind', ) SlugRedirect.objects.create( content_type=ContentType.objects.get_for_model( models.Organisation), new_object=self.organisation, old_object_slug='old-org', ) SlugRedirect.objects.create( content_type=ContentType.objects.get_for_model( models.PositionTitle), new_object=self.title, old_object_slug='old-positiontitle', )
def setUp(self): self.person = models.Person( legal_name='Test Person', slug='test-person', ) self.person.save() self.organisation_kind = models.OrganisationKind( name='Foo', slug='foo', ) self.organisation_kind.save() self.organisation = models.Organisation( name='Test Org', slug='test-org', kind=self.organisation_kind, ) self.organisation.save() self.title = models.PositionTitle.objects.create( name='Test title', slug='test-title', )
def setUp(self): self.person = models.Person( legal_name = "Test Person", slug = 'test-person' ) self.person.save()
# 'StatusID': '2', # 'UniversityEducation': 'Economics and Political Science Amhrest College,USA '} try: (last, first, middle) = name_to_first_last.conversions[obj['Fullnames']] except: print obj['Fullnames'] continue slug = slugify(first + ' ' + last) try: db_obj = models.Person.objects.get(slug=slug) except models.Person.DoesNotExist: db_obj = models.Person(slug=slug) dob = obj.get('DateOfBirth') if dob: dob = re.sub( '-01-01', '-00-00', dob ) # 1 Jan happens too often - assume it means that month and day unknown # print dob (year, month, day) = re.split('-', dob) if int(year): db_obj.date_of_birth = ApproximateDate(year=int(year), month=int(month), day=int(day)) db_obj.original_id = obj['MemberID']
def test_explicit_sort_name(self): person = models.Person(legal_name='Ralph Vaughan Williams', sort_name='Vaughan Williams') person.save() self.assertEqual(person.sort_name, 'Vaughan Williams')