def candidate_delete_process_view(request): """ Delete this candidate :param request: :return: """ authority_required = {'verified_volunteer'} # admin, verified_volunteer if not voter_has_authority(request, authority_required): return redirect_to_sign_in_page(request, authority_required) candidate_id = convert_to_int(request.GET.get('candidate_id', 0)) google_civic_election_id = request.GET.get('google_civic_election_id', 0) # Retrieve this candidate candidate_on_stage_found = False candidate_on_stage = CandidateCampaign() if positive_value_exists(candidate_id): try: candidate_query = CandidateCampaign.objects.filter(id=candidate_id) if len(candidate_query): candidate_on_stage = candidate_query[0] candidate_on_stage_found = True except Exception as e: messages.add_message(request, messages.ERROR, 'Could not find candidate -- exception.') if not candidate_on_stage_found: messages.add_message(request, messages.ERROR, 'Could not find candidate.') return HttpResponseRedirect(reverse('candidate:candidate_list', args=()) + "?google_civic_election_id=" + str(google_civic_election_id)) # Are there any positions attached to this candidate that should be moved to another # instance of this candidate? position_list_manager = PositionListManager() 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, candidate_id) if positive_value_exists(len(position_list)): positions_found_for_this_candidate = True else: positions_found_for_this_candidate = False try: if not positions_found_for_this_candidate: # Delete the candidate candidate_on_stage.delete() messages.add_message(request, messages.INFO, 'Candidate Campaign deleted.') else: messages.add_message(request, messages.ERROR, 'Could not delete -- ' 'positions still attached to this candidate.') return HttpResponseRedirect(reverse('candidate:candidate_edit', args=(candidate_id,))) except Exception as e: messages.add_message(request, messages.ERROR, 'Could not delete candidate -- exception.') return HttpResponseRedirect(reverse('candidate:candidate_edit', args=(candidate_id,))) return HttpResponseRedirect(reverse('candidate:candidate_list', args=()) + "?google_civic_election_id=" + str(google_civic_election_id))
def positions_count_for_candidate_campaign(voter_id, candidate_id, stance_we_are_looking_for, show_positions_this_voter_follows=True): """ We want to return a JSON file with the number of orgs, friends and public figures the voter follows who support this particular candidate's campaign """ # This implementation is built to make only two database calls. All other calculations are done here in the # application layer position_list_manager = PositionListManager() candidate_we_vote_id = '' all_positions_list_for_candidate_campaign = \ position_list_manager.retrieve_all_positions_for_candidate_campaign( candidate_id, candidate_we_vote_id, stance_we_are_looking_for) follow_organization_list_manager = FollowOrganizationList() organizations_followed_by_voter = \ follow_organization_list_manager.retrieve_follow_organization_by_voter_id_simple_id_array(voter_id) if show_positions_this_voter_follows: positions_followed = position_list_manager.calculate_positions_followed_by_voter( voter_id, all_positions_list_for_candidate_campaign, organizations_followed_by_voter) positions_followed_count = len(positions_followed) json_data = { 'status': 'SUCCESSFUL_RETRIEVE_OF_POSITIONS_FOLLOWED_RE_CANDIDATE', 'success': True, 'count': positions_followed_count, } results = { 'json_data': json_data, } return results else: positions_not_followed = position_list_manager.calculate_positions_not_followed_by_voter( all_positions_list_for_candidate_campaign, organizations_followed_by_voter) positions_not_followed_count = len(positions_not_followed) json_data = { 'status': 'SUCCESSFUL_RETRIEVE_OF_POSITIONS_NOT_FOLLOWED_CC', 'success': True, 'count': positions_not_followed_count, } results = { 'json_data': json_data, } return results
def positions_count_for_candidate_campaign( voter_id, candidate_id, candidate_we_vote_id, stance_we_are_looking_for, show_positions_this_voter_follows=True): """ We want to return a JSON file with the number of orgs, friends and public figures the voter follows who support this particular candidate's campaign """ # This implementation is built to make limited database calls. We do as many calculations as we can here in the # application layer position_list_manager = PositionListManager() all_positions_list_for_candidate_campaign = \ position_list_manager.retrieve_all_positions_for_candidate_campaign( candidate_id, candidate_we_vote_id, stance_we_are_looking_for) follow_organization_list_manager = FollowOrganizationList() organizations_followed_by_voter = \ follow_organization_list_manager.retrieve_follow_organization_by_voter_id_simple_id_array(voter_id) # Since we can take in either candidate_id or candidate_we_vote_id, we need to retrieve the candidate object # so we make sure we have both of these values to return if positive_value_exists(candidate_id): candidate_campaign_manager = CandidateCampaignManager() results = candidate_campaign_manager.retrieve_candidate_campaign_from_id( candidate_id) if results['candidate_campaign_found']: candidate_campaign = results['candidate_campaign'] candidate_we_vote_id = candidate_campaign.we_vote_id elif positive_value_exists(candidate_we_vote_id): candidate_campaign_manager = CandidateCampaignManager() results = candidate_campaign_manager.retrieve_candidate_campaign_from_we_vote_id( candidate_we_vote_id) if results['candidate_campaign_found']: candidate_campaign = results['candidate_campaign'] candidate_id = candidate_campaign.id if show_positions_this_voter_follows: positions_followed = position_list_manager.calculate_positions_followed_by_voter( voter_id, all_positions_list_for_candidate_campaign, organizations_followed_by_voter) positions_followed_count = len(positions_followed) json_data = { 'status': 'SUCCESSFUL_RETRIEVE_OF_POSITIONS_FOLLOWED_RE_CANDIDATE', 'success': True, 'count': positions_followed_count, 'ballot_item_id': convert_to_int(candidate_id), 'ballot_item_we_vote_id': candidate_we_vote_id, 'kind_of_ballot_item': CANDIDATE, } results = { 'json_data': json_data, } return results else: positions_not_followed = position_list_manager.calculate_positions_not_followed_by_voter( all_positions_list_for_candidate_campaign, organizations_followed_by_voter) positions_not_followed_count = len(positions_not_followed) json_data = { 'status': 'SUCCESSFUL_RETRIEVE_OF_POSITIONS_NOT_FOLLOWED_CC', 'success': True, 'count': positions_not_followed_count, 'ballot_item_id': convert_to_int(candidate_id), 'ballot_item_we_vote_id': candidate_we_vote_id, 'kind_of_ballot_item': CANDIDATE, } results = { 'json_data': json_data, } return results
def positions_count_for_all_ballot_items_for_api( voter_device_id, google_civic_election_id=0, show_positions_this_voter_follows=True): """ We want to return a JSON file with the a list of the support and oppose counts from the orgs, friends and public figures the voter follows """ # Get voter_id from the voter_device_id so we can know whose stars to retrieve results = is_voter_device_id_valid(voter_device_id) if not results['success']: json_data = { 'status': "VALID_VOTER_DEVICE_ID_MISSING-COUNT_FOR_ALL_BALLOT_ITEMS", 'success': False, 'google_civic_election_id': google_civic_election_id, 'ballot_item_list': [], } return json_data voter_id = fetch_voter_id_from_voter_device_link(voter_device_id) if not positive_value_exists(voter_id): json_data = { 'status': "VALID_VOTER_ID_MISSING-COUNT_FOR_ALL_BALLOT_ITEMS", 'success': False, 'google_civic_election_id': google_civic_election_id, 'ballot_item_list': [], } return json_data if not positive_value_exists(google_civic_election_id): # We must have an election id to proceed -- otherwise we don't know what ballot items to work with voter_device_link_manager = VoterDeviceLinkManager() voter_device_link_results = voter_device_link_manager.retrieve_voter_device_link( voter_device_id) if voter_device_link_results['voter_device_link_found']: voter_device_link = voter_device_link_results['voter_device_link'] if positive_value_exists( voter_device_link.google_civic_election_id): google_civic_election_id = voter_device_link.google_civic_election_id if not positive_value_exists(google_civic_election_id): voter_address_manager = VoterAddressManager() voter_address_results = voter_address_manager.retrieve_address( 0, voter_id) if voter_address_results['voter_address_found']: voter_address = voter_address_results['voter_address'] if positive_value_exists( voter_address.google_civic_election_id): google_civic_election_id = voter_address.google_civic_election_id google_civic_election_id = convert_to_int(google_civic_election_id) if not positive_value_exists(google_civic_election_id): json_data = { 'status': "GOOGLE_CIVIC_ELECTION_ID_MISSING-COUNT_FOR_ALL_BALLOT_ITEMS", 'success': False, 'google_civic_election_id': google_civic_election_id, 'ballot_item_list': [], } return json_data position_list_manager = PositionListManager() candidate_list_object = CandidateCampaignList() follow_organization_list_manager = FollowOrganizationList() organizations_followed_by_voter = \ follow_organization_list_manager.retrieve_follow_organization_by_voter_id_simple_id_array(voter_id) # Get a list of all candidates and measures from this election (in the active election) ballot_item_results = voter_ballot_items_retrieve_for_one_election_for_api( voter_device_id, voter_id, google_civic_election_id) ballot_item_list = ballot_item_results['ballot_item_list'] # The list where we capture results ballot_item_list_results = [] # ballot_item_list is populated with contest_office and contest_measure entries for one_ballot_item in ballot_item_list: # Retrieve all positions for each ballot item if one_ballot_item['kind_of_ballot_item'] == OFFICE: results = candidate_list_object.retrieve_all_candidates_for_office( 0, one_ballot_item['we_vote_id']) success = results['success'] candidate_list = results['candidate_list'] if success: for candidate in candidate_list: # Loop through all candidates under this office support_positions_list_for_one_ballot_item = \ position_list_manager.retrieve_all_positions_for_candidate_campaign( 0, candidate.we_vote_id, SUPPORT) oppose_positions_list_for_one_ballot_item = \ position_list_manager.retrieve_all_positions_for_candidate_campaign( 0, candidate.we_vote_id, OPPOSE) finalize_results = finalize_support_and_oppose_positions_count( voter_id, show_positions_this_voter_follows, organizations_followed_by_voter, support_positions_list_for_one_ballot_item, oppose_positions_list_for_one_ballot_item) one_ballot_item_results = { 'ballot_item_we_vote_id': candidate.we_vote_id, 'support_count': finalize_results['support_positions_count'], 'oppose_count': finalize_results['oppose_positions_count'], } ballot_item_list_results.append(one_ballot_item_results) elif one_ballot_item['kind_of_ballot_item'] == MEASURE: support_positions_list_for_one_ballot_item = \ position_list_manager.retrieve_all_positions_for_contest_measure(0, one_ballot_item['we_vote_id'], SUPPORT) oppose_positions_list_for_one_ballot_item = \ position_list_manager.retrieve_all_positions_for_contest_measure(0, one_ballot_item['we_vote_id'], OPPOSE) finalize_results = finalize_support_and_oppose_positions_count( voter_id, show_positions_this_voter_follows, organizations_followed_by_voter, support_positions_list_for_one_ballot_item, oppose_positions_list_for_one_ballot_item) one_ballot_item_results = { 'ballot_item_we_vote_id': one_ballot_item['we_vote_id'], 'support_count': finalize_results['support_positions_count'], 'oppose_count': finalize_results['oppose_positions_count'], } ballot_item_list_results.append(one_ballot_item_results) else: # Skip the rest of this loop continue json_data = { 'success': True, 'status': "POSITIONS_COUNT_FOR_ALL_BALLOT_ITEMS", 'google_civic_election_id': google_civic_election_id, 'ballot_item_list': ballot_item_list_results, } return json_data
def positions_count_for_candidate_campaign(voter_id, candidate_id, candidate_we_vote_id, stance_we_are_looking_for, show_positions_this_voter_follows=True): """ We want to return a JSON file with the number of orgs, friends and public figures the voter follows who support this particular candidate's campaign """ # This implementation is built to make limited database calls. We do as many calculations as we can here in the # application layer position_list_manager = PositionListManager() all_positions_list_for_candidate_campaign = \ position_list_manager.retrieve_all_positions_for_candidate_campaign( candidate_id, candidate_we_vote_id, stance_we_are_looking_for) follow_organization_list_manager = FollowOrganizationList() organizations_followed_by_voter = \ follow_organization_list_manager.retrieve_follow_organization_by_voter_id_simple_id_array(voter_id) # Since we can take in either candidate_id or candidate_we_vote_id, we need to retrieve the candidate object # so we make sure we have both of these values to return if positive_value_exists(candidate_id): candidate_campaign_manager = CandidateCampaignManager() results = candidate_campaign_manager.retrieve_candidate_campaign_from_id(candidate_id) if results['candidate_campaign_found']: candidate_campaign = results['candidate_campaign'] candidate_we_vote_id = candidate_campaign.we_vote_id elif positive_value_exists(candidate_we_vote_id): candidate_campaign_manager = CandidateCampaignManager() results = candidate_campaign_manager.retrieve_candidate_campaign_from_we_vote_id(candidate_we_vote_id) if results['candidate_campaign_found']: candidate_campaign = results['candidate_campaign'] candidate_id = candidate_campaign.id if show_positions_this_voter_follows: positions_followed = position_list_manager.calculate_positions_followed_by_voter( voter_id, all_positions_list_for_candidate_campaign, organizations_followed_by_voter) positions_followed_count = len(positions_followed) json_data = { 'status': 'SUCCESSFUL_RETRIEVE_OF_POSITIONS_FOLLOWED_RE_CANDIDATE', 'success': True, 'count': positions_followed_count, 'ballot_item_id': convert_to_int(candidate_id), 'ballot_item_we_vote_id': candidate_we_vote_id, 'kind_of_ballot_item': CANDIDATE, } results = { 'json_data': json_data, } return results else: positions_not_followed = position_list_manager.calculate_positions_not_followed_by_voter( all_positions_list_for_candidate_campaign, organizations_followed_by_voter) positions_not_followed_count = len(positions_not_followed) json_data = { 'status': 'SUCCESSFUL_RETRIEVE_OF_POSITIONS_NOT_FOLLOWED_CC', 'success': True, 'count': positions_not_followed_count, 'ballot_item_id': convert_to_int(candidate_id), 'ballot_item_we_vote_id': candidate_we_vote_id, 'kind_of_ballot_item': CANDIDATE, } results = { 'json_data': json_data, } return results
def positions_count_for_all_ballot_items_for_api(voter_device_id, google_civic_election_id=0, show_positions_this_voter_follows=True): """ We want to return a JSON file with the a list of the support and oppose counts from the orgs, friends and public figures the voter follows """ # Get voter_id from the voter_device_id so we can know whose stars to retrieve results = is_voter_device_id_valid(voter_device_id) if not results['success']: json_data = { 'status': "VALID_VOTER_DEVICE_ID_MISSING-COUNT_FOR_ALL_BALLOT_ITEMS", 'success': False, 'google_civic_election_id': google_civic_election_id, 'ballot_item_list': [], } return json_data voter_id = fetch_voter_id_from_voter_device_link(voter_device_id) if not positive_value_exists(voter_id): json_data = { 'status': "VALID_VOTER_ID_MISSING-COUNT_FOR_ALL_BALLOT_ITEMS", 'success': False, 'google_civic_election_id': google_civic_election_id, 'ballot_item_list': [], } return json_data if not positive_value_exists(google_civic_election_id): # We must have an election id to proceed -- otherwise we don't know what ballot items to work with voter_device_link_manager = VoterDeviceLinkManager() voter_device_link_results = voter_device_link_manager.retrieve_voter_device_link(voter_device_id) if voter_device_link_results['voter_device_link_found']: voter_device_link = voter_device_link_results['voter_device_link'] if positive_value_exists(voter_device_link.google_civic_election_id): google_civic_election_id = voter_device_link.google_civic_election_id if not positive_value_exists(google_civic_election_id): voter_address_manager = VoterAddressManager() voter_address_results = voter_address_manager.retrieve_address(0, voter_id) if voter_address_results['voter_address_found']: voter_address = voter_address_results['voter_address'] if positive_value_exists(voter_address.google_civic_election_id): google_civic_election_id = voter_address.google_civic_election_id google_civic_election_id = convert_to_int(google_civic_election_id) if not positive_value_exists(google_civic_election_id): json_data = { 'status': "GOOGLE_CIVIC_ELECTION_ID_MISSING-COUNT_FOR_ALL_BALLOT_ITEMS", 'success': False, 'google_civic_election_id': google_civic_election_id, 'ballot_item_list': [], } return json_data position_list_manager = PositionListManager() candidate_list_object = CandidateCampaignList() follow_organization_list_manager = FollowOrganizationList() organizations_followed_by_voter = \ follow_organization_list_manager.retrieve_follow_organization_by_voter_id_simple_id_array(voter_id) # Get a list of all candidates and measures from this election (in the active election) ballot_item_results = voter_ballot_items_retrieve_for_one_election_for_api(voter_device_id, voter_id, google_civic_election_id) ballot_item_list = ballot_item_results['ballot_item_list'] # The list where we capture results ballot_item_list_results = [] # ballot_item_list is populated with contest_office and contest_measure entries for one_ballot_item in ballot_item_list: # Retrieve all positions for each ballot item if one_ballot_item['kind_of_ballot_item'] == OFFICE: results = candidate_list_object.retrieve_all_candidates_for_office(0, one_ballot_item['we_vote_id']) success = results['success'] candidate_list = results['candidate_list'] if success: for candidate in candidate_list: # Loop through all candidates under this office support_positions_list_for_one_ballot_item = \ position_list_manager.retrieve_all_positions_for_candidate_campaign( 0, candidate.we_vote_id, SUPPORT) oppose_positions_list_for_one_ballot_item = \ position_list_manager.retrieve_all_positions_for_candidate_campaign( 0, candidate.we_vote_id, OPPOSE) finalize_results = finalize_support_and_oppose_positions_count( voter_id, show_positions_this_voter_follows, organizations_followed_by_voter, support_positions_list_for_one_ballot_item, oppose_positions_list_for_one_ballot_item) one_ballot_item_results = { 'ballot_item_we_vote_id': candidate.we_vote_id, 'support_count': finalize_results['support_positions_count'], 'oppose_count': finalize_results['oppose_positions_count'], } ballot_item_list_results.append(one_ballot_item_results) elif one_ballot_item['kind_of_ballot_item'] == MEASURE: support_positions_list_for_one_ballot_item = \ position_list_manager.retrieve_all_positions_for_contest_measure(0, one_ballot_item['we_vote_id'], SUPPORT) oppose_positions_list_for_one_ballot_item = \ position_list_manager.retrieve_all_positions_for_contest_measure(0, one_ballot_item['we_vote_id'], OPPOSE) finalize_results = finalize_support_and_oppose_positions_count( voter_id, show_positions_this_voter_follows, organizations_followed_by_voter, support_positions_list_for_one_ballot_item, oppose_positions_list_for_one_ballot_item) one_ballot_item_results = { 'ballot_item_we_vote_id': one_ballot_item['we_vote_id'], 'support_count': finalize_results['support_positions_count'], 'oppose_count': finalize_results['oppose_positions_count'], } ballot_item_list_results.append(one_ballot_item_results) else: # Skip the rest of this loop continue json_data = { 'success': True, 'status': "POSITIONS_COUNT_FOR_ALL_BALLOT_ITEMS", 'google_civic_election_id': google_civic_election_id, 'ballot_item_list': ballot_item_list_results, } return json_data
def retrieve_voter_guides_to_follow_by_ballot_item(voter_id, kind_of_ballot_item, ballot_item_we_vote_id): voter_guide_list_found = False position_list_manager = PositionListManager() if (kind_of_ballot_item == CANDIDATE) and positive_value_exists(ballot_item_we_vote_id): candidate_id = 0 all_positions_list = position_list_manager.retrieve_all_positions_for_candidate_campaign( candidate_id, ballot_item_we_vote_id, ANY_STANCE) elif (kind_of_ballot_item == MEASURE) and positive_value_exists(ballot_item_we_vote_id): measure_id = 0 all_positions_list = position_list_manager.retrieve_all_positions_for_contest_measure( measure_id, ballot_item_we_vote_id, ANY_STANCE) elif (kind_of_ballot_item == OFFICE) and positive_value_exists(ballot_item_we_vote_id): office_id = 0 all_positions_list = position_list_manager.retrieve_all_positions_for_contest_office( office_id, ballot_item_we_vote_id, ANY_STANCE) else: voter_guide_list = [] results = { 'success': False, 'status': "VOTER_GUIDES_BALLOT_RELATED_VARIABLES_MISSING", 'voter_guide_list_found': False, 'voter_guide_list': voter_guide_list, } return results follow_organization_list_manager = FollowOrganizationList() organizations_followed_by_voter = \ follow_organization_list_manager.retrieve_follow_organization_by_voter_id_simple_id_array(voter_id) positions_list = position_list_manager.calculate_positions_not_followed_by_voter( all_positions_list, organizations_followed_by_voter) voter_guide_list = [] # Cycle through the positions held by groups that you don't currently follow voter_guide_manager = VoterGuideManager() for one_position in positions_list: if positive_value_exists(one_position.organization_we_vote_id): if one_position.google_civic_election_id: results = voter_guide_manager.retrieve_voter_guide( voter_guide_id=0, google_civic_election_id=one_position.google_civic_election_id, vote_smart_time_span=None, organization_we_vote_id=one_position.organization_we_vote_id) else: # vote_smart_time_span results = voter_guide_manager.retrieve_voter_guide( voter_guide_id=0, google_civic_election_id=0, vote_smart_time_span=one_position.vote_smart_time_span, organization_we_vote_id=one_position.organization_we_vote_id) elif positive_value_exists(one_position.public_figure_we_vote_id): results['voter_guide_found'] = False elif positive_value_exists(one_position.voter_we_vote_id): results['voter_guide_found'] = False else: results['voter_guide_found'] = False if results['voter_guide_found']: voter_guide_list.append(results['voter_guide']) status = 'SUCCESSFUL_RETRIEVE_OF_POSITIONS_NOT_FOLLOWED' success = True if len(voter_guide_list): voter_guide_list_found = True results = { 'success': success, 'status': status, 'voter_guide_list_found': voter_guide_list_found, 'voter_guide_list': voter_guide_list, } return results
def retrieve_voter_guides_to_follow_by_ballot_item(voter_id, kind_of_ballot_item, ballot_item_we_vote_id, search_string): voter_guide_list_found = False retrieve_public_positions = True # The alternate is positions for friends-only. Since this method returns positions # to follow, we never need to return friend's positions here position_list_manager = PositionListManager() if (kind_of_ballot_item == CANDIDATE) and positive_value_exists(ballot_item_we_vote_id): candidate_id = 0 all_positions_list = position_list_manager.retrieve_all_positions_for_candidate_campaign( retrieve_public_positions, candidate_id, ballot_item_we_vote_id, ANY_STANCE) elif (kind_of_ballot_item == MEASURE) and positive_value_exists(ballot_item_we_vote_id): measure_id = 0 all_positions_list = position_list_manager.retrieve_all_positions_for_contest_measure( retrieve_public_positions, measure_id, ballot_item_we_vote_id, ANY_STANCE) elif (kind_of_ballot_item == OFFICE) and positive_value_exists(ballot_item_we_vote_id): office_id = 0 all_positions_list = position_list_manager.retrieve_all_positions_for_contest_office( office_id, ballot_item_we_vote_id, ANY_STANCE) else: voter_guide_list = [] results = { 'success': False, 'status': "VOTER_GUIDES_BALLOT_RELATED_VARIABLES_MISSING", 'search_string': search_string, 'voter_guide_list_found': False, 'voter_guide_list': voter_guide_list, } return results follow_organization_list_manager = FollowOrganizationList() organizations_followed_by_voter = \ follow_organization_list_manager.retrieve_follow_organization_by_voter_id_simple_id_array(voter_id) positions_list = position_list_manager.calculate_positions_not_followed_by_voter( all_positions_list, organizations_followed_by_voter) voter_guide_list = [] # Cycle through the positions held by groups that you don't currently follow voter_guide_manager = VoterGuideManager() for one_position in positions_list: if positive_value_exists(one_position.organization_we_vote_id): if one_position.google_civic_election_id: results = voter_guide_manager.retrieve_voter_guide( voter_guide_id=0, google_civic_election_id=one_position.google_civic_election_id, vote_smart_time_span=None, organization_we_vote_id=one_position.organization_we_vote_id) else: # vote_smart_time_span results = voter_guide_manager.retrieve_voter_guide( voter_guide_id=0, google_civic_election_id=0, vote_smart_time_span=one_position.vote_smart_time_span, organization_we_vote_id=one_position.organization_we_vote_id) elif positive_value_exists(one_position.public_figure_we_vote_id): results['voter_guide_found'] = False elif positive_value_exists(one_position.voter_we_vote_id): results['voter_guide_found'] = False else: results['voter_guide_found'] = False if results['voter_guide_found']: voter_guide = results['voter_guide'] # If we passed in search_string, make sure they are in this entry. # If they aren't, don't return voter guide if positive_value_exists(search_string): search_string = str(search_string) # Make sure search_string is a string twitter_handle = str(voter_guide.twitter_handle) display_name = str(voter_guide.display_name) if search_string.lower() in twitter_handle.lower() or search_string.lower() in display_name.lower(): voter_guide_list.append(voter_guide) else: voter_guide_list.append(voter_guide) status = 'SUCCESSFUL_RETRIEVE_OF_VOTER_GUIDES_BY_BALLOT_ITEM' success = True if len(voter_guide_list): voter_guide_list_found = True results = { 'success': success, 'status': status, 'search_string': search_string, 'voter_guide_list_found': voter_guide_list_found, 'voter_guide_list': voter_guide_list, } return results
def retrieve_voter_guides_to_follow_by_ballot_item(voter_id, kind_of_ballot_item, ballot_item_we_vote_id, search_string): voter_guide_list_found = False position_list_manager = PositionListManager() if (kind_of_ballot_item == CANDIDATE) and positive_value_exists(ballot_item_we_vote_id): candidate_id = 0 all_positions_list = position_list_manager.retrieve_all_positions_for_candidate_campaign( candidate_id, ballot_item_we_vote_id, ANY_STANCE) elif (kind_of_ballot_item == MEASURE) and positive_value_exists(ballot_item_we_vote_id): measure_id = 0 all_positions_list = position_list_manager.retrieve_all_positions_for_contest_measure( measure_id, ballot_item_we_vote_id, ANY_STANCE) elif (kind_of_ballot_item == OFFICE) and positive_value_exists(ballot_item_we_vote_id): office_id = 0 all_positions_list = position_list_manager.retrieve_all_positions_for_contest_office( office_id, ballot_item_we_vote_id, ANY_STANCE) else: voter_guide_list = [] results = { 'success': False, 'status': "VOTER_GUIDES_BALLOT_RELATED_VARIABLES_MISSING", 'search_string': search_string, 'voter_guide_list_found': False, 'voter_guide_list': voter_guide_list, } return results follow_organization_list_manager = FollowOrganizationList() organizations_followed_by_voter = \ follow_organization_list_manager.retrieve_follow_organization_by_voter_id_simple_id_array(voter_id) positions_list = position_list_manager.calculate_positions_not_followed_by_voter( all_positions_list, organizations_followed_by_voter) voter_guide_list = [] # Cycle through the positions held by groups that you don't currently follow voter_guide_manager = VoterGuideManager() for one_position in positions_list: if positive_value_exists(one_position.organization_we_vote_id): if one_position.google_civic_election_id: results = voter_guide_manager.retrieve_voter_guide( voter_guide_id=0, google_civic_election_id=one_position. google_civic_election_id, vote_smart_time_span=None, organization_we_vote_id=one_position. organization_we_vote_id) else: # vote_smart_time_span results = voter_guide_manager.retrieve_voter_guide( voter_guide_id=0, google_civic_election_id=0, vote_smart_time_span=one_position.vote_smart_time_span, organization_we_vote_id=one_position. organization_we_vote_id) elif positive_value_exists(one_position.public_figure_we_vote_id): results['voter_guide_found'] = False elif positive_value_exists(one_position.voter_we_vote_id): results['voter_guide_found'] = False else: results['voter_guide_found'] = False if results['voter_guide_found']: voter_guide = results['voter_guide'] # If we passed in search_string, make sure they are in this entry. # If they aren't, don't return voter guide if positive_value_exists(search_string): search_string = str( search_string) # Make sure search_string is a string twitter_handle = str(voter_guide.twitter_handle) display_name = str(voter_guide.display_name) if search_string.lower() in twitter_handle.lower( ) or search_string.lower() in display_name.lower(): voter_guide_list.append(voter_guide) else: voter_guide_list.append(voter_guide) status = 'SUCCESSFUL_RETRIEVE_OF_VOTER_GUIDES_BY_BALLOT_ITEM' success = True if len(voter_guide_list): voter_guide_list_found = True results = { 'success': success, 'status': status, 'search_string': search_string, 'voter_guide_list_found': voter_guide_list_found, 'voter_guide_list': voter_guide_list, } 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 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)