def transfer_candidate_twitter_handles_from_google_civic(google_civic_election_id=0): twitter_handles_transferred = 0 status = "" google_civic_election_id = convert_to_int(google_civic_election_id) candidate_list_object = CandidateCampaignList() return_list_of_objects = True results = candidate_list_object.retrieve_all_candidates_for_upcoming_election(google_civic_election_id, return_list_of_objects) status += results['status'] if results['success']: candidate_list = results['candidate_list_objects'] else: candidate_list = [] for candidate in candidate_list: if not candidate.twitter_url: continue # Only proceed if we don't already have a twitter_handle if not positive_value_exists(candidate.candidate_twitter_handle): candidate.candidate_twitter_handle = candidate.twitter_url.replace("https://twitter.com/", "") candidate.save() twitter_handles_transferred += 1 # ###################################### # We refresh the Twitter information in another function status += " CANDIDATE_TWITTER_HANDLES_TRANSFERRED" results = { 'success': True, 'status': status, 'twitter_handles_transferred': twitter_handles_transferred, } return results
def refresh_twitter_candidate_details_for_election(google_civic_election_id): twitter_handles_added = 0 profiles_refreshed_with_twitter_data = 0 google_civic_election_id = convert_to_int(google_civic_election_id) candidate_list_manager = CandidateCampaignList() return_list_of_objects = True candidates_results = candidate_list_manager.retrieve_all_candidates_for_upcoming_election( google_civic_election_id, return_list_of_objects) if candidates_results['candidate_list_found']: candidate_list = candidates_results['candidate_list_objects'] for candidate in candidate_list: # Extract twitter_handle from google_civic_election information if positive_value_exists(candidate.twitter_url) \ and not positive_value_exists(candidate.candidate_twitter_handle): # If we got a twitter_url from Google Civic, and we haven't already stored a twitter handle, move it candidate.candidate_twitter_handle = candidate.twitter_url.replace("https://twitter.com/", "") candidate.save() twitter_handles_added += 1 if positive_value_exists(candidate.candidate_twitter_handle): refresh_twitter_candidate_details(candidate) profiles_refreshed_with_twitter_data += 1 status = "CANDIDATE_SOCIAL_MEDIA_RETRIEVED" results = { 'success': True, 'status': status, 'twitter_handles_added': twitter_handles_added, 'profiles_refreshed_with_twitter_data': profiles_refreshed_with_twitter_data, } return results
def scrape_and_save_social_media_for_candidates_in_one_election( google_civic_election_id=0): facebook_pages_found = 0 twitter_handles_found = 0 force_retrieve = False status = "" google_civic_election_id = convert_to_int(google_civic_election_id) candidate_manager = CandidateCampaignManager() candidate_list_manager = CandidateCampaignList() return_list_of_objects = True results = candidate_list_manager.retrieve_all_candidates_for_upcoming_election( google_civic_election_id, return_list_of_objects) status += results['status'] if results['success']: candidate_list = results['candidate_list_objects'] else: candidate_list = [] for candidate in candidate_list: twitter_handle = False facebook_page = False if not candidate.candidate_url: continue if (not positive_value_exists( candidate.candidate_twitter_handle)) or force_retrieve: scrape_results = scrape_social_media_from_one_site( candidate.candidate_url) # Only include a change if we have a new value (do not try to save blank value) if scrape_results['twitter_handle_found'] and positive_value_exists( scrape_results['twitter_handle']): twitter_handle = scrape_results['twitter_handle'] twitter_handles_found += 1 if scrape_results['facebook_page_found'] and positive_value_exists( scrape_results['facebook_page']): facebook_page = scrape_results['facebook_page'] facebook_pages_found += 1 save_results = candidate_manager.update_candidate_social_media( candidate, twitter_handle, facebook_page) # ###################################### # We refresh the Twitter information in another function status = "ORGANIZATION_SOCIAL_MEDIA_RETRIEVED" results = { 'success': True, 'status': status, 'twitter_handles_found': twitter_handles_found, 'facebook_pages_found': facebook_pages_found, } return results
def scrape_and_save_social_media_for_candidates_in_one_election(google_civic_election_id=0): facebook_pages_found = 0 twitter_handles_found = 0 force_retrieve = False status = "" google_civic_election_id = convert_to_int(google_civic_election_id) candidate_manager = CandidateCampaignManager() candidate_list_manager = CandidateCampaignList() return_list_of_objects = True results = candidate_list_manager.retrieve_all_candidates_for_upcoming_election(google_civic_election_id, return_list_of_objects) status += results['status'] if results['success']: candidate_list = results['candidate_list_objects'] else: candidate_list = [] for candidate in candidate_list: twitter_handle = False facebook_page = False if not candidate.candidate_url: continue if (not positive_value_exists(candidate.candidate_twitter_handle)) or force_retrieve: scrape_results = scrape_social_media_from_one_site(candidate.candidate_url) # Only include a change if we have a new value (do not try to save blank value) if scrape_results['twitter_handle_found'] and positive_value_exists(scrape_results['twitter_handle']): twitter_handle = scrape_results['twitter_handle'] twitter_handles_found += 1 if scrape_results['facebook_page_found'] and positive_value_exists(scrape_results['facebook_page']): facebook_page = scrape_results['facebook_page'] facebook_pages_found += 1 save_results = candidate_manager.update_candidate_social_media(candidate, twitter_handle, facebook_page) # ###################################### # We refresh the Twitter information in another function status = "ORGANIZATION_SOCIAL_MEDIA_RETRIEVED" results = { 'success': True, 'status': status, 'twitter_handles_found': twitter_handles_found, 'facebook_pages_found': facebook_pages_found, } return results
def refresh_twitter_candidate_details_for_election(google_civic_election_id): twitter_handles_added = 0 profiles_refreshed_with_twitter_data = 0 google_civic_election_id = convert_to_int(google_civic_election_id) candidate_list_manager = CandidateCampaignList() return_list_of_objects = True candidates_results = candidate_list_manager.retrieve_all_candidates_for_upcoming_election( google_civic_election_id, return_list_of_objects) if candidates_results['candidate_list_found']: candidate_list = candidates_results['candidate_list_objects'] for candidate in candidate_list: # Extract twitter_handle from google_civic_election information if positive_value_exists(candidate.twitter_url) \ and not positive_value_exists(candidate.candidate_twitter_handle): # If we got a twitter_url from Google Civic, and we haven't already stored a twitter handle, move it candidate.candidate_twitter_handle = candidate.twitter_url.replace( "https://twitter.com/", "") candidate.save() twitter_handles_added += 1 if positive_value_exists(candidate.candidate_twitter_handle): refresh_twitter_candidate_details(candidate) profiles_refreshed_with_twitter_data += 1 status = "CANDIDATE_SOCIAL_MEDIA_RETRIEVED" results = { 'success': True, 'status': status, 'twitter_handles_added': twitter_handles_added, 'profiles_refreshed_with_twitter_data': profiles_refreshed_with_twitter_data, } return results
def transfer_candidate_twitter_handles_from_google_civic( google_civic_election_id=0): twitter_handles_transferred = 0 status = "" google_civic_election_id = convert_to_int(google_civic_election_id) candidate_list_object = CandidateCampaignList() return_list_of_objects = True results = candidate_list_object.retrieve_all_candidates_for_upcoming_election( google_civic_election_id, return_list_of_objects) status += results['status'] if results['success']: candidate_list = results['candidate_list_objects'] else: candidate_list = [] for candidate in candidate_list: if not candidate.twitter_url: continue # Only proceed if we don't already have a twitter_handle if not positive_value_exists(candidate.candidate_twitter_handle): candidate.candidate_twitter_handle = candidate.twitter_url.replace( "https://twitter.com/", "") candidate.save() twitter_handles_transferred += 1 # ###################################### # We refresh the Twitter information in another function status += " CANDIDATE_TWITTER_HANDLES_TRANSFERRED" results = { 'success': True, 'status': status, 'twitter_handles_transferred': twitter_handles_transferred, } return results
def ballot_item_options_retrieve_for_api(google_civic_election_id=0): """ This function returns a normalized list of candidates and measures so we can pre-populate form fields. Not specific to one voter. :param google_civic_election_id: :return: """ status = "" try: candidate_list_object = CandidateCampaignList() results = candidate_list_object.retrieve_all_candidates_for_upcoming_election(google_civic_election_id) candidate_success = results['success'] status += results['status'] candidate_list = results['candidate_list_light'] except Exception as e: status += 'FAILED ballot_item_options_retrieve_for_api, candidate_list. ' \ '{error} [type: {error_type}]'.format(error=e, error_type=type(e)) handle_exception(e, logger=logger, exception_message=status) candidate_list = [] candidate_success = False try: office_list_object = ContestOfficeList() results = office_list_object.retrieve_all_offices_for_upcoming_election(google_civic_election_id) office_success = results['success'] status += ' ' + results['status'] office_list = results['office_list_light'] except Exception as e: status += 'FAILED ballot_item_options_retrieve_for_api, office_list. ' \ '{error} [type: {error_type}]'.format(error=e, error_type=type(e)) handle_exception(e, logger=logger, exception_message=status) office_list = [] office_success = False try: measure_list_object = ContestMeasureList() results = measure_list_object.retrieve_all_measures_for_upcoming_election(google_civic_election_id) measure_success = results['success'] status += ' ' + results['status'] measure_list = results['measure_list_light'] except Exception as e: status += 'FAILED ballot_item_options_retrieve_for_api, measure_list. ' \ '{error} [type: {error_type}]'.format(error=e, error_type=type(e)) handle_exception(e, logger=logger, exception_message=status) measure_list = [] measure_success = False ballot_items_to_display = [] if candidate_success and len(candidate_list): for candidate in candidate_list: ballot_items_to_display.append(candidate.copy()) if office_success and len(office_list): for office in office_list: ballot_items_to_display.append(office.copy()) if measure_success and len(measure_list): for measure in measure_list: ballot_items_to_display.append(measure.copy()) json_data = { 'status': status, 'success': candidate_success or measure_success, 'ballot_item_list': ballot_items_to_display, 'google_civic_election_id': google_civic_election_id, } results = { 'status': status, 'success': candidate_success or measure_success, 'google_civic_election_id': google_civic_election_id, # We want to save google_civic_election_id in cookie 'json_data': json_data, } return results
def ballot_item_options_retrieve_for_api(google_civic_election_id=0): """ This function returns a normalized list of candidates and measures so we can pre-populate form fields :param google_civic_election_id: :return: """ status = "" try: candidate_list_object = CandidateCampaignList() results = candidate_list_object.retrieve_all_candidates_for_upcoming_election(google_civic_election_id) candidate_success = results["success"] status += results["status"] candidate_list = results["candidate_list_light"] except Exception as e: status += "FAILED ballot_item_options_retrieve_for_api, candidate_list. " "{error} [type: {error_type}]".format( error=e, error_type=type(e) ) handle_exception(e, logger=logger, exception_message=status) candidate_list = [] candidate_success = False try: office_list_object = ContestOfficeList() results = office_list_object.retrieve_all_offices_for_upcoming_election(google_civic_election_id) office_success = results["success"] status += " " + results["status"] office_list = results["office_list_light"] except Exception as e: status += "FAILED ballot_item_options_retrieve_for_api, office_list. " "{error} [type: {error_type}]".format( error=e, error_type=type(e) ) handle_exception(e, logger=logger, exception_message=status) office_list = [] office_success = False try: measure_list_object = ContestMeasureList() results = measure_list_object.retrieve_all_measures_for_upcoming_election(google_civic_election_id) measure_success = results["success"] status += " " + results["status"] measure_list = results["measure_list_light"] except Exception as e: status += "FAILED ballot_item_options_retrieve_for_api, measure_list. " "{error} [type: {error_type}]".format( error=e, error_type=type(e) ) handle_exception(e, logger=logger, exception_message=status) measure_list = [] measure_success = False ballot_items_to_display = [] if candidate_success and len(candidate_list): for candidate in candidate_list: ballot_items_to_display.append(candidate.copy()) if office_success and len(office_list): for office in office_list: ballot_items_to_display.append(office.copy()) if measure_success and len(measure_list): for measure in measure_list: ballot_items_to_display.append(measure.copy()) json_data = { "status": status, "success": candidate_success or measure_success, "ballot_item_list": ballot_items_to_display, "google_civic_election_id": google_civic_election_id, } results = { "status": status, "success": candidate_success or measure_success, "google_civic_election_id": google_civic_election_id, # We want to save google_civic_election_id in cookie "json_data": json_data, } return results
def ballot_item_options_retrieve_for_api(google_civic_election_id=0): """ This function returns a normalized list of candidates and measures so we can pre-populate form fields. Not specific to one voter. :param google_civic_election_id: :return: """ status = "" try: candidate_list_object = CandidateCampaignList() results = candidate_list_object.retrieve_all_candidates_for_upcoming_election( google_civic_election_id) candidate_success = results['success'] status += results['status'] candidate_list = results['candidate_list_light'] except Exception as e: status += 'FAILED ballot_item_options_retrieve_for_api, candidate_list. ' \ '{error} [type: {error_type}]'.format(error=e, error_type=type(e)) handle_exception(e, logger=logger, exception_message=status) candidate_list = [] candidate_success = False try: office_list_object = ContestOfficeList() results = office_list_object.retrieve_all_offices_for_upcoming_election( google_civic_election_id) office_success = results['success'] status += ' ' + results['status'] office_list = results['office_list_light'] except Exception as e: status += 'FAILED ballot_item_options_retrieve_for_api, office_list. ' \ '{error} [type: {error_type}]'.format(error=e, error_type=type(e)) handle_exception(e, logger=logger, exception_message=status) office_list = [] office_success = False try: measure_list_object = ContestMeasureList() results = measure_list_object.retrieve_all_measures_for_upcoming_election( google_civic_election_id) measure_success = results['success'] status += ' ' + results['status'] measure_list = results['measure_list_light'] except Exception as e: status += 'FAILED ballot_item_options_retrieve_for_api, measure_list. ' \ '{error} [type: {error_type}]'.format(error=e, error_type=type(e)) handle_exception(e, logger=logger, exception_message=status) measure_list = [] measure_success = False ballot_items_to_display = [] if candidate_success and len(candidate_list): for candidate in candidate_list: ballot_items_to_display.append(candidate.copy()) if office_success and len(office_list): for office in office_list: ballot_items_to_display.append(office.copy()) if measure_success and len(measure_list): for measure in measure_list: ballot_items_to_display.append(measure.copy()) json_data = { 'status': status, 'success': candidate_success or measure_success, 'ballot_item_list': ballot_items_to_display, 'google_civic_election_id': google_civic_election_id, } results = { 'status': status, 'success': candidate_success or measure_success, 'google_civic_election_id': google_civic_election_id, # We want to save google_civic_election_id in cookie 'json_data': json_data, } return results