def voter_guide_possibility_retrieve_for_api(voter_device_id, voter_guide_possibility_url): results = is_voter_device_id_valid(voter_device_id) voter_guide_possibility_url = voter_guide_possibility_url # TODO Use scrapy here if not results['success']: return HttpResponse(json.dumps(results['json_data']), content_type='application/json') voter_id = fetch_voter_id_from_voter_device_link(voter_device_id) if not positive_value_exists(voter_id): json_data = { 'status': "VOTER_NOT_FOUND_FROM_VOTER_DEVICE_ID", 'success': False, 'voter_device_id': voter_device_id, } return HttpResponse(json.dumps(json_data), content_type='application/json') # TODO We will need the voter_id here so we can control volunteer actions voter_guide_possibility_manager = VoterGuidePossibilityManager() results = voter_guide_possibility_manager.retrieve_voter_guide_possibility_from_url( voter_guide_possibility_url) json_data = { 'voter_device_id': voter_device_id, 'voter_guide_possibility_url': results['voter_guide_possibility_url'], 'voter_guide_possibility_id': results['voter_guide_possibility_id'], 'organization_we_vote_id': results['organization_we_vote_id'], 'public_figure_we_vote_id': results['public_figure_we_vote_id'], 'owner_we_vote_id': results['owner_we_vote_id'], 'status': results['status'], 'success': results['success'], } return HttpResponse(json.dumps(json_data), content_type='application/json')
def voter_guide_possibility_save_for_api(voter_device_id, voter_guide_possibility_url): results = is_voter_device_id_valid(voter_device_id) if not results['success']: return HttpResponse(json.dumps(results['json_data']), content_type='application/json') if not voter_guide_possibility_url: json_data = { 'status': "MISSING_POST_VARIABLE-URL", 'success': False, 'voter_device_id': voter_device_id, } return HttpResponse(json.dumps(json_data), content_type='application/json') voter_id = fetch_voter_id_from_voter_device_link(voter_device_id) if not positive_value_exists(voter_id): json_data = { 'status': "VOTER_NOT_FOUND_FROM_DEVICE_ID", 'success': False, 'voter_device_id': voter_device_id, } return HttpResponse(json.dumps(json_data), content_type='application/json') # At this point, we have a valid voter voter_guide_possibility_manager = VoterGuidePossibilityManager() # We wrap get_or_create because we want to centralize error handling results = voter_guide_possibility_manager.update_or_create_voter_guide_possibility( voter_guide_possibility_url.strip()) if results['success']: json_data = { 'status': "VOTER_GUIDE_POSSIBILITY_SAVED", 'success': True, 'voter_device_id': voter_device_id, 'voter_guide_possibility_url': voter_guide_possibility_url, } # elif results['status'] == 'MULTIPLE_MATCHING_ADDRESSES_FOUND': # delete all currently matching addresses and save again? else: json_data = { 'status': results['status'], 'success': False, 'voter_device_id': voter_device_id, } return HttpResponse(json.dumps(json_data), content_type='application/json')