Exemple #1
0
 def test_find_name_prefix(self):
     name = 'Ard van der Steur'
     prefix, pos = Person.find_prefix(name)
     self.assertEqual(prefix, 'van der')
     name = 'Ard van derSteur'
     prefix, pos = Person.find_prefix(name)
     self.assertEqual(prefix, 'van')
     name = 'Ard van de Steur'
     prefix, pos = Person.find_prefix(name)
     self.assertEqual(prefix, 'van de')
     name = 'Ard van Steur'
     prefix, pos = Person.find_prefix(name)
     self.assertEqual(prefix, 'van')
     name = 'Gerard \'t Hooft'
     prefix, pos = Person.find_prefix(name)
     self.assertEqual(prefix, '\'t')
     name = 'Jan Peter Balkenende'
     prefix, pos = Person.find_prefix(name)
     self.assertEqual(prefix, '')
     name = 'Boris van der Ham'
     prefix, pos = Person.find_prefix(name)
     self.assertEqual(prefix, 'van der')
     name = 'van der Ham'
     prefix, pos = Person.find_prefix(name)
     self.assertEqual(prefix, 'van der')
     name = 'van derHam'
     prefix, pos = Person.find_prefix(name)
     self.assertEqual(prefix, 'van')
     name = 'von Martels'
     prefix, pos = Person.find_prefix(name)
     self.assertEqual(prefix, 'von')
    def handle(self, *args, **options):
        Person.update_persons_all('nl')
        openkamer.parliament.update_initials()

        parties = PoliticalParty.objects.all()
        for party in parties:
            party.update_info(language='nl')
Exemple #3
0
    def save(self):
        data = self.cleaned_data
        person = Person(
            first_name=data['first_name'],
            last_name=data['last_name'],
            username=data['username'],
            email=data['email']
        )

        person.set_password(data['password'])
        person.save()

        # Send confirmation email
        TemplateEmail(
            subject='Registration',
            from_email='*****@*****.**',
            to_emails=person.email,
            template='email/confirmation_email.html',
            context={
                'user': person,
                'activation_link': absreverse('person:confirmation', kwargs={'key': person.confirmation})
            }
        ).send()

        return person
Exemple #4
0
def signup(request):
    data = request.POST
    if 'username' not in data or 'password' not in data or 'email' not in data or data[
            'username'] == '' or data['password'] == '' or data['email'] == '':
        return utils.createError('Invalid input form.')

    _username = data.get('username', '')
    _email = data.get('email', '')
    _password = data.get('password', '')

    #--validation--
    if Person.objects.filter(username=_username):
        return utils.createError('Username has been taken.')
    if Person.objects.filter(email=_email):
        return utils.createError('Email has been taken.')
    if len(_password) < 8:
        return utils.createError('Length of password must be at least 8.')

    #--create person--
    _salt = utils.getRandomString()
    _hashed_password = utils.hashPassword(_password, _salt)

    person = Person(username=_username,
                    salt=_salt,
                    password=_hashed_password,
                    email=_email)
    person.save()

    return utils.createResponse({
        'action': 'Sign up successfully',
        'username': person.username,
        'email': person.email
    })
Exemple #5
0
 def test_find_name_prefix(self):
     name = 'Ard van der Steur'
     prefix, pos = Person.find_prefix(name)
     self.assertEqual(prefix, 'van der')
     name = 'Ard van derSteur'
     prefix, pos = Person.find_prefix(name)
     self.assertEqual(prefix, 'van')
     name = 'Ard van de Steur'
     prefix, pos = Person.find_prefix(name)
     self.assertEqual(prefix, 'van de')
     name = 'Ard van Steur'
     prefix, pos = Person.find_prefix(name)
     self.assertEqual(prefix, 'van')
     name = 'Gerard \'t Hooft'
     prefix, pos = Person.find_prefix(name)
     self.assertEqual(prefix, '\'t')
     name = 'Jan Peter Balkenende'
     prefix, pos = Person.find_prefix(name)
     self.assertEqual(prefix, '')
     name = 'Boris van der Ham'
     prefix, pos = Person.find_prefix(name)
     self.assertEqual(prefix, 'van der')
     name = 'van der Ham'
     prefix, pos = Person.find_prefix(name)
     self.assertEqual(prefix, 'van der')
     name = 'van derHam'
     prefix, pos = Person.find_prefix(name)
     self.assertEqual(prefix, 'van')
     name = 'von Martels'
     prefix, pos = Person.find_prefix(name)
     self.assertEqual(prefix, 'von')
Exemple #6
0
 def test_find_by_surname_initials(self):
     p_found = Person.find_surname_initials('Balkenende', 'J.P.')
     self.assertEqual(p_found, self.p1)
     p_found = Person.find_surname_initials('Balkenende', 'J.')
     self.assertEqual(p_found, self.p2)
     p_found = Person.find_surname_initials('Balkenende', '')
     self.assertEqual(p_found, None)
     p_found = Person.find_surname_initials('van der Steur', 'J.P.')
     self.assertEqual(p_found, None)
     p_found = Person.find_surname_initials('Koşer Kaya', 'F.')
     self.assertEqual(p_found, self.p5)
Exemple #7
0
 def test_find_by_surname_initials(self):
     p_found = Person.find_surname_initials('Balkenende', 'J.P.')
     self.assertEqual(p_found, self.p1)
     p_found = Person.find_surname_initials('Balkenende', 'J.')
     self.assertEqual(p_found, self.p2)
     p_found = Person.find_surname_initials('Balkenende', '')
     self.assertEqual(p_found, None)
     p_found = Person.find_surname_initials('van der Steur', 'J.P.')
     self.assertEqual(p_found, None)
     p_found = Person.find_surname_initials('Koşer Kaya', 'F.')
     self.assertEqual(p_found, self.p5)
Exemple #8
0
    def create_person(self, data):
        fields_data, m2m_fields_data = self.split_data(data)

        person = Person(**fields_data)
        # person.full_clean()  # full_clean called in save method
        person.save()

        for field_name, id_list in m2m_fields_data.items():
            m2m_data = data.get(field_name)
            if m2m_data:
                getattr(person, field_name).set(id_list)
        return person
Exemple #9
0
class CitationsTest(TestCase):

    def setUp(self):
        self.person1 = Person(full_name='João Carlos da Silva')
        self.person1.save()

        self.person2 = Person(full_name='Antonio da Silva')
        self.person2.save()

        self.person1_id = self.person1.pk
        self.person2_id = self.person2.pk

        citation2 = CitationName(person_id=self.person2_id, name='da Silva, A', default_name=True)
        citation2.save()

    def test_name_with_first_letters(self):

        result = name_with_first_letters(self.person1.full_name.split(), False)
        self.assertEqual(result, 'Silva, JC')

        result = name_with_first_letters(self.person1.full_name.split(), True)
        self.assertEqual(result, 'da Silva, JC')

    def test_names_without_last_name(self):

        result = names_without_last_name(self.person1.full_name.split(), False)
        self.assertEqual(result, 'Silva, João Carlos')

        result = names_without_last_name(self.person1.full_name.split(), True)
        self.assertEqual(result, 'da Silva, João Carlos')

    def test_first_name_and_first_letter(self):

        result = first_name_and_first_letter(self.person1.full_name.split(), False)
        self.assertEqual(result, 'Silva, João C')

        result = first_name_and_first_letter(self.person1.full_name.split(), True)
        self.assertEqual(result, 'da Silva, João C')

    def test_generate_citation_names(self):

        for person in Person.objects.all():
            generate_citation_names(person)

        citation = CitationName.objects.filter(person_id=self.person1_id, default_name=True)
        self.assertEqual('Silva, JC', citation[0].name)

        citation = CitationName.objects.filter(person_id=self.person2_id, default_name=True)
        self.assertEqual('da Silva, A', citation[0].name)

    def test_citation_names(self):
        response = self.client.get(reverse('citation_names'))
        self.assertEqual(response.status_code, 302)
Exemple #10
0
    def setUp(self):
        self.person1 = Person(full_name='João Carlos da Silva')
        self.person1.save()

        self.person2 = Person(full_name='Antonio da Silva')
        self.person2.save()

        self.person1_id = self.person1.pk
        self.person2_id = self.person2.pk

        citation2 = CitationName(person_id=self.person2_id, name='da Silva, A', default_name=True)
        citation2.save()
Exemple #11
0
def create_parliament_and_government():
    PoliticalParty.objects.all().delete()
    PartyMember.objects.all().delete()
    ParliamentMember.objects.all().delete()
    create_parties(update_votes=False)
    create_governments()
    create_parliament_members(update_votes=False)
    for party in PoliticalParty.objects.all():
        party.set_current_parliament_seats()
    set_party_votes_derived_info()
    set_individual_votes_derived_info()
    Person.update_persons_all(language='nl')
    stats.models.update_all()
Exemple #12
0
def create_parliament_and_government():
    PoliticalParty.objects.all().delete()
    PartyMember.objects.all().delete()
    ParliamentMember.objects.all().delete()
    create_parties(update_votes=False)
    create_governments()
    create_parliament_members(update_votes=False)
    for party in PoliticalParty.objects.all():
        party.set_current_parliament_seats()
    set_party_votes_derived_info()
    set_individual_votes_derived_info()
    Person.update_persons_all(language='nl')
    stats.models.update_all()
Exemple #13
0
    def handle(self, *args, **kwargs):
        filename = kwargs['filename']
        with open(filename, encoding='utf-8') as f:
            models = json.load(f)

        # Verify all data before Insertion, Fail if any one data is corrupted
        record_count = 0
        for m in models:
            record_count = record_count + 1
            valid_status = person_validation.validate_add(m)
            if not valid_status[0]:
                raise ValidationError(valid_status[1])

        for person in models:
            person_data = person.get('data')[0]
            enabled = person_data.get('enabled')
            guid = person_data.get('guid')
            first_name = person.get('first_name')
            last_name = person.get('last_name')
            city = person.get('city')
            p_id = person.get('id')

            person_data_model_obj = PersonData(enabled=enabled, guid=guid)
            save_flag = True
            try:
                person_data_model_obj.save()
            except ValueError as e:
                save_flag = False
                person_data_model_obj.delete()
                self.stderr.write(
                    'PersonData Creation in DB Failed {id = ' + str(p_id) +
                    '}', e)

            try:
                if save_flag:
                    person_model = Person(id=p_id,
                                          first_name=first_name,
                                          last_name=last_name,
                                          city=city,
                                          data=person_data_model_obj)
                    person_model.save(force_insert=True)
            except IntegrityError as e:
                person_data_model_obj.delete()
                self.stderr.write(
                    'Record Creation in DB Failed {id = ' + str(p_id) + '}', e)
            except ValueError as e:
                person_data_model_obj.delete()
                self.stderr.write(
                    'Record Creation in DB Failed {id = ' + str(p_id) + '}', e)
Exemple #14
0
def set_district(request):
    try:
        state = request.POST["state"]
        if state != "XX" and state not in us.statenames: raise Exception()
        district = int(request.POST["district"])
    except:
        return HttpResponseBadRequest()

    # Who represents?
    from person.models import Person
    mocs = None
    if state != "XX":
        mocs = [p.id for p in Person.from_state_and_district(state, district)]

    # Form response.
    response = HttpResponse(
        json.dumps({ "status": "ok", "mocs": mocs }),
        content_type="application/json")

    if request.user.is_authenticated:
        # Save to database.
        prof = request.user.userprofile()
        prof.congressionaldistrict = "%s%02d" % (state, district)
        prof.save()
    else:
        # Save in cookie.
        response.set_cookie("cong_dist", json.dumps({ "state": state, "district": district }),
            max_age=60*60*24*21)

    return response
Exemple #15
0
 def test_chantal_nijkerken_de_haan(self):
     wikidata_id = 'Q19830701'
     wikidata_item = wikidata.WikidataItem(wikidata_id)
     fullname = wikidata_item.get_label()
     forename, surname, surname_prefix = Person.get_name_parts(fullname, wikidata_item)
     self.assertEqual(forename, 'Chantal')
     self.assertEqual(surname, 'Nijkerken-de Haan')
Exemple #16
0
def parse_name_surname_initials(name):
    name = remove_forename(name)
    name = name.replace(',', '')
    initials = find_initials(name)
    surname_prefix, pos = Person.find_prefix(name)
    surname = name.replace(surname_prefix, '').replace(initials, '').replace(',', '').strip()
    return initials, surname, surname_prefix
Exemple #17
0
def create_travels(max_items=None):
    travels = TKApi.get_items(PersoonReis, max_items=max_items)
    logger.info('{} travels found.'.format(len(travels)))
    if len(travels) < 1000:
        logger.error(
            'Only {} travels found. This is unexpected. Skip re-creating travels.'
            .format(len(travels)))
    Travel.objects.all().delete()
    TravelPersonPosition.objects.all().delete()
    for travel in travels:
        person = Person.find_surname_initials(travel.persoon.achternaam,
                                              travel.persoon.initialen)
        if person is None:
            logger.warning('No person found for travel: {}'.format(travel.id))
            continue
        if travel.van is None or travel.tot_en_met is None:
            logger.warning('No date found for travel: {}'.format(travel.id))
            continue
        Travel.objects.create(
            person=person,
            destination=travel.bestemming,
            purpose=travel.doel,
            paid_by=travel.betaald_door,
            date_begin=travel.van,
            date_end=travel.tot_en_met,
        )
Exemple #18
0
def parse_name_surname_initials(name):
    name = remove_forename(name)
    name = name.replace(',', '')
    initials = find_initials(name)
    surname_prefix, pos = Person.find_prefix(name)
    surname = name.replace(surname_prefix, '').replace(initials, '').replace(',', '').strip()
    return initials, surname, surname_prefix
Exemple #19
0
def homepage_summary(request):
	# parse & validate parameters
	try:
		state = request.GET["district"][0:2]
		district = int(request.GET["district"][2:])
		if state not in statenames: raise Exception()
	except:
		return None

	from django.contrib.humanize.templatetags.humanize import ordinal

	# view
	people = Person.from_state_and_district(state, district)
	feeds = [p.get_feed() for p in people]
	events = Feed.get_events_for(feeds, 6)

	from events.templatetags.events_utils import render_event
	for i in range(len(events)):
		events[i] = render_event(events[i], feeds)
		if not isinstance(events[i]["date"], str):
			events[i]["date"] = events[i]["date"].strftime('%B %d, %Y') # can't JSON-serialize a datetime anyway, TODO handle date_has_no_time
		for k in list(events[i]): # remove anything else in case it is not JSON-serializable
			if k not in ('type', 'date', 'title', 'body_html', 'url'):
				del events[i][k]

	# form output
	return {
		"state": state,
		"district": district,
		"state_name": statenames[state],
		"district_ordinal": ordinal(district),
		"reps": [ { "link": p.get_absolute_url(), "name": p.name_and_title(), "title": p.role.get_description(), "photo": p.get_photo_url() } for p in people],
		"events": events,
	}
Exemple #20
0
def set_district(request):
    try:
        state = request.POST["state"]
        if state != "XX" and state not in us.statenames: raise Exception()
        district = int(request.POST["district"])
    except:
        return HttpResponseBadRequest()

    # Who represents?
    from person.models import Person
    mocs = None
    if state != "XX":
        mocs = [p.id for p in Person.from_state_and_district(state, district)]

    # Form response.
    response = HttpResponse(
        json.dumps({ "status": "ok", "mocs": mocs }),
        content_type="application/json")

    if request.user.is_authenticated():
        # Save to database.
        prof = request.user.userprofile()
        prof.congressionaldistrict = "%s%02d" % (state, district)
        prof.save()
    else:
        # Save in cookie.
        response.set_cookie("cong_dist", json.dumps({ "state": state, "district": district }),
            max_age=60*60*24*21)

    return response
Exemple #21
0
    def get_person(document: Document, tk_person: TKPersoon = None, name: str = None):
        person = None

        if not tk_person:
            logger.warning('No document submitter found for document: {}'.format(document.document_id))
        else:
            persons = Person.objects.filter(tk_id=tk_person.id)
            if len(persons):
                person = persons[0]

            if person is None:
                logger.warning('No person found for tk_persoon: {} ({})'.format(tk_person.achternaam, tk_person.initialen))

        if person is None:
            if tk_person and tk_person.achternaam and tk_person.initialen:
                surname = tk_person.achternaam
                surname_prefix = tk_person.tussenvoegsel
                initials = tk_person.initialen
            else:
                initials, surname, surname_prefix = parse_name_surname_initials(name)
            person = Person.find_surname_initials(surname=surname, initials=initials)

        if not person:
            logger.warning('Cannot find person: {} ({}). Creating new person!'.format(surname, initials))
            person = Person.objects.create(surname=surname, surname_prefix=surname_prefix, initials=initials)
        return person
Exemple #22
0
 def test_find_person_no_results_jean(self):
     person = Person(forename='Jean Baptiste Anne',
                     surname_prefix='de',
                     surname='Gerlache de Biourge',
                     initials='J.B.A.')
     tkperson = openkamer.parliament.find_tkapi_person(person)
     self.assertIsNone(tkperson)
Exemple #23
0
 def test_find_no_results(self):
     person = Person(forename='Willem Caspar',
                     surname_prefix='de',
                     surname='Jonge',
                     initials='J.')
     tkperson = openkamer.parliament.find_tkapi_person(person)
     self.assertIsNone(tkperson)
Exemple #24
0
def get_or_create_person(wikidata_id,
                         fullname='',
                         wikidata_item=None,
                         add_initials=False):
    persons = Person.objects.filter(wikidata_id=wikidata_id)
    if not wikidata_item:
        wikidata_item = wikidata.WikidataItem(wikidata_id)
    if persons.exists():
        person = persons[0]
    else:
        if not fullname:
            fullname = wikidata_item.get_label(language='nl')
        forename, surname, surname_prefix = Person.get_name_parts(
            fullname, wikidata_item)
        person = Person.objects.create(forename=forename,
                                       surname=surname,
                                       surname_prefix=surname_prefix,
                                       wikidata_id=wikidata_id)
        person.update_info(language='nl', wikidata_item=wikidata_item)
        person.save()
        if add_initials and person.parlement_and_politiek_id:
            person.initials = scraper.persons.get_initials(
                person.parlement_and_politiek_id)
            person.save()
        assert person.wikidata_id == wikidata_id
    party_members = PartyMember.objects.filter(person=person)
    if not party_members.exists():
        create_party_members_for_person(person)
    return person
Exemple #25
0
 def create_person(self):
     person = Person()
     person.sex = self.__generate_sex()
     person.birth_date = self.__generate_date()
     person.first_name = self.__generate_name(person.sex)
     person.last_name = self.__generate_surname(person.sex)
     person.pesel = self.__generate_pesel(person.birth_date, person.sex)
     person.email = self.__generate_email(person.first_name,
                                          person.last_name)
     person.phone = self.__generate_phone()
     person.password = self.__generate_password()
     logging.basicConfig(level=logging.DEBUG)
     logging.info(
         f"Created person {person.first_name} {person.last_name} with pesel {person.pesel}"
     )
     return person
Exemple #26
0
 def test_sjoerd_sjoerdsma(self):
     wikidata_id = 'Q516335'
     wikidata_item = wikidata.WikidataItem(wikidata_id)
     fullname = wikidata_item.get_label()
     forename, surname, surname_prefix = Person.get_name_parts(fullname, wikidata_item)
     self.assertEqual(forename, 'Sjoerd')
     self.assertEqual(surname, 'Sjoerdsma')
     self.assertEqual(surname_prefix, '')
Exemple #27
0
 def test_chantal_nijkerken_de_haan(self):
     wikidata_id = 'Q19830701'
     wikidata_item = wikidata.WikidataItem(wikidata_id)
     fullname = wikidata_item.get_label()
     forename, surname, surname_prefix = Person.get_name_parts(
         fullname, wikidata_item)
     self.assertEqual(forename, 'Chantal')
     self.assertEqual(surname, 'Nijkerken-de Haan')
Exemple #28
0
 def test_fatma_koser_kaya(self):
     wikidata_id = 'Q467610'  # Fatma Koşer Kaya
     wikidata_item = wikidata.WikidataItem(wikidata_id)
     fullname = wikidata_item.get_label()
     forename, surname, surname_prefix = Person.get_name_parts(fullname, wikidata_item)
     self.assertEqual(forename, 'Fatma')
     self.assertEqual(surname, 'Koşer Kaya')
     self.assertEqual(surname_prefix, '')
Exemple #29
0
 def test_jan_peter_balkenende(self):
     wikidata_id = 'Q133386'
     wikidata_item = wikidata.WikidataItem(wikidata_id)
     fullname = wikidata_item.get_label()
     forename, surname, surname_prefix = Person.get_name_parts(fullname, wikidata_item)
     self.assertEqual(forename, 'Jan Peter')
     self.assertEqual(surname, 'Balkenende')
     self.assertEqual(surname_prefix, '')
Exemple #30
0
 def test_leendert_de_lange(self):
     wikidata_id = 'Q19839084'
     wikidata_item = wikidata.WikidataItem(wikidata_id)
     fullname = wikidata_item.get_label()
     forename, surname, surname_prefix = Person.get_name_parts(fullname, wikidata_item)
     self.assertEqual(forename, 'Leendert')
     self.assertEqual(surname_prefix, 'de')
     self.assertEqual(surname, 'Lange')
Exemple #31
0
 def test_jan_kees_de_jager(self):
     wikidata_id = 'Q1666631'
     wikidata_item = wikidata.WikidataItem(wikidata_id)
     fullname = wikidata_item.get_label()
     forename, surname, surname_prefix = Person.get_name_parts(fullname, wikidata_item)
     self.assertEqual(forename, 'Jan Kees')
     self.assertEqual(surname, 'Jager')
     self.assertEqual(surname_prefix, 'de')
Exemple #32
0
 def test_sybrand_van_haersma_buma(self):
     wikidata_id = 'Q377266'
     wikidata_item = wikidata.WikidataItem(wikidata_id)
     fullname = wikidata_item.get_label()
     forename, surname, surname_prefix = Person.get_name_parts(fullname, wikidata_item)
     self.assertEqual(forename, 'Sybrand')
     self.assertEqual(surname, 'Haersma Buma')
     self.assertEqual(surname_prefix, 'van')
Exemple #33
0
def test_person_str():
    p = Person(
        first_name='a',
        last_name='b',
        birth_date='1969-01-01',
    )

    assert str(p) == 'a b 1969-01-01'
Exemple #34
0
 def test_melanie_schultz_van_hagen(self):
     wikidata_id = 'Q435886'
     wikidata_item = wikidata.WikidataItem(wikidata_id)
     fullname = wikidata_item.get_label()
     forename, surname, surname_prefix = Person.get_name_parts(
         fullname, wikidata_item)
     self.assertEqual(forename, 'Melanie')
     self.assertEqual(surname_prefix, '')
     self.assertEqual(surname, 'Schultz van Haegen')
Exemple #35
0
    def render_event(self, eventid, feeds):
        if feeds:
            from person.models import Person
            my_reps = set()
            for f in feeds:
                try:
                    my_reps.add(Person.from_feed(f))
                except ValueError:
                    pass # not a person-related feed
            my_reps = sorted(my_reps, key = lambda p : p.sortname)
        else:
            my_reps = []

        # fetch the whole vote and our summary, and keep it cached with this object
        # because in email updates this object is held in memory for the duration of
        # sending out all email updates
        if not hasattr(self, "_cached_event_data"):
            oursummary = self.get_summary()
            all_votes = {
                vv.person: vv.option
                for vv in
                self.voters.select_related('person', 'option')
            }
            self._cached_event_data = [oursummary, all_votes]
        else:
            oursummary, all_votes = self._cached_event_data
        
        return {
            "type": "Vote",
            "date": self.created,
            "title": self.question,
            "url": self.get_absolute_url(),
            "body_text_template":
"""{{summary|safe}}
{% for voter in voters %}{{voter.name|safe}}: {{voter.vote|safe}}
{% endfor %}
{% if oursummary %}{{oursummary.plain_text|truncatewords:120|safe}}{% endif %}""",
            "body_html_template":
"""<p>{{summary}}</p>
{% for voter in voters %}
    <p><a href="{{SITE_ROOT}}{{voter.url}}">{{voter.name}}</a>: {{voter.vote}}</p>
{% endfor %}
{% if oursummary %}{{oursummary.as_html|truncatewords_html:120|safe}}{% endif %}
""",
            "context": {
                "summary": self.summary(),
                "oursummary": oursummary,
                "voters":
                            [
                                { "url": p.get_absolute_url(), "name": p.name_lastonly(), "vote": all_votes[p].value }
                                for p in my_reps if p in all_votes
                            ]
                        if feeds != None else []
                },
            "thumbnail_url": self.get_thumbnail_url(),
            "large_thumbnail_url": self.get_absolute_url() + "/card",
            }
Exemple #36
0
 def test_sybrand_van_haersma_buma(self):
     wikidata_id = 'Q377266'
     wikidata_item = wikidata.WikidataItem(wikidata_id)
     fullname = wikidata_item.get_label()
     forename, surname, surname_prefix = Person.get_name_parts(
         fullname, wikidata_item)
     self.assertEqual(forename, 'Sybrand')
     self.assertEqual(surname, 'Haersma Buma')
     self.assertEqual(surname_prefix, 'van')
Exemple #37
0
 def test_leendert_de_lange(self):
     wikidata_id = 'Q19839084'
     wikidata_item = wikidata.WikidataItem(wikidata_id)
     fullname = wikidata_item.get_label()
     forename, surname, surname_prefix = Person.get_name_parts(
         fullname, wikidata_item)
     self.assertEqual(forename, 'Leendert')
     self.assertEqual(surname_prefix, 'de')
     self.assertEqual(surname, 'Lange')
Exemple #38
0
 def test_sjoerd_sjoerdsma(self):
     wikidata_id = 'Q516335'
     wikidata_item = wikidata.WikidataItem(wikidata_id)
     fullname = wikidata_item.get_label()
     forename, surname, surname_prefix = Person.get_name_parts(
         fullname, wikidata_item)
     self.assertEqual(forename, 'Sjoerd')
     self.assertEqual(surname, 'Sjoerdsma')
     self.assertEqual(surname_prefix, '')
Exemple #39
0
 def test_jan_kees_de_jager(self):
     wikidata_id = 'Q1666631'
     wikidata_item = wikidata.WikidataItem(wikidata_id)
     fullname = wikidata_item.get_label()
     forename, surname, surname_prefix = Person.get_name_parts(
         fullname, wikidata_item)
     self.assertEqual(forename, 'Jan Kees')
     self.assertEqual(surname, 'Jager')
     self.assertEqual(surname_prefix, 'de')
Exemple #40
0
 def test_jan_peter_balkenende(self):
     wikidata_id = 'Q133386'
     wikidata_item = wikidata.WikidataItem(wikidata_id)
     fullname = wikidata_item.get_label()
     forename, surname, surname_prefix = Person.get_name_parts(
         fullname, wikidata_item)
     self.assertEqual(forename, 'Jan Peter')
     self.assertEqual(surname, 'Balkenende')
     self.assertEqual(surname_prefix, '')
Exemple #41
0
 def test_fatma_koser_kaya(self):
     wikidata_id = 'Q467610'  # Fatma Koşer Kaya
     wikidata_item = wikidata.WikidataItem(wikidata_id)
     fullname = wikidata_item.get_label()
     forename, surname, surname_prefix = Person.get_name_parts(
         fullname, wikidata_item)
     self.assertEqual(forename, 'Fatma')
     self.assertEqual(surname, 'Koşer Kaya')
     self.assertEqual(surname_prefix, '')
Exemple #42
0
def main():
    from person.models import Person
    with open("1.json") as jsonfile:
        json_data = json.load(jsonfile)
        PersonList = []
        for dicobj in json_data:
            person = Person(volume=dicobj["volume"], postdate=dicobj["postdate"], gender=dicobj["gender"],idnum=dicobj["idnum"],city=dicobj["city"],dec=dicobj["dec"],image_urls=dicobj["image_urls"][0] )
            PersonList.append(person)
    Person.objects.bulk_create(PersonList)
Exemple #43
0
class AccessRestrictedView( UnifiView ):

    def __call__( self, request, *args, **kwargs ):
        """
        Due to security concerns, do not overload this function or
        any of its subclass overrides.
        """
        self.request = request
        self.args = args
        self.kwargs = kwargs
        
        if self.request.user.is_authenticated():
            self.user = self.request.user

            try:
                self.person = Person.objects.get( user=self.user )
            except Person.DoesNotExist:
                self.person = Person( user=self.user )
                self.person.save()
            return self.allow( *args, **kwargs )

        else:
            return self.deny()


    def deny( self ):
        client = Client( self.request )

        if client.is_banned():
            return HttpResponse( status=403 )
        else:
            return self.dialog(

                title       = "Not Authenticated",
                message     = "Velkommen til UNIFI, du er ikke pålogget. " + \
                              "For å logge deg på benytt universitetets " + \
                              "innloggingsportal."

            )

    def render( self, template_name, context ):
        context['person'] = self.person
        context['rules'] = rules
        return builtin_render( self.request, template_name, context )
Exemple #44
0
    def render_event(self, eventid, feeds):
        if feeds:
            from person.models import Person
            my_reps = set()
            for f in feeds:
                try:
                    my_reps.add(Person.from_feed(f))
                except ValueError:
                    pass # not a person-related feed
            my_reps = sorted(my_reps, key = lambda p : p.sortname)
        else:
            my_reps = []

        # fetch the whole vote and our summary, and keep it cached with this object
        # because in email updates this object is held in memory for the duration of
        # sending out all email updates
        if not hasattr(self, "_cached_event_data"):
            oursummary = self.get_summary()
            all_votes = {
                vv.person: vv.option
                for vv in
                self.voters.select_related('person', 'option')
            }
            self._cached_event_data = [oursummary, all_votes]
        else:
            oursummary, all_votes = self._cached_event_data
        
        return {
            "type": "Vote",
            "date": self.created,
            "title": self.question,
            "url": self.get_absolute_url(),
            "body_text_template":
"""{{summary|safe}}
{% for voter in voters %}{{voter.name|safe}}: {{voter.vote|safe}}
{% endfor %}
{% if oursummary %}{{oursummary.plain_text|truncatewords:120|safe}}{% endif %}""",
            "body_html_template":
"""<p>{{summary}}</p>
{% for voter in voters %}
    <p><a href="{{SITE_ROOT}}{{voter.url}}">{{voter.name}}</a>: {{voter.vote}}</p>
{% endfor %}
{% if oursummary %}{{oursummary.as_html|truncatewords_html:120|safe}}{% endif %}
""",
            "context": {
                "summary": self.summary(),
                "oursummary": oursummary,
                "voters":
                            [
                                { "url": p.get_absolute_url(), "name": p.name_lastonly(), "vote": all_votes[p].value }
                                for p in my_reps if p in all_votes
                            ]
                        if feeds != None else []
                },
			"thumbnail_url": self.get_thumbnail_url(),
            }
Exemple #45
0
 def find(surname, initials='', date=None):
     person = Person.find_surname_initials(surname, initials)
     if date:
         members = ParliamentMember.find_at_date(person, date)
     else:
         members = ParliamentMember.objects.filter(person=person).order_by('-joined')
     if members.exists():
         return members[0]
     logger.info('ParliamentMember not found for: ' + str(surname) + ' (' + initials + ')')
     return None
Exemple #46
0
 def test_find_members(self):
     person = Person.find_by_fullname('Diederik Samsom')
     member = ParliamentMember.find('Samsom', initials='D.M.')
     self.assertEqual(member.person, person)
     member = ParliamentMember.find('Samsom', initials='D.M.', date=datetime.date(year=2004, month=6, day=1))
     self.assertEqual(member.person, person)
     self.assertEqual(member.joined, datetime.date(year=2003, month=1, day=30))
     member = ParliamentMember.find('Samsom', initials='D.M.', date=datetime.date(year=2016, month=6, day=1))
     self.assertEqual(member.person, person)
     self.assertEqual(member.joined, datetime.date(year=2012, month=9, day=20))
Exemple #47
0
 def find(surname, initials='', date=None):
     person = Person.find_surname_initials(surname, initials)
     if date:
         members = ParliamentMember.find_at_date(person, date)
     else:
         members = ParliamentMember.objects.filter(person=person).order_by('-joined')
     if members.exists():
         return members[0]
     logger.info('ParliamentMember not found for: {} ({})'.format(surname, initials))
     return None
Exemple #48
0
 def test_individual_voting(self):
     pijkstra = Person.find_surname_initials('Dijkstra', 'P.A.')
     vote = VoteIndividual.objects.create(
         voting=self.voting,
         person_name='Dijkstra, P.A.',
         person_tk_id=pijkstra.tk_id,
         number_of_seats=1
     )
     vote.set_derived()
     self.assertEqual(vote.parliament_member.person.surname, 'Dijkstra')
Exemple #49
0
 def test_find_members(self):
     person = Person.find_by_fullname('Diederik Samsom')
     member = ParliamentMember.find('Samsom', initials='D.M.')
     self.assertEqual(member.person, person)
     member = ParliamentMember.find('Samsom', initials='D.M.', date=datetime.date(year=2004, month=6, day=1))
     self.assertEqual(member.person, person)
     self.assertEqual(member.joined, datetime.date(year=2003, month=1, day=30))
     member = ParliamentMember.find('Samsom', initials='D.M.', date=datetime.date(year=2016, month=6, day=1))
     self.assertEqual(member.person, person)
     self.assertEqual(member.joined, datetime.date(year=2012, month=9, day=20))
Exemple #50
0
def person_session_stats_export(request, session, cohort, statistic):
    try:
        stats = Person.load_session_stats(session)
    except ValueError:
        # no stats
        raise Http404()

    # collect data
    rows = []
    for person_id, person_stats in stats["people"].items():
        if cohort not in [c["key"] for c in person_stats["cohorts"]]: continue
        if statistic not in person_stats["stats"]: continue
        if "context" not in person_stats["stats"][statistic]: continue
        rows.append([
            person_stats["stats"][statistic]["context"][cohort]["rank_ascending"],
            person_stats["stats"][statistic]["context"][cohort]["rank_descending"],
            person_stats["stats"][statistic]["context"][cohort]["percentile"],
            person_stats["stats"][statistic]["value"],
            int(person_id),
			"", # bioguide ID
            int(person_stats["role_id"]),
            "", # state
            "", # district
            ])
    if len(rows) == 0:
        raise Http404()

    # assign sortname to the 2nd column so we can use it in sorting
    people = Person.objects.in_bulk([r[4] for r in rows])
    roles = PersonRole.objects.in_bulk([r[6] for r in rows])
    for r in rows:
        #if r[4] not in people: continue # database mismatch, happens during testing
        r[5] = people[r[4]].bioguideid
        r[6], r[7] = roles[r[6]].state, roles[r[6]].district if isinstance(roles[r[6]].district, int) else ""
        r[8] = people[r[4]].lastname.encode("utf-8")

    # sort by rank, then by name
    rows.sort(key = lambda r : (r[0], r[8]))

    # format CSV
    import csv, StringIO
    outfile = StringIO.StringIO()
    writer = csv.writer(outfile)
    writer.writerow(["rank_from_low", "rank_from_high", "percentile", statistic, "id", "bioguide_id", "state", "district", "name"])
    for row in rows: writer.writerow(row)
    output = outfile.getvalue()

    # construct response
    if request.GET.get("inline") is None:
        r = HttpResponse(output, content_type='text/csv')
        r['Content-Disposition'] = 'attachment; filename=' + "govtrack-stats-%s-%s-%s.csv" % (session, cohort, statistic)
    else:
        r = HttpResponse(output, content_type='text/plain')
    return r
Exemple #51
0
 def test_get_member_for_person_at_date(self):
     person = Person.find_by_fullname('Diederik Samsom')
     members_all = ParliamentMember.objects.filter(person=person)
     self.assertEqual(members_all.count(), 4)
     members = ParliamentMember.find_at_date(person, datetime.date(year=2016, month=6, day=1))
     self.assertEqual(members[0].joined, datetime.date(year=2012, month=9, day=20))
     self.assertEqual(members.count(), 1)
     self.assertEqual(members[0].person, person)
     members = ParliamentMember.find_at_date(person, datetime.date(year=2004, month=6, day=1))
     self.assertEqual(members[0].joined, datetime.date(year=2003, month=1, day=30))
     self.assertEqual(members.count(), 1)
     self.assertEqual(members[0].person, person)
Exemple #52
0
    def parse(klass, row, carrier, areacode, phone_type):
        row = list(row)                                 # Make row mutable

        person = Person()
        person.name = normalize_text(row[2])

        address = Address()
        address.location = normalize_text(row[3])
        address.neighborhood = normalize_text(row[4])
        address.city = normalize_text(row[5])
        address.state = normalize_text(row[6])

        phone = Phone()
        phone.carrier = carrier
        phone.areacode = areacode
        phone.type = phone_type

        try:

            # document - try CPF
            person.document = validate_cpf(row[8][-11:])
            person.nature = Person.NATURE_CHOICES_PHYSICAL[0]

        except CPFValidationError:

            # document - try CNPJ
            person.document = validate_cnpj(row[8][-14:])
            person.nature = Person.NATURE_CHOICES_LEGAL[0]

        address.zipcode = validate_zipcode(row[7])

        phone.number = validate_phone_number(row[1])

        return klass(row, person, address, phone)
Exemple #53
0
def make_person(name, building, relation, address=None, city=None, website=None, phone=None):

    # now associate applicant with building:

    # first find/make person
    people = Person.objects.filter(city=city).filter(name=name)
    person = None
    # check if a previous building object in the db exists
    if people.exists():
        person = people[0]
        print "Already had Person: %s" % person.name
    else:
        # if not,
        # CREATE A NEW PERSON OBJECT HERE
        person = Person()

        person.name = name
        if city:
            person.city = city

        if address:
            person.address = address

        if website:
            person.website = website

        if phone:
            person.phone = phone

        person.save()

    # then find/make association:
    bpeople = BuildingPerson.objects.filter(building=building).filter(person=person)
    bperson = None
    # check if a previous building_person object in the db exists
    if bpeople.exists():
        bperson = bpeople[0]
        print "Already had BuildingPerson: %s with: %s" % (bperson.person.name, bperson.building.address)
    else:
        # if not,
        # CREATE A NEW BUILDING PERSON OBJECT HERE
        bperson = BuildingPerson()

        bperson.person = person
        bperson.building = building
        bperson.relation = relation
        bperson.save()

    return (person, bperson)
Exemple #54
0
 def test_create_person(self):
     forename = 'Mark'
     surname = 'Rutte'
     person = Person.objects.create(forename=forename, surname=surname)
     self.assertEqual(Person.objects.count(), 1)
     self.assertTrue(Person.person_exists(forename, surname))
     person.update_info()
     person.save()
     self.assertEqual(person.wikidata_id, 'Q57792')
     self.assertEqual(person.wikimedia_image_name.split('.')[1], 'jpg')
     response = requests.get(person.wikimedia_image_url)
     self.assertEqual(response.status_code, 200)
     self.assertEqual(person.birthdate, date(1967, 2, 14))
Exemple #55
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     context['persons_same_surname'] = Person.same_surname()
     context['persons_surname_only'] = Person.objects.filter(forename='', initials='')
     same_slug_ids = []
     persons = Person.objects.all()
     for person in persons:
         persons_same_slug = Person.objects.filter(slug=person.slug)
         if persons_same_slug.count() > 1:
             for p in persons_same_slug:
                 same_slug_ids.append(p.id)
     context['persons_same_slug'] = Person.objects.filter(pk__in=same_slug_ids).order_by('slug')
     return context
Exemple #56
0
    def render_event(self, eventid, feeds):
        if feeds:
            from person.models import Person
            my_reps = set()
            for f in feeds:
                try:
                    my_reps.add(Person.from_feed(f))
                except ValueError:
                    pass # not a person-related feed
            my_reps = sorted(my_reps, key = lambda p : p.sortname)
        else:
            my_reps = []

        oursummary = self.get_summary()

        # fetch the whole vote (don't restrict by my_reps in the hope of
        # making use of the db query cache)
        all_votes = {
            vv.person: vv.option
            for vv in
            self.voters.select_related('person', 'option')
        }
        
        return {
            "type": "Vote",
            "date": self.created,
            "title": self.question,
            "url": self.get_absolute_url(),
            "body_text_template":
"""{{summary|safe}}
{% for voter in voters %}{{voter.name|safe}}: {{voter.vote|safe}}
{% endfor %}
{% if oursummary %}{{oursummary.plain_text|truncatewords:120|safe}}{% endif %}""",
            "body_html_template":
"""<p>{{summary}}</p>
{% for voter in voters %}
    <p><a href="{{SITE_ROOT}}{{voter.url}}">{{voter.name}}</a>: {{voter.vote}}</p>
{% endfor %}
{% if oursummary %}{{oursummary.as_html|truncatewords_html:120|safe}}{% endif %}
""",
            "context": {
                "summary": self.summary(),
                "oursummary": oursummary,
                "voters":
                            [
                                { "url": p.get_absolute_url(), "name": p.name_lastonly(), "vote": all_votes[p].value }
                                for p in my_reps if p in all_votes
                            ]
                        if feeds != None else []
                }
            }
Exemple #57
0
    def setUp(self):
        logged, self.user, self.factory = system_authentication(self)
        self.assertEqual(logged, True)

        country = Country(id=31)
        country.save()

        city = City(country=country)
        city.save()

        person = Person(full_name="Fulano Testeiro")
        person.save()

        date_departure1 = datetime.date(2015, 1, 15)
        date_arrival1 = datetime.date(2015, 1, 16)

        date_departure2 = datetime.date(2014, 1, 15)
        date_arrival2 = datetime.date(2014, 1, 16)
        order_01 = 0
        order_02 = 1

        amount_paid = 666

        mission1 = scientific_mission(person, amount_paid)
        mission1.save()
        route1_mission1 = create_route(city, mission1, date_departure1, order_01)
        route2_mission1 = create_route(city, mission1, date_arrival1, order_02)
        route1_mission1.save()
        route2_mission1.save()

        mission2 = scientific_mission(person, amount_paid)
        mission2.save()
        route1_mission2 = create_route(city, mission2, date_departure2, order_01)
        route2_mission2 = create_route(city, mission2, date_arrival2, order_02)
        route1_mission2.save()
        route2_mission2.save()
Exemple #58
0
def create_person(wikidata_id, fullname, wikidata_item, add_initials):
    if not fullname:
        fullname = wikidata_item.get_label(language='nl')
    forename, surname, surname_prefix = Person.get_name_parts(fullname, wikidata_item)
    person = Person.objects.create(
        forename=forename,
        surname=surname,
        surname_prefix=surname_prefix,
        wikidata_id=wikidata_id
    )
    person.update_info(language='nl', wikidata_item=wikidata_item)
    person.save()
    if add_initials and person.parlement_and_politiek_id:
        person.initials = scraper.persons.get_initials(person.parlement_and_politiek_id)
        person.save()
    assert person.wikidata_id == wikidata_id
    return person
    def render_event(self, eventid, feeds):
        if feeds:
            from person.models import Person
            my_reps = set()
            for f in feeds:
                try:
                    my_reps.add(Person.from_feed(f))
                except ValueError:
                    pass # not a person-related feed
            my_reps = sorted(my_reps, key = lambda p : p.sortname)
        else:
            my_reps = []

        try:
            oursummary = self.oursummary
        except VoteSummary.DoesNotExist:
            oursummary = None
        
        return {
            "type": "Vote",
            "date": self.created,
            "title": self.question,
            "url": self.get_absolute_url(),
            "body_text_template":
"""{{summary|safe}}
{% for voter in voters %}{{voter.name|safe}}: {{voter.vote|safe}}
{% endfor %}
{% if oursummary %}{{oursummary.plain_text|safe}}{% endif %}""",
            "body_html_template":
"""<p>{{summary}}</p>
{% for voter in voters %}
    <p><a href="{{SITE_ROOT}}{{voter.url}}">{{voter.name}}</a>: {{voter.vote}}</p>
{% endfor %}
{% if oursummary %}{{oursummary.as_html|safe}}{% endif %}
""",
            "context": {
                "summary": self.summary(),
                "oursummary": oursummary,
                "voters":
                            [
                                { "url": p.get_absolute_url(), "name": p.name_lastonly(), "vote": self.voters.get(person=p).option.value }
                                for p in my_reps if self.voters.filter(person=p).exists()
                            ]
                        if feeds != None else []
                }
            }