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!"
Exemplo n.º 2
0
    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'])
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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()
Exemplo n.º 5
0
    def testAllAppearances(self):

        person = models.Person(
            legal_name="Alfred Smith",
            slug='alfred-smith',
        )
        person.save()

        self.app.get('/hansard/person/alfred-smith/appearances/')
Exemplo n.º 6
0
    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")
Exemplo n.º 7
0
 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()
Exemplo n.º 8
0
    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',
        )
Exemplo n.º 9
0
    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',
        )
Exemplo n.º 10
0
 def setUp(self):
     self.person = models.Person(
         legal_name = "Test Person",
         slug       = 'test-person'
     )
     self.person.save()
Exemplo n.º 11
0
    #  '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']
Exemplo n.º 12
0
 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')