def get_post_data(api, json_election_id, json_election_id_to_name):
    json_election_name = json_election_id_to_name[json_election_id]
    ynr_election_id = {
        u'Pre-candidatos a Presidente':
        'presidentes-argentina-paso-2015',
        u'Pre-candidatos a Gobernador de Buenos Aires':
        'gobernadores-argentina-paso-2015',
        u'Pre-candidatos a Gobernador de Tucumán':
        'gobernadores-argentina-paso-2015',
        u'Pre-candidatos a Gobernador de Entre Ríos':
        'gobernadores-argentina-paso-2015',
        u'Pre-Candidatos a Gobernador de San Juan':
        'gobernadores-argentina-paso-2015',
    }[json_election_name]
    ynr_election_data = settings.ELECTIONS[ynr_election_id]
    ynr_election_data['id'] = ynr_election_id
    province = None
    m = re.search(r'a Gobernador de (?P<province>.*)', json_election_name)
    if m:
        province = m.group('province')
        mapit_areas_by_name = MAPIT_DATA.areas_by_name[('PRV', 1)]
        mapit_area = mapit_areas_by_name[strip_accents(province).upper()]
        post_id = AREA_POST_DATA.get_post_id(
            ynr_election_id, mapit_area['type'], mapit_area['id']
        )
    else:
        # It must be the presidential election:
        post_id = 'presidente'
    post_data = get_post_cached(api, post_id)['result']
    return ynr_election_data, post_data
Example #2
0
def get_post_data(api, origin_post, origin_district):
    from candidates.cache import get_post_cached
    from candidates.election_specific import AREA_DATA, AREA_POST_DATA
    if ("SUPLENTE" in origin_post):
        return False, False

    ynr_election_id = {
        'DIPUTADO NACIONAL TITULAR':
        'diputados-argentina-paso-2015',
        'SENADOR NACIONAL TITULAR':
        'senadores-argentina-paso-2015',
        'PARLAMENTARIO MERCOSUR DISTRITO REGIONAL TITULAR':
        'parlamentarios-mercosur-regional-paso-2015',
        'PARLAMENTARIO MERCOSUR DISTRITO NACIONAL TITULAR':
        'parlamentarios-mercosur-unico-paso-2015'
    }[origin_post]
    ynr_election_data = Election.objects.get_by_slug(ynr_election_id)
    province = None

    if origin_district == "PARLAMENTARIO MERCOSUR DISTRITO NACIONAL(1)":
        post_id = 'pmeu'

    else:
        areas_by_name = AREA_DATA.areas_by_name[('PRV', '1')]
        area = areas_by_name[origin_district]
        post_id = AREA_POST_DATA.get_post_id(ynr_election_id, area['type'],
                                             area['id'])

    post_data = get_post_cached(api, post_id)['result']
    return ynr_election_data, post_data
def get_post_data(api, json_election_id, json_election_id_to_name):
    from candidates.cache import get_post_cached
    from candidates.election_specific import AREA_DATA, AREA_POST_DATA
    json_election_name = json_election_id_to_name[json_election_id]
    ynr_election_id = {
        'Pre-candidatos a Presidente':
        'presidentes-argentina-paso-2015',
        'Pre-candidatos a Gobernador de Buenos Aires':
        'gobernadores-argentina-paso-2015',
        'Pre-candidatos a Gobernador de Tucumán':
        'gobernadores-argentina-paso-2015',
        'Pre-candidatos a Gobernador de Entre Ríos':
        'gobernadores-argentina-paso-2015',
        'Pre-Candidatos a Gobernador de San Juan':
        'gobernadores-argentina-paso-2015',
    }[json_election_name]
    ynr_election_data = Election.objects.get_by_slug(ynr_election_id)
    province = None
    m = re.search(r'a Gobernador de (?P<province>.*)', json_election_name)
    if m:
        province = m.group('province')
        areas_by_name = AREA_DATA.areas_by_name[('PRV', '1')]
        area = areas_by_name[strip_accents(province).upper()]
        post_id = AREA_POST_DATA.get_post_id(
            ynr_election_id, area['type'], area['id']
        )
    else:
        # It must be the presidential election:
        post_id = 'presidente'
    post_data = get_post_cached(api, post_id)['result']
    return ynr_election_data, post_data
def get_post_data(api, origin_post,origin_district):
    from candidates.cache import get_post_cached
    from candidates.election_specific import AREA_DATA, AREA_POST_DATA
    if ("SUPLENTE" in origin_post):
        return False, False;

    ynr_election_id = {
        'DIPUTADO NACIONAL TITULAR':
        'diputados-argentina-paso-2015',
        'SENADOR NACIONAL TITULAR':
        'senadores-argentina-paso-2015',
        'PARLAMENTARIO MERCOSUR DISTRITO REGIONAL TITULAR':
        'parlamentarios-mercosur-regional-paso-2015',
        'PARLAMENTARIO MERCOSUR DISTRITO NACIONAL TITULAR':
        'parlamentarios-mercosur-unico-paso-2015'


    }[origin_post]
    ynr_election_data = Election.objects.get_by_slug(ynr_election_id)
    province = None

    if origin_district == "PARLAMENTARIO MERCOSUR DISTRITO NACIONAL(1)":
        post_id = 'pmeu'

    else:
        areas_by_name = AREA_DATA.areas_by_name[('PRV', '1')]
        area = areas_by_name[origin_district]
        post_id = AREA_POST_DATA.get_post_id(
            ynr_election_id, area['type'], area['id']
        )

    post_data = get_post_cached(api, post_id)['result']
    return ynr_election_data, post_data
Example #5
0
def get_post_data(api, json_election_id, json_election_id_to_name):
    json_election_name = json_election_id_to_name[json_election_id]
    ynr_election_id = {
        u'Pre-candidatos a Presidente':
        'presidentes-argentina-paso-2015',
        u'Pre-candidatos a Gobernador de Buenos Aires':
        'gobernadores-argentina-paso-2015',
        u'Pre-candidatos a Gobernador de Tucumán':
        'gobernadores-argentina-paso-2015',
        u'Pre-candidatos a Gobernador de Entre Ríos':
        'gobernadores-argentina-paso-2015',
        u'Pre-Candidatos a Gobernador de San Juan':
        'gobernadores-argentina-paso-2015',
    }[json_election_name]
    ynr_election_data = settings.ELECTIONS[ynr_election_id]
    ynr_election_data['id'] = ynr_election_id
    province = None
    m = re.search(r'a Gobernador de (?P<province>.*)', json_election_name)
    if m:
        province = m.group('province')
        mapit_areas_by_name = MAPIT_DATA.areas_by_name[('PRV', 1)]
        mapit_area = mapit_areas_by_name[strip_accents(province).upper()]
        post_id = AREA_POST_DATA.get_post_id(ynr_election_id,
                                             mapit_area['type'],
                                             mapit_area['id'])
    else:
        # It must be the presidential election:
        post_id = 'presidente'
    post_data = get_post_cached(api, post_id)['result']
    return ynr_election_data, post_data
Example #6
0
def get_post_data(api, json_election_id, json_election_id_to_name):
    from candidates.cache import get_post_cached
    from candidates.election_specific import AREA_DATA, AREA_POST_DATA
    json_election_name = json_election_id_to_name[json_election_id]
    ynr_election_id = {
        'Pre-candidatos a Presidente':
        'presidentes-argentina-paso-2015',
        'Pre-candidatos a Gobernador de Buenos Aires':
        'gobernadores-argentina-paso-2015',
        'Pre-candidatos a Gobernador de Tucumán':
        'gobernadores-argentina-paso-2015',
        'Pre-candidatos a Gobernador de Entre Ríos':
        'gobernadores-argentina-paso-2015',
        'Pre-Candidatos a Gobernador de San Juan':
        'gobernadores-argentina-paso-2015',
    }[json_election_name]
    ynr_election_data = Election.objects.get_by_slug(ynr_election_id)
    province = None
    m = re.search(r'a Gobernador de (?P<province>.*)', json_election_name)
    if m:
        province = m.group('province')
        areas_by_name = AREA_DATA.areas_by_name[('PRV', '1')]
        area = areas_by_name[strip_accents(province).upper()]
        post_id = AREA_POST_DATA.get_post_id(ynr_election_id, area['type'],
                                             area['id'])
    else:
        # It must be the presidential election:
        post_id = 'presidente'
    post_data = get_post_cached(api, post_id)['result']
    return ynr_election_data, post_data
Example #7
0
def get_constituency_lock(user, api, post_id):
    """Return whether the constituency is locked and whether this user can edit"""

    if not post_id:
        return False, True
    # Use the cached version because it'll be faster than going to
    # PopIt, even if it brings in embeds that we don't need:
    post_data = get_post_cached(api, post_id)['result']
    candidates_locked = bool(post_data.get('candidates_locked'))
    edits_allowed = get_edits_allowed(user, candidates_locked)
    return candidates_locked, edits_allowed
Example #8
0
def get_constituency_lock(user, api, post_id):
    """Return whether the constituency is locked and whether this user can edit"""

    if not post_id:
        return False, True
    # Use the cached version because it'll be faster than going to
    # PopIt, even if it brings in embeds that we don't need:
    post_data = get_post_cached(api, post_id)['result']
    candidates_locked = bool(post_data.get('candidates_locked'))
    edits_allowed = get_edits_allowed(user, candidates_locked)
    return candidates_locked, edits_allowed
Example #9
0
def get_post_data(api, election_id, province):
    from candidates.cache import get_post_cached
    from candidates.election_specific import AREA_DATA, AREA_POST_DATA
    ynr_election_data = Election.objects.get_by_slug(election_id)
    area_key = (ynr_election_data.area_types.first().name,
                ynr_election_data.area_generation)
    areas_by_name = AREA_DATA.areas_by_name[area_key]
    if province != 'Burkina Faso':
        province = strip_accents(province).upper()
    area = areas_by_name[province]
    post_id = AREA_POST_DATA.get_post_id(election_id, area['type'], area['id'])
    post_data = get_post_cached(api, post_id)['result']
    return ynr_election_data, post_data
def get_post_data(api, election_id, province):
    ynr_election_data = Election.objects.get_by_slug(election_id)
    area_key = (ynr_election_data.area_types.first().name,
                 ynr_election_data.area_generation)
    areas_by_name = AREA_DATA.areas_by_name[area_key]
    if province != 'Burkina Faso':
        province = strip_accents(province).upper()
    area = areas_by_name[province]
    post_id = AREA_POST_DATA.get_post_id(
        election_id, area['type'], area['id']
    )
    post_data = get_post_cached(api, post_id)['result']
    return ynr_election_data, post_data
Example #11
0
 def get_context_data(self, **kwargs):
     context = super(AreasView, self).get_context_data(**kwargs)
     all_area_names = set()
     context['posts'] = []
     for area_type, area_id in self.types_and_areas:
         # Show candidates from the current elections:
         for election_data in Election.objects.current().by_date():
             area_generation = election_data.area_generation
             if area_type in [area.name for area in election_data.area_types.all()]:
                 area_tuple = (area_type, area_generation)
                 post_id = AREA_POST_DATA.get_post_id(election_data.slug, area_type, area_id)
                 post_data = get_post_cached(self.api, post_id)['result']
                 area_name = AREA_DATA.areas_by_id[area_tuple][area_id]['name']
                 all_area_names.add(area_name)
                 locked = post_data.get('candidates_locked', False)
                 current_candidates, _ = get_people_from_memberships(
                     election_data,
                     post_data['memberships']
                 )
                 # The 'memberships' data can be huge; when you
                 # have Django Debug Toolbar active this causes
                 # page loading to be incredibly slow; it's not
                 # needed any longer from this point on, so remove
                 # it from the data that goes into the context.
                 del post_data['memberships']
                 current_candidates = group_people_by_party(
                     election_data.slug,
                     current_candidates,
                     party_list=election_data.party_lists_in_use,
                     max_people=election_data.default_party_list_members_to_show
                 )
                 context['posts'].append({
                     'election': election_data.slug,
                     'election_data': election_data,
                     'post_data': post_data,
                     'candidates_locked': locked,
                     'candidate_list_edits_allowed':
                     get_edits_allowed(self.request.user, locked),
                     'candidates': current_candidates,
                     'add_candidate_form': NewPersonForm(
                         election=election_data.slug,
                         initial={
                             ('constituency_' + election_data.slug): post_id,
                             ('standing_' + election_data.slug): 'standing',
                         },
                         hidden_post_widget=True,
                     ),
                 })
     context['all_area_names'] = u' — '.join(all_area_names)
     context['suppress_official_documents'] = True
     return context
Example #12
0
 def get_context_data(self, **kwargs):
     context = super(AreasView, self).get_context_data(**kwargs)
     all_area_names = set()
     context['posts'] = []
     for mapit_type, area_id in self.types_and_areas:
         # Show candidates from the current elections:
         for election, election_data in settings.ELECTIONS_CURRENT:
             mapit_generation = election_data['mapit_generation']
             if mapit_type in election_data['mapit_types']:
                 mapit_tuple = (mapit_type, mapit_generation)
                 post_id = AREA_POST_DATA.get_post_id(
                     election, mapit_type, area_id)
                 post_data = get_post_cached(self.api, post_id)['result']
                 area_name = MAPIT_DATA.areas_by_id[mapit_tuple][area_id][
                     'name']
                 all_area_names.add(area_name)
                 locked = post_data.get('candidates_locked', False)
                 current_candidates, _ = get_people_from_memberships(
                     election_data,
                     post_data['memberships'],
                 )
                 context['posts'].append({
                     'election':
                     election,
                     'election_data':
                     election_data,
                     'post_data':
                     post_data,
                     'candidates_locked':
                     locked,
                     'candidate_list_edits_allowed':
                     get_edits_allowed(self.request.user, locked),
                     'candidates':
                     current_candidates,
                     'add_candidate_form':
                     NewPersonForm(
                         election=election,
                         initial={
                             ('constituency_' + election): post_id,
                             ('standing_' + election): 'standing',
                         },
                         hidden_post_widget=True,
                     ),
                 })
     context['all_area_names'] = u' — '.join(all_area_names)
     context['suppress_official_documents'] = True
     return context
Example #13
0
 def get_context_data(self, **kwargs):
     context = super(AreasView, self).get_context_data(**kwargs)
     all_area_names = set()
     context['posts'] = []
     for mapit_type, area_id in self.types_and_areas:
         # Show candidates from the current elections:
         for election, election_data in settings.ELECTIONS_CURRENT:
             mapit_generation = election_data['mapit_generation']
             if mapit_type in election_data['mapit_types']:
                 mapit_tuple = (mapit_type, mapit_generation)
                 post_id = AREA_POST_DATA.get_post_id(election, mapit_type, area_id)
                 post_data = get_post_cached(self.api, post_id)['result']
                 area_name = MAPIT_DATA.areas_by_id[mapit_tuple][area_id]['name']
                 all_area_names.add(area_name)
                 locked = post_data.get('candidates_locked', False)
                 current_candidates, _ = get_people_from_memberships(
                     election_data,
                     post_data['memberships'],
                 )
                 context['posts'].append({
                     'election': election,
                     'election_data': election_data,
                     'post_data': post_data,
                     'candidates_locked': locked,
                     'candidate_list_edits_allowed':
                     get_edits_allowed(self.request.user, locked),
                     'candidates': current_candidates,
                     'add_candidate_form': NewPersonForm(
                         election=election,
                         initial={
                             ('constituency_' + election): post_id,
                             ('standing_' + election): 'standing',
                         },
                         hidden_post_widget=True,
                     ),
                 })
     context['all_area_names'] = u' — '.join(all_area_names)
     context['suppress_official_documents'] = True
     return context
 def get_context_data(self, **kwargs):
     context = super(CreateDocumentView, self).get_context_data(**kwargs)
     api = create_popit_api_object()
     post_data = get_post_cached(api, self.kwargs['post_id'])['result']
     context['post_label'] = post_data['label']
     return context
 def form_valid(self, form):
     wmc = get_wmc_from_postcode(form.cleaned_data['postcode'])
     post_data = get_post_cached(self.api, wmc)['result']
     return get_redirect_to_post(get_current_election().slug, post_data)
 def form_valid(self, form):
     post_id = form.cleaned_data['constituency']
     post_data = get_post_cached(self.api, post_id)['result']
     return get_redirect_to_post(get_current_election().slug, post_data)
    def handle(self, **options):
        from slumber.exceptions import HttpClientError
        from candidates.cache import get_post_cached, UnknownPostException
        from candidates.election_specific import PARTY_DATA, shorten_post_label
        from candidates.models import PopItPerson
        from candidates.popit import create_popit_api_object

        spreadsheet_url = 'https://docs.google.com/spreadsheets/d/{0}/pub?output=csv'\
                              .format(GOOGLE_DOC_ID)

        candidate_list = requests.get(spreadsheet_url)

        content = StringIO(unicode(candidate_list.content))
        reader = csv.DictReader(content)

        api = create_popit_api_object()

        for row in reader:

            try:
                election_data = Election.objects.get_by_slug('council-member-2015')
                ocd_division = election_data.post_id_format.format(area_id=row['Ward'])
                post_data = get_post_cached(api, ocd_division)['result']
            except (UnknownPostException, memcache.Client.MemcachedKeyCharacterError):
                election_data = Election.objects.get_by_slug('school-board-2015')
                post_data = get_post_cached(api, election_data.post_id_format)['result']

            person_id = slugify(row['Name'])

            person = get_existing_popit_person(person_id)

            if person:
                print("Found an existing person:", row['Name'])
            else:
                print("No existing person, creating a new one:", row['Name'])
                person = PopItPerson()

            person.name = row['Name']

            # TODO: Get these attributes in the spreadsheet
            # person.gender = gender
            # if birth_date:
            #     person.birth_date = str(birth_date)
            # else:
            #     person.birth_date = None

            person.email = row['Campaign Email']
            person.facebook_personal_url = row["Candidate's Personal Facebook Profile"]
            person.facebook_page_url = row['Campaign Facebook Page']


            person.twitter_username = row['Campaign Twitter']\
                                          .replace('N', '')\
                                          .replace('N/A', '')\
                                          .replace('http://twitter.com/', '')\
                                          .replace('https://twitter.com/', '')

            person.linkedin_url = row['LinkedIn']
            person.homepage_url = row['Campaign Website\n']

            standing_in_election = {
                'post_id': post_data['id'],
                'name': shorten_post_label(post_data['label']),
            }
            if 'area' in post_data:
                standing_in_election['mapit_url'] = post_data['area']['identifier']
            person.standing_in = {
                election_data.slug: standing_in_election
            }

            if 'dfl' in row['Party'].lower():
                party_id = 'party:101'
            elif 'green' in row['Party'].lower():
                party_id = 'party:201'
            elif 'independence' in row['Party'].lower():
                party_id = 'party:301'
            else:
                party_id = 'party:401'


            party_name = PARTY_DATA.party_id_to_name[party_id]

            person.party_memberships = {
                election_data.slug: {
                    'id': party_id,
                    'name': party_name,
                }
            }

            person.set_identifier('import-id', person_id)
            change_metadata = get_change_metadata(
                None,
                'Imported candidate from Google Spreadsheet',
            )

            person.record_version(change_metadata)
            try:
                person.save_to_popit(api)

                # TODO: Get candidate Images
                # if image_url:
                #     enqueue_image(person, user, image_url)
            except HttpClientError as hce:
                print "Got an HttpClientError:", hce.content
                raise
Example #18
0
 def form_valid(self, form):
     wmc = get_wmc_from_postcode(form.cleaned_data['postcode'])
     post_data = get_post_cached(self.api, wmc)['result']
     return get_redirect_to_post(get_current_election(), post_data)
Example #19
0
 def form_valid(self, form):
     post_id = form.cleaned_data['constituency']
     post_data = get_post_cached(self.api, post_id)['result']
     return get_redirect_to_post(get_current_election(), post_data)
 def form_valid(self, form):
     wmc = get_wmc_from_postcode(form.cleaned_data["postcode"])
     post_data = get_post_cached(self.api, wmc)["result"]
     return get_redirect_to_post(get_current_election(), post_data)
 def form_valid(self, form):
     post_id = form.cleaned_data["constituency"]
     post_data = get_post_cached(self.api, post_id)["result"]
     return get_redirect_to_post(get_current_election(), post_data)
Example #22
0
 def get_context_data(self, **kwargs):
     context = super(CreateDocumentView, self).get_context_data(**kwargs)
     api = create_popit_api_object()
     post_data = get_post_cached(api, self.kwargs['post_id'])['result']
     context['post_label'] = post_data['label']
     return context