def voter_ballot_items_retrieve_for_one_election_for_api( voter_device_id, voter_id, google_civic_election_id): """ :param voter_device_id: :param voter_id: :param google_civic_election_id: This variable was passed in explicitly so we can get the ballot items related to that election. :return: """ ballot_item_list_manager = BallotItemListManager() ballot_item_list = [] ballot_items_to_display = [] try: results = ballot_item_list_manager.retrieve_all_ballot_items_for_voter( voter_id, google_civic_election_id) success = results['success'] status = results['status'] ballot_item_list = results['ballot_item_list'] except Exception as e: status = 'FAILED voter_ballot_items_retrieve. ' \ '{error} [type: {error_type}]'.format(error=e, error_type=type(e)) handle_exception(e, logger=logger, exception_message=status) success = False if success: for ballot_item in ballot_item_list: if ballot_item.contest_office_we_vote_id: kind_of_ballot_item = OFFICE ballot_item_id = ballot_item.contest_office_id we_vote_id = ballot_item.contest_office_we_vote_id try: candidate_list_object = CandidateCampaignListManager() results = candidate_list_object.retrieve_all_candidates_for_office( ballot_item_id, we_vote_id) candidates_to_display = [] if results['candidate_list_found']: candidate_list = results['candidate_list'] for candidate in candidate_list: # This should match values returned in candidates_retrieve_for_api one_candidate = { 'id': candidate.id, 'we_vote_id': candidate.we_vote_id, 'ballot_item_display_name': candidate.display_candidate_name(), 'candidate_photo_url': candidate.candidate_photo_url(), 'party': candidate.political_party_display(), 'order_on_ballot': candidate.order_on_ballot, 'kind_of_ballot_item': CANDIDATE, 'twitter_handle': candidate.candidate_twitter_handle, 'twitter_description': candidate.twitter_description, 'twitter_followers_count': candidate.twitter_followers_count, } candidates_to_display.append(one_candidate.copy()) except Exception as e: # status = 'FAILED candidates_retrieve. ' \ # '{error} [type: {error_type}]'.format(error=e.message, error_type=type(e)) candidates_to_display = [] one_ballot_item = { 'ballot_item_display_name': ballot_item.ballot_item_display_name, 'google_civic_election_id': ballot_item.google_civic_election_id, 'google_ballot_placement': ballot_item.google_ballot_placement, 'local_ballot_order': ballot_item.local_ballot_order, 'kind_of_ballot_item': kind_of_ballot_item, 'id': ballot_item_id, 'we_vote_id': we_vote_id, 'candidate_list': candidates_to_display, } ballot_items_to_display.append(one_ballot_item.copy()) elif ballot_item.contest_measure_we_vote_id: kind_of_ballot_item = MEASURE ballot_item_id = ballot_item.contest_measure_id we_vote_id = ballot_item.contest_measure_we_vote_id one_ballot_item = { 'ballot_item_display_name': ballot_item.ballot_item_display_name, 'google_civic_election_id': ballot_item.google_civic_election_id, 'google_ballot_placement': ballot_item.google_ballot_placement, 'local_ballot_order': ballot_item.local_ballot_order, 'measure_subtitle': ballot_item.measure_subtitle, 'kind_of_ballot_item': kind_of_ballot_item, 'id': ballot_item_id, 'we_vote_id': we_vote_id, } ballot_items_to_display.append(one_ballot_item.copy()) results = { 'status': 'VOTER_BALLOT_ITEMS_RETRIEVED', 'success': True, 'voter_device_id': voter_device_id, 'ballot_item_list': ballot_items_to_display, 'google_civic_election_id': google_civic_election_id, } else: results = { 'status': status, 'success': False, 'voter_device_id': voter_device_id, 'ballot_item_list': [], 'google_civic_election_id': google_civic_election_id, } return results
def election_migration_view(request): authority_required = {'admin'} # admin, verified_volunteer if not voter_has_authority(request, authority_required): return redirect_to_sign_in_page(request, authority_required) messages_on_stage = get_messages(request) election_manager = ElectionManager() we_vote_election = Election() office_list_manager = ContestOfficeListManager() candidate_list_manager = CandidateCampaignListManager() position_list_manager = PositionListManager() we_vote_election_office_list = [] google_civic_election_office_list = [] results = election_manager.retrieve_we_vote_elections() we_vote_election_list = results['election_list'] state_code_list = [] for election in we_vote_election_list: if election.state_code not in state_code_list: state_code_list.append(election.state_code) google_civic_election = Election() results = election_manager.retrieve_google_civic_elections_in_state_list(state_code_list) google_civic_election_list = results['election_list'] we_vote_election_id = convert_to_int(request.GET.get('we_vote_election_id', 0)) if not positive_value_exists(we_vote_election_id): we_vote_election_id = convert_to_int(request.POST.get('we_vote_election_id', 0)) if positive_value_exists(we_vote_election_id): results = election_manager.retrieve_election(we_vote_election_id) if results['election_found']: we_vote_election = results['election'] return_list_of_objects = True results = office_list_manager.retrieve_all_offices_for_upcoming_election(we_vote_election_id, return_list_of_objects) if results['office_list_found']: we_vote_election_office_list = results['office_list_objects'] # Go through each office and attach a list of candidates under this office we_vote_election_office_list_new = [] for one_office in we_vote_election_office_list: candidate_results = candidate_list_manager.retrieve_all_candidates_for_office(0, one_office.we_vote_id) if candidate_results['candidate_list_found']: candidate_list = candidate_results['candidate_list'] new_candidate_list = [] # Go through candidate_list and find the number of positions saved for each candidate for candidate in candidate_list: retrieve_public_positions = True # The alternate is positions for friends-only position_list = position_list_manager.retrieve_all_positions_for_candidate_campaign( retrieve_public_positions, 0, candidate.we_vote_id) candidate.position_count = len(position_list) # This is wasteful (instead of using count), but ok # Now find the candidates from the Google Civic Election that we might want to transfer data to new_candidate_list.append(candidate) one_office.candidate_list = new_candidate_list else: one_office.candidate_list = [] we_vote_election_office_list_new.append(one_office) google_civic_election_id = convert_to_int(request.GET.get('google_civic_election_id', 0)) if not positive_value_exists(google_civic_election_id): google_civic_election_id = convert_to_int(request.POST.get('google_civic_election_id', 0)) if positive_value_exists(google_civic_election_id): results = election_manager.retrieve_election(google_civic_election_id) if results['election_found']: google_civic_election = results['election'] return_list_of_objects = True results = office_list_manager.retrieve_all_offices_for_upcoming_election(google_civic_election_id, return_list_of_objects) if results['office_list_found']: google_civic_election_office_list = results['office_list_objects'] # We want to transfer the transfer_array = {} transfer_array['wv01off1461'] = "wv02off269" template_values = { 'messages_on_stage': messages_on_stage, 'we_vote_election': we_vote_election, 'we_vote_election_id': we_vote_election_id, 'we_vote_election_list': we_vote_election_list, 'we_vote_election_office_list': we_vote_election_office_list_new, 'google_civic_election': google_civic_election, 'google_civic_election_id': google_civic_election_id, 'google_civic_election_list': google_civic_election_list, 'google_civic_election_office_list': google_civic_election_office_list, } return render(request, 'election/election_migration.html', template_values)
def voter_ballot_items_retrieve_for_one_election_for_api(voter_device_id, voter_id, google_civic_election_id): """ :param voter_device_id: :param voter_id: :param google_civic_election_id: This variable either was stored in a cookie, or passed in explicitly so we can get the ballot items related to that election. :return: """ ballot_item_list_manager = BallotItemListManager() ballot_item_list = [] ballot_items_to_display = [] try: results = ballot_item_list_manager.retrieve_all_ballot_items_for_voter(voter_id, google_civic_election_id) success = results['success'] status = results['status'] ballot_item_list = results['ballot_item_list'] except Exception as e: status = 'FAILED voter_ballot_items_retrieve. ' \ '{error} [type: {error_type}]'.format(error=e, error_type=type(e)) handle_exception(e, logger=logger, exception_message=status) success = False if success: for ballot_item in ballot_item_list: if ballot_item.contest_office_we_vote_id: kind_of_ballot_item = OFFICE ballot_item_id = ballot_item.contest_office_id we_vote_id = ballot_item.contest_office_we_vote_id try: candidate_list_object = CandidateCampaignListManager() results = candidate_list_object.retrieve_all_candidates_for_office(ballot_item_id, we_vote_id) candidates_to_display = [] if results['candidate_list_found']: candidate_list = results['candidate_list'] for candidate in candidate_list: # This should match values returned in candidates_retrieve_for_api one_candidate = { 'id': candidate.id, 'we_vote_id': candidate.we_vote_id, 'ballot_item_display_name': candidate.display_candidate_name(), 'candidate_photo_url': candidate.candidate_photo_url(), 'party': candidate.party_display(), 'order_on_ballot': candidate.order_on_ballot, 'kind_of_ballot_item': CANDIDATE, 'twitter_handle': candidate.candidate_twitter_handle, 'twitter_description': candidate.twitter_description, 'twitter_followers_count': candidate.twitter_followers_count, } candidates_to_display.append(one_candidate.copy()) except Exception as e: # status = 'FAILED candidates_retrieve. ' \ # '{error} [type: {error_type}]'.format(error=e.message, error_type=type(e)) candidates_to_display = [] one_ballot_item = { 'ballot_item_display_name': ballot_item.ballot_item_display_name, 'google_civic_election_id': ballot_item.google_civic_election_id, 'google_ballot_placement': ballot_item.google_ballot_placement, 'local_ballot_order': ballot_item.local_ballot_order, 'kind_of_ballot_item': kind_of_ballot_item, 'id': ballot_item_id, 'we_vote_id': we_vote_id, 'candidate_list': candidates_to_display, } ballot_items_to_display.append(one_ballot_item.copy()) elif ballot_item.contest_measure_we_vote_id: kind_of_ballot_item = MEASURE ballot_item_id = ballot_item.contest_measure_id we_vote_id = ballot_item.contest_measure_we_vote_id one_ballot_item = { 'ballot_item_display_name': ballot_item.ballot_item_display_name, 'google_civic_election_id': ballot_item.google_civic_election_id, 'google_ballot_placement': ballot_item.google_ballot_placement, 'local_ballot_order': ballot_item.local_ballot_order, 'measure_subtitle': ballot_item.measure_subtitle, 'kind_of_ballot_item': kind_of_ballot_item, 'id': ballot_item_id, 'we_vote_id': we_vote_id, } ballot_items_to_display.append(one_ballot_item.copy()) results = { 'status': 'VOTER_BALLOT_ITEMS_RETRIEVED', 'success': True, 'voter_device_id': voter_device_id, 'ballot_item_list': ballot_items_to_display, 'google_civic_election_id': google_civic_election_id, } else: results = { 'status': status, 'success': False, 'voter_device_id': voter_device_id, 'ballot_item_list': [], 'google_civic_election_id': google_civic_election_id, } return results
def election_migration_view(request): authority_required = {'admin'} # admin, verified_volunteer if not voter_has_authority(request, authority_required): return redirect_to_sign_in_page(request, authority_required) messages_on_stage = get_messages(request) election_manager = ElectionManager() we_vote_election = Election() office_list_manager = ContestOfficeListManager() candidate_list_manager = CandidateCampaignListManager() position_list_manager = PositionListManager() we_vote_election_office_list = [] google_civic_election_office_list = [] results = election_manager.retrieve_we_vote_elections() we_vote_election_list = results['election_list'] state_code_list = [] for election in we_vote_election_list: if election.state_code not in state_code_list: state_code_list.append(election.state_code) google_civic_election = Election() results = election_manager.retrieve_google_civic_elections_in_state_list( state_code_list) google_civic_election_list = results['election_list'] we_vote_election_id = convert_to_int( request.GET.get('we_vote_election_id', 0)) if not positive_value_exists(we_vote_election_id): we_vote_election_id = convert_to_int( request.POST.get('we_vote_election_id', 0)) if positive_value_exists(we_vote_election_id): results = election_manager.retrieve_election(we_vote_election_id) if results['election_found']: we_vote_election = results['election'] return_list_of_objects = True results = office_list_manager.retrieve_all_offices_for_upcoming_election( we_vote_election_id, return_list_of_objects) if results['office_list_found']: we_vote_election_office_list = results['office_list_objects'] # Go through each office and attach a list of candidates under this office we_vote_election_office_list_new = [] for one_office in we_vote_election_office_list: candidate_results = candidate_list_manager.retrieve_all_candidates_for_office( 0, one_office.we_vote_id) if candidate_results['candidate_list_found']: candidate_list = candidate_results['candidate_list'] new_candidate_list = [] # Go through candidate_list and find the number of positions saved for each candidate for candidate in candidate_list: retrieve_public_positions = True # The alternate is positions for friends-only position_list = position_list_manager.retrieve_all_positions_for_candidate_campaign( retrieve_public_positions, 0, candidate.we_vote_id) candidate.position_count = len( position_list ) # This is wasteful (instead of using count), but ok # Now find the candidates from the Google Civic Election that we might want to transfer data to new_candidate_list.append(candidate) one_office.candidate_list = new_candidate_list else: one_office.candidate_list = [] we_vote_election_office_list_new.append(one_office) google_civic_election_id = convert_to_int( request.GET.get('google_civic_election_id', 0)) if not positive_value_exists(google_civic_election_id): google_civic_election_id = convert_to_int( request.POST.get('google_civic_election_id', 0)) if positive_value_exists(google_civic_election_id): results = election_manager.retrieve_election(google_civic_election_id) if results['election_found']: google_civic_election = results['election'] return_list_of_objects = True results = office_list_manager.retrieve_all_offices_for_upcoming_election( google_civic_election_id, return_list_of_objects) if results['office_list_found']: google_civic_election_office_list = results[ 'office_list_objects'] # We want to transfer the transfer_array = {} transfer_array['wv01off1461'] = "wv02off269" template_values = { 'messages_on_stage': messages_on_stage, 'we_vote_election': we_vote_election, 'we_vote_election_id': we_vote_election_id, 'we_vote_election_list': we_vote_election_list, 'we_vote_election_office_list': we_vote_election_office_list_new, 'google_civic_election': google_civic_election, 'google_civic_election_id': google_civic_election_id, 'google_civic_election_list': google_civic_election_list, 'google_civic_election_office_list': google_civic_election_office_list, } return render(request, 'election/election_migration.html', template_values)