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
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
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
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_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
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
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
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(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
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)
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)