def voter_authenticate_manually_view(request): messages_on_stage = get_messages(request) voter_api_device_id = get_voter_api_device_id( request) # We look in the cookies for voter_api_device_id store_new_voter_api_device_id_in_cookie = False if not positive_value_exists(voter_api_device_id): # Create a voter_device_id and voter in the database if one doesn't exist yet results = voter_setup(request) voter_api_device_id = results['voter_api_device_id'] store_new_voter_api_device_id_in_cookie = results[ 'store_new_voter_api_device_id_in_cookie'] voter_id = fetch_voter_id_from_voter_device_link(voter_api_device_id) voter_id = convert_to_int(voter_id) voter_on_stage_found = False voter_on_stage = Voter() try: voter_on_stage = Voter.objects.get(id=voter_id) voter_on_stage_found = True except Voter.MultipleObjectsReturned as e: handle_record_found_more_than_one_exception(e, logger=logger) except Voter.DoesNotExist: # This is fine, we will display an error pass if voter_on_stage_found: set_this_voter_as_admin = "UPDATE voter_voter SET is_admin=True WHERE id={voter_id};".format( voter_id=voter_id) unset_this_voter_as_admin = "UPDATE voter_voter SET is_admin=False WHERE id={voter_id};".format( voter_id=voter_id) set_as_verified_volunteer = "UPDATE voter_voter SET is_verified_volunteer=True WHERE id={voter_id};" \ "".format(voter_id=voter_id) unset_as_verified_volunteer = "UPDATE voter_voter SET is_verified_volunteer=False WHERE id={voter_id};" \ "".format(voter_id=voter_id) template_values = { 'messages_on_stage': messages_on_stage, 'voter': voter_on_stage, 'voter_api_device_id': voter_api_device_id, 'is_authenticated': request.user.is_authenticated(), 'set_this_voter_as_admin': set_this_voter_as_admin, 'unset_this_voter_as_admin': unset_this_voter_as_admin, 'set_as_verified_volunteer': set_as_verified_volunteer, 'unset_as_verified_volunteer': unset_as_verified_volunteer, } else: template_values = { 'messages_on_stage': messages_on_stage, } response = render(request, 'voter/voter_authenticate_manually.html', template_values) # We want to store the voter_api_device_id cookie if it is new # if positive_value_exists(voter_api_device_id) and positive_value_exists(store_new_voter_api_device_id_in_cookie): # DALE 2016-02-15 Always set if we have a voter_api_device_id if positive_value_exists(store_new_voter_api_device_id_in_cookie): set_voter_api_device_id(request, response, voter_api_device_id) return response
def login_complete_view(request): try: voter_api_device_id = get_voter_api_device_id(request) if not positive_value_exists(voter_api_device_id): messages.add_message(request, messages.INFO, 'Missing voter_api_device_id.') return HttpResponseRedirect( reverse('admin_tools:admin_home', args=())) voter_object = request.user if not voter_object: messages.add_message(request, messages.INFO, 'Missing voter.') return HttpResponseRedirect( reverse('admin_tools:admin_home', args=())) # TODO Write the Twitter or Facebook information to the voter table so we can access it via the APIs # Currently all of the twitter authentication for Django is in the separate social_auth* tables # Relink this voter_api_device_id to this Voter account voter_device_manager = VoterDeviceLinkManager() voter_device_link_results = voter_device_manager.retrieve_voter_device_link( voter_api_device_id) voter_device_link = voter_device_link_results['voter_device_link'] update_voter_device_link_results = voter_device_manager.update_voter_device_link( voter_device_link, voter_object) if update_voter_device_link_results['voter_device_link_updated']: messages.add_message(request, messages.INFO, 'Voter updated.') else: messages.add_message(request, messages.INFO, 'Voter could not be relinked.') except: messages.add_message(request, messages.INFO, 'Voter not updated.') return HttpResponseRedirect(reverse('login_user', args=()))
def voter_authenticate_manually_process_view(request): voter_api_device_id = get_voter_api_device_id(request) # We look in the cookies for voter_api_device_id voter_id = fetch_voter_id_from_voter_device_link(voter_api_device_id) voter_id = convert_to_int(voter_id) voter_signed_in = False try: voter_on_stage = Voter.objects.get(id=voter_id) # If the account associated with this voter_api_device_id is an admin, complete Django authentication if voter_on_stage.is_admin: voter_on_stage.backend = 'django.contrib.auth.backends.ModelBackend' login(request, voter_on_stage) messages.add_message(request, messages.INFO, 'Voter logged in.') voter_signed_in = True else: messages.add_message(request, messages.INFO, 'This account does not have Admin access.') except Voter.MultipleObjectsReturned as e: handle_record_found_more_than_one_exception(e, logger=logger) messages.add_message(request, messages.ERROR, 'More than one voter found. Voter not logged in.') except Voter.DoesNotExist: # This is fine, we will display an error messages.add_message(request, messages.ERROR, 'Voter not found. Voter not logged in.') if voter_signed_in: return HttpResponseRedirect(reverse('admin_tools:admin_home', args=())) else: return HttpResponseRedirect(reverse('voter:authenticate_manually', args=()))
def voter_authenticate_manually_process_view(request): voter_api_device_id = get_voter_api_device_id( request) # We look in the cookies for voter_api_device_id voter_id = fetch_voter_id_from_voter_device_link(voter_api_device_id) voter_id = convert_to_int(voter_id) voter_signed_in = False try: voter_on_stage = Voter.objects.get(id=voter_id) # If the account associated with this voter_api_device_id is an admin, complete Django authentication if voter_on_stage.is_admin: voter_on_stage.backend = 'django.contrib.auth.backends.ModelBackend' login(request, voter_on_stage) messages.add_message(request, messages.INFO, 'Voter logged in.') voter_signed_in = True else: messages.add_message(request, messages.INFO, 'This account does not have Admin access.') except Voter.MultipleObjectsReturned as e: handle_record_found_more_than_one_exception(e, logger=logger) messages.add_message( request, messages.ERROR, 'More than one voter found. Voter not logged in.') except Voter.DoesNotExist: # This is fine, we will display an error messages.add_message(request, messages.ERROR, 'Voter not found. Voter not logged in.') if voter_signed_in: return HttpResponseRedirect(reverse('admin_tools:admin_home', args=())) else: return HttpResponseRedirect( reverse('voter:authenticate_manually', args=()))
def login_complete_view(request): try: voter_api_device_id = get_voter_api_device_id(request) if not positive_value_exists(voter_api_device_id): messages.add_message(request, messages.INFO, 'Missing voter_api_device_id.') return HttpResponseRedirect(reverse('admin_tools:admin_home', args=())) voter_object = request.user if not voter_object: messages.add_message(request, messages.INFO, 'Missing voter.') return HttpResponseRedirect(reverse('admin_tools:admin_home', args=())) # TODO Write the Twitter or Facebook information to the voter table so we can access it via the APIs # Currently all of the twitter authentication for Django is in the separate social_auth* tables # Relink this voter_api_device_id to this Voter account voter_device_manager = VoterDeviceLinkManager() voter_device_link_results = voter_device_manager.retrieve_voter_device_link(voter_api_device_id) voter_device_link = voter_device_link_results['voter_device_link'] update_voter_device_link_results = voter_device_manager.update_voter_device_link( voter_device_link, voter_object) if update_voter_device_link_results['voter_device_link_updated']: messages.add_message(request, messages.INFO, 'Voter updated.') else: messages.add_message(request, messages.INFO, 'Voter could not be relinked.') except: messages.add_message(request, messages.INFO, 'Voter not updated.') return HttpResponseRedirect(reverse('admin_tools:admin_home', args=()))
def position_like_count_doc_view(request): """ Show documentation about positionLikeCount """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = position_like_count_doc.position_like_count_doc_template_values(url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def voter_position_comment_save_doc_view(request): """ Show documentation about positionSave """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = voter_position_comment_save_doc.voter_position_comment_save_doc_template_values(url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def voter_star_status_retrieve_doc_view(request): """ Show documentation about voterStarStatusRetrieve """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = voter_star_status_retrieve_doc.voter_star_status_retrieve_doc_template_values(url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def ballot_item_retrieve_doc_view(request): """ Show documentation about ballotItemRetrieve """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = ballot_item_retrieve_doc.ballot_item_retrieve_doc_template_values(url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def voter_guides_followed_retrieve_doc_view(request): """ Show documentation about organizationsFollowedRetrieve """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = voter_guides_followed_retrieve_doc.voter_guides_followed_retrieve_doc_template_values(url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def twitter_identity_retrieve_doc_view(request): """ Show documentation about twitterIdentityRetrieve """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = twitter_identity_retrieve_doc.twitter_identity_retrieve_doc_template_values(url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def polling_locations_sync_out_doc_view(request): """ Show documentation about pollingLocationsSyncOut """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = polling_locations_sync_out_doc.polling_locations_sync_out_doc_template_values(url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def twitter_sign_in_start_doc_view(request): """ Show documentation about twitterSignInStart """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = twitter_sign_in_start_doc.twitter_sign_in_start_doc_template_values(url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def organization_search_doc_view(request): """ Show documentation about organizationSave """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = organization_search_doc.organization_search_doc_template_values(url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def position_list_for_opinion_maker_doc_view(request): """ Show documentation about positionListForOpinionMaker """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = position_list_for_opinion_maker_doc.position_list_for_opinion_maker_doc_template_values(url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def facebook_sign_in_doc_view(request): """ Show documentation about facebookSignIn """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = facebook_sign_in_doc.facebook_sign_in_doc_template_values(url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def voter_position_like_status_retrieve_doc_view(request): """ Show documentation about voterPositionLikeStatusRetrieve """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = voter_position_like_status_retrieve_doc.voter_position_like_status_retrieve_doc_template_values( url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def voter_location_retrieve_from_ip_doc_view(request): """ Show documentation about voterLocationRetrieveFromIP """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = voter_location_retrieve_from_ip_doc.voter_location_retrieve_from_ip_doc_template_values( url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def voter_guides_to_follow_retrieve_doc_view(request): """ Show documentation about voterGuidesToFollowRetrieve """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = voter_guides_to_follow_retrieve_doc.voter_guides_to_follow_retrieve_doc_template_values( url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def voter_ballot_items_retrieve_from_google_civic_doc_view(request): """ Show documentation about voterBallotItemsRetrieveFromGoogleCivic """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = voter_ballot_items_retrieve_from_google_civic_doc.\ voter_ballot_items_retrieve_from_google_civic_doc_template_values(url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def search_all_doc_view(request): """ Show documentation about searchAll """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = search_all_doc.\ search_all_doc_template_values(url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def voter_update_doc_view(request): """ Show documentation about voterUpdate """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = voter_update_doc.voter_update_doc_template_values( url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def positions_count_for_one_ballot_item_doc_view(request): """ Show documentation about positionsCountForOneBallotItem """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = positions_count_for_one_ballot_item_doc.positions_count_for_one_ballot_item_doc_template_values( url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def position_list_for_opinion_maker_doc_view(request): """ Show documentation about positionListForOpinionMaker """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = position_list_for_opinion_maker_doc.position_list_for_opinion_maker_doc_template_values( url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def facebook_sign_in_doc_view(request): """ Show documentation about facebookSignIn """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = facebook_sign_in_doc.facebook_sign_in_doc_template_values( url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def polling_locations_sync_out_doc_view(request): """ Show documentation about pollingLocationsSyncOut """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = polling_locations_sync_out_doc.polling_locations_sync_out_doc_template_values( url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def search_all_doc_view(request): """ Show documentation about searchAll """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = search_all_doc.\ search_all_doc_template_values(url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def twitter_identity_retrieve_doc_view(request): """ Show documentation about twitterIdentityRetrieve """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = twitter_identity_retrieve_doc.twitter_identity_retrieve_doc_template_values( url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def ballot_items_sync_out_doc_view(request): """ Show documentation about ballotItemsSyncOut """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = ballot_items_sync_out_doc.ballot_items_sync_out_doc_template_values( url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def twitter_sign_in_request_voter_info_doc_view(request): """ Show documentation about twitterSignInRequestVoterInfo """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = \ twitter_sign_in_request_voter_info_doc.twitter_sign_in_request_voter_info_doc_template_values(url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def organization_search_doc_view(request): """ Show documentation about organizationSave """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = organization_search_doc.organization_search_doc_template_values( url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def voter_authenticate_manually_view(request): messages_on_stage = get_messages(request) voter_api_device_id = get_voter_api_device_id(request) # We look in the cookies for voter_api_device_id store_new_voter_api_device_id_in_cookie = False if not positive_value_exists(voter_api_device_id): # Create a voter_device_id and voter in the database if one doesn't exist yet results = voter_setup(request) voter_api_device_id = results['voter_api_device_id'] store_new_voter_api_device_id_in_cookie = results['store_new_voter_api_device_id_in_cookie'] voter_id = fetch_voter_id_from_voter_device_link(voter_api_device_id) voter_id = convert_to_int(voter_id) voter_on_stage_found = False voter_on_stage = Voter() try: voter_on_stage = Voter.objects.get(id=voter_id) voter_on_stage_found = True except Voter.MultipleObjectsReturned as e: handle_record_found_more_than_one_exception(e, logger=logger) except Voter.DoesNotExist: # This is fine, we will display an error pass if voter_on_stage_found: set_this_voter_as_admin = "UPDATE voter_voter SET is_admin=True WHERE id={voter_id};".format(voter_id=voter_id) unset_this_voter_as_admin = "UPDATE voter_voter SET is_admin=False WHERE id={voter_id};".format( voter_id=voter_id) set_as_verified_volunteer = "UPDATE voter_voter SET is_verified_volunteer=True WHERE id={voter_id};" \ "".format(voter_id=voter_id) unset_as_verified_volunteer = "UPDATE voter_voter SET is_verified_volunteer=False WHERE id={voter_id};" \ "".format(voter_id=voter_id) template_values = { 'messages_on_stage': messages_on_stage, 'voter': voter_on_stage, 'voter_api_device_id': voter_api_device_id, 'is_authenticated': request.user.is_authenticated(), 'set_this_voter_as_admin': set_this_voter_as_admin, 'unset_this_voter_as_admin': unset_this_voter_as_admin, 'set_as_verified_volunteer': set_as_verified_volunteer, 'unset_as_verified_volunteer': unset_as_verified_volunteer, } else: template_values = { 'messages_on_stage': messages_on_stage, } response = render(request, 'voter/voter_authenticate_manually.html', template_values) # We want to store the voter_api_device_id cookie if it is new # if positive_value_exists(voter_api_device_id) and positive_value_exists(store_new_voter_api_device_id_in_cookie): # DALE 2016-02-15 Always set if we have a voter_api_device_id if positive_value_exists(store_new_voter_api_device_id_in_cookie): set_voter_api_device_id(request, response, voter_api_device_id) return response
def position_like_count_doc_view(request): """ Show documentation about positionLikeCount """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = position_like_count_doc.position_like_count_doc_template_values( url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def voter_ballot_items_retrieve_from_google_civic_doc_view(request): """ Show documentation about voterBallotItemsRetrieveFromGoogleCivic """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = voter_ballot_items_retrieve_from_google_civic_doc.\ voter_ballot_items_retrieve_from_google_civic_doc_template_values(url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def voter_guide_possibility_retrieve_doc_view(request): """ Show documentation about voterGuidePossibilityRetrieve """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = \ voter_guide_possibility_retrieve_doc.voter_guide_possibility_retrieve_doc_template_values(url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def position_support_count_for_ballot_item_doc_view(request): """ Show documentation about positionSupportCountForBallotItem """ url_root = WE_VOTE_SERVER_ROOT_URL template_values = position_support_count_for_ballot_item_doc.\ position_support_count_for_ballot_item_doc_template_values(url_root) template_values['voter_api_device_id'] = get_voter_api_device_id(request) return render(request, 'apis_v1/api_doc_page.html', template_values)
def voter_stop_asking_candidate_campaign_view(request, candidate_campaign_id): logger.debug( "voter_stop_asking_candidate_campaign_view {candidate_campaign_id}". format(candidate_campaign_id=candidate_campaign_id)) voter_api_device_id = get_voter_api_device_id(request) voter_id = fetch_voter_id_from_voter_device_link(voter_api_device_id) logger.debug( "voter_stop_asking_candidate_campaign_view NOT BUILT YET, voter_id: {voter_id}" .format(voter_id=voter_id)) return JsonResponse({0: "not working yet - needs to be built"})
def voter_stop_asking_candidate_campaign_view(request, candidate_campaign_id): logger.debug("voter_stop_asking_candidate_campaign_view {candidate_campaign_id}".format( candidate_campaign_id=candidate_campaign_id )) voter_api_device_id = get_voter_api_device_id(request) voter_id = fetch_voter_id_from_voter_device_link(voter_api_device_id) logger.debug("voter_stop_asking_candidate_campaign_view NOT BUILT YET, voter_id: {voter_id}".format( voter_id=voter_id )) return JsonResponse({0: "not working yet - needs to be built"})
def voter_stance_for_contest_measure_view(request, contest_measure_id): logger.debug("voter_stance_for_contest_measure_view {contest_measure_id}".format( contest_measure_id=contest_measure_id )) voter_api_device_id = get_voter_api_device_id(request) voter_id = fetch_voter_id_from_voter_device_link(voter_api_device_id) logger.debug("voter_stance_for_contest_measure_view NOT BUILT YET, voter_id: {voter_id}".format( voter_id=voter_id )) return JsonResponse({0: "not working yet - needs to be built"})
def voter_stance_for_contest_measure_view(request, contest_measure_id): logger.debug( "voter_stance_for_contest_measure_view {contest_measure_id}".format( contest_measure_id=contest_measure_id)) voter_api_device_id = get_voter_api_device_id(request) voter_id = fetch_voter_id_from_voter_device_link(voter_api_device_id) logger.debug( "voter_stance_for_contest_measure_view NOT BUILT YET, voter_id: {voter_id}" .format(voter_id=voter_id)) return JsonResponse({0: "not working yet - needs to be built"})
def organization_stop_following_view(request, organization_id): logger.debug("organization_stop_following_view {organization_id}".format( organization_id=organization_id )) voter_api_device_id = get_voter_api_device_id(request) voter_id = fetch_voter_id_from_voter_device_link(voter_api_device_id) follow_organization_manager = FollowOrganizationManager() results = follow_organization_manager.toggle_off_voter_following_organization(voter_id, organization_id) if results['success']: return JsonResponse({0: "success"}) else: return JsonResponse({0: "failure"})
def voter_stop_opposing_candidate_campaign_view(request, candidate_campaign_id): logger.debug("voter_stop_opposing_candidate_campaign_view {candidate_campaign_id}".format( candidate_campaign_id=candidate_campaign_id )) voter_api_device_id = get_voter_api_device_id(request) voter_id = fetch_voter_id_from_voter_device_link(voter_api_device_id) position_entered_manager = PositionEnteredManager() results = position_entered_manager.toggle_off_voter_oppose_for_candidate_campaign(voter_id, candidate_campaign_id) if results['success']: return JsonResponse({0: "success"}) else: return JsonResponse({0: "failure"})
def organization_stop_following_view(request, organization_id): logger.debug("organization_stop_following_view {organization_id}".format( organization_id=organization_id)) voter_api_device_id = get_voter_api_device_id(request) voter_id = fetch_voter_id_from_voter_device_link(voter_api_device_id) follow_organization_manager = FollowOrganizationManager() results = follow_organization_manager.toggle_off_voter_following_organization( voter_id, organization_id) if results['success']: return JsonResponse({0: "success"}) else: return JsonResponse({0: "failure"})
def positions_related_to_candidate_campaign_view( request, candidate_campaign_id, stance_we_are_looking_for): # TODO DEPRECATE """ We want to return a JSON file with the support positions for a particular candidate's campaign :param request: :param candidate_campaign_id: :return: """ if stance_we_are_looking_for not in (SUPPORT, NO_STANCE, INFORMATION_ONLY, STILL_DECIDING, OPPOSE, PERCENT_RATING): logger.debug(stance_we_are_looking_for) return JsonResponse({0: "stance not recognized"}) # 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_campaign_we_vote_id = '' all_positions_list_for_candidate_campaign = \ position_list_manager.retrieve_all_positions_for_candidate_campaign( candidate_campaign_id, candidate_campaign_we_vote_id, stance_we_are_looking_for) voter_api_device_id = get_voter_api_device_id(request) voter_id = fetch_voter_id_from_voter_device_link(voter_api_device_id) 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_followed = position_list_manager.calculate_positions_followed_by_voter( voter_id, all_positions_list_for_candidate_campaign, organizations_followed_by_voter) positions_not_followed = position_list_manager.calculate_positions_not_followed_by_voter( all_positions_list_for_candidate_campaign, organizations_followed_by_voter) # TODO: Below we return a snippet of HTML, but this should be converted to returning just the org's name # and id, so the "x, y, and z support" can be assembled and rendered by the client # VERSION 1 # position_html = assemble_candidate_campaign_position_stance_html( # all_positions_list_for_candidate_campaign, stance_we_are_looking_for, candidate_campaign_id) # VERSION 2 position_html = assemble_candidate_campaign_stance_html( candidate_campaign_id, stance_we_are_looking_for, positions_followed, positions_not_followed) return JsonResponse({0: position_html})
def voter_opposing_candidate_campaign_view(request, candidate_campaign_id): logger.debug( "voter_opposing_candidate_campaign_view {candidate_campaign_id}". format(candidate_campaign_id=candidate_campaign_id)) voter_api_device_id = get_voter_api_device_id(request) voter_id = fetch_voter_id_from_voter_device_link(voter_api_device_id) position_entered_manager = PositionEnteredManager() results = position_entered_manager.toggle_on_voter_oppose_for_candidate_campaign( voter_id, candidate_campaign_id) if results['success']: return JsonResponse({0: "success"}) else: return JsonResponse({0: "failure"})
def voter_list_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) voter_api_device_id = get_voter_api_device_id(request) # We look in the cookies for voter_api_device_id voter_id = fetch_voter_id_from_voter_device_link(voter_api_device_id) voter_id = convert_to_int(voter_id) messages_on_stage = get_messages(request) voter_list = Voter.objects.order_by('-last_login') template_values = { 'messages_on_stage': messages_on_stage, 'voter_list': voter_list, 'voter_id_signed_in': voter_id, } return render(request, 'voter/voter_list.html', template_values)
def positions_related_to_candidate_campaign_view(request, candidate_campaign_id, stance_we_are_looking_for): # TODO DEPRECATE """ We want to return a JSON file with the support positions for a particular candidate's campaign :param request: :param candidate_campaign_id: :return: """ if stance_we_are_looking_for not in(SUPPORT, NO_STANCE, INFORMATION_ONLY, STILL_DECIDING, OPPOSE, PERCENT_RATING): logger.debug(stance_we_are_looking_for) return JsonResponse({0: "stance not recognized"}) # 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_campaign_we_vote_id = '' all_positions_list_for_candidate_campaign = \ position_list_manager.retrieve_all_positions_for_candidate_campaign( candidate_campaign_id, candidate_campaign_we_vote_id, stance_we_are_looking_for) voter_api_device_id = get_voter_api_device_id(request) voter_id = fetch_voter_id_from_voter_device_link(voter_api_device_id) 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_followed = position_list_manager.calculate_positions_followed_by_voter( voter_id, all_positions_list_for_candidate_campaign, organizations_followed_by_voter) positions_not_followed = position_list_manager.calculate_positions_not_followed_by_voter( all_positions_list_for_candidate_campaign, organizations_followed_by_voter) # TODO: Below we return a snippet of HTML, but this should be converted to returning just the org's name # and id, so the "x, y, and z support" can be assembled and rendered by the client # VERSION 1 # position_html = assemble_candidate_campaign_position_stance_html( # all_positions_list_for_candidate_campaign, stance_we_are_looking_for, candidate_campaign_id) # VERSION 2 position_html = assemble_candidate_campaign_stance_html( candidate_campaign_id, stance_we_are_looking_for, positions_followed, positions_not_followed) return JsonResponse({0: position_html})
def voter_stance_for_candidate_campaign_view(request, candidate_campaign_id): logger.debug("voter_stance_for_candidate_campaign_view {candidate_campaign_id}".format( candidate_campaign_id=candidate_campaign_id )) voter_api_device_id = get_voter_api_device_id(request) voter_id = fetch_voter_id_from_voter_device_link(voter_api_device_id) position_entered_manager = PositionEnteredManager() results = position_entered_manager.retrieve_voter_candidate_campaign_position(voter_id, candidate_campaign_id) if results['position_found']: if results['is_support']: return JsonResponse({0: "support"}) elif results['is_oppose']: return JsonResponse({0: "oppose"}) elif results['is_no_stance']: return JsonResponse({0: "no_stance"}) elif results['is_information_only']: return JsonResponse({0: "information_only"}) elif results['is_still_deciding']: return JsonResponse({0: "still_deciding"}) return JsonResponse({0: "failure"})
def voter_stance_for_candidate_campaign_view(request, candidate_campaign_id): logger.debug( "voter_stance_for_candidate_campaign_view {candidate_campaign_id}". format(candidate_campaign_id=candidate_campaign_id)) voter_api_device_id = get_voter_api_device_id(request) voter_id = fetch_voter_id_from_voter_device_link(voter_api_device_id) position_entered_manager = PositionEnteredManager() results = position_entered_manager.retrieve_voter_candidate_campaign_position( voter_id, candidate_campaign_id) if results['position_found']: if results['is_support']: return JsonResponse({0: "support"}) elif results['is_oppose']: return JsonResponse({0: "oppose"}) elif results['is_no_stance']: return JsonResponse({0: "no_stance"}) elif results['is_information_only']: return JsonResponse({0: "information_only"}) elif results['is_still_deciding']: return JsonResponse({0: "still_deciding"}) return JsonResponse({0: "failure"})
def retrieve_voter_authority(request): # voter_device_id = get_voter_device_id(request) voter_api_device_id = get_voter_api_device_id(request) voter_manager = VoterManager() results = voter_manager.retrieve_voter_from_voter_device_id(voter_api_device_id) if results['voter_found']: voter = results['voter'] authority_results = { 'voter_found': True, 'is_active': positive_value_exists(voter.is_active), 'is_admin': positive_value_exists(voter.is_admin), 'is_verified_volunteer': positive_value_exists(voter.is_verified_volunteer), } return authority_results authority_results = { 'voter_found': False, 'is_active': False, 'is_admin': False, 'is_verified_volunteer': False, } return authority_results
def voter_list_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) voter_api_device_id = get_voter_api_device_id( request) # We look in the cookies for voter_api_device_id voter_id = fetch_voter_id_from_voter_device_link(voter_api_device_id) voter_id = convert_to_int(voter_id) messages_on_stage = get_messages(request) voter_list = Voter.objects.order_by('-is_admin', '-is_verified_volunteer', 'facebook_email', 'twitter_screen_name', 'last_name', 'first_name') voter_list = voter_list # [:200] template_values = { 'messages_on_stage': messages_on_stage, 'voter_list': voter_list, 'voter_id_signed_in': voter_id, } return render(request, 'voter/voter_list.html', template_values)
def logout_user(request): logout(request) info_message = "You are now signed out." messages.add_message(request, messages.INFO, info_message) messages_on_stage = get_messages(request) template_values = { 'request': request, 'next': '/admin/', 'messages_on_stage': messages_on_stage, } response = render(request, 'registration/login_user.html', template_values) # Find current voter_api_device_id voter_api_device_id = get_voter_api_device_id(request) delete_voter_api_device_id_cookie(response) # Now delete voter_api_device_id from database voter_device_link_manager = VoterDeviceLinkManager() voter_device_link_manager.delete_voter_device_link(voter_api_device_id) return response
def logout_user(request): logout(request) info_message = "You are now signed out." messages.add_message(request, messages.INFO, info_message) messages_on_stage = get_messages(request) template_values = { 'request': request, 'next': '/admin/', 'messages_on_stage': messages_on_stage, } response = render(request, 'registration/login_user.html', template_values) # Find current voter_api_device_id voter_api_device_id = get_voter_api_device_id(request) delete_voter_api_device_id_cookie(response) # Now delete voter_api_device_id from database voter_device_link_manager = VoterDeviceLinkManager() voter_device_link_manager.delete_voter_device_link(voter_api_device_id) return response
def login_user(request): """ This method is called when you login from the /login/ form :param request: :return: """ voter_api_device_id = get_voter_api_device_id( request) # We look in the cookies for voter_api_device_id store_new_voter_api_device_id_in_cookie = False voter_signed_in = False voter_manager = VoterManager() voter_device_link_manager = VoterDeviceLinkManager() results = voter_manager.retrieve_voter_from_voter_device_id( voter_api_device_id) if results['voter_found']: voter_on_stage = results['voter'] voter_on_stage_id = voter_on_stage.id # Just because a We Vote voter is found doesn't mean they are authenticated for Django else: voter_on_stage_id = 0 info_message = '' error_message = '' username = '' # Does Django think user is already signed in? if request.user.is_authenticated(): # If so, make sure user and voter_on_stage are the same. if request.user.id != voter_on_stage_id: # Delete the prior voter_api_device_id from database voter_device_link_manager.delete_voter_device_link( voter_api_device_id) # Create a new voter_api_device_id and voter_device_link voter_api_device_id = generate_voter_device_id() results = voter_device_link_manager.save_new_voter_device_link( voter_api_device_id, request.user.id) store_new_voter_api_device_id_in_cookie = results[ 'voter_device_link_created'] voter_on_stage = request.user voter_on_stage_id = voter_on_stage.id elif request.POST: username = request.POST.get('username') password = request.POST.get('password') user = authenticate(username=username, password=password) if user is not None: if user.is_active: login(request, user) info_message = "You're successfully logged in!" # Delete the prior voter_api_device_id from database voter_device_link_manager.delete_voter_device_link( voter_api_device_id) # Create a new voter_api_device_id and voter_device_link voter_api_device_id = generate_voter_device_id() results = voter_device_link_manager.save_new_voter_device_link( voter_api_device_id, user.id) store_new_voter_api_device_id_in_cookie = results[ 'voter_device_link_created'] else: error_message = "Your account is not active, please contact the site admin." if user.id != voter_on_stage_id: # Eventually we want to merge voter_on_stage into user account pass else: error_message = "Your username and/or password were incorrect." elif not positive_value_exists(voter_on_stage_id): # If here, delete the prior voter_api_device_id from database voter_device_link_manager.delete_voter_device_link(voter_api_device_id) # We then need to set a voter_api_device_id cookie and create a new voter (even though not signed in) results = voter_setup(request) voter_api_device_id = results['voter_api_device_id'] store_new_voter_api_device_id_in_cookie = results[ 'store_new_voter_api_device_id_in_cookie'] # Does Django think user is signed in? if request.user.is_authenticated(): voter_signed_in = True else: info_message = "Please log in below..." if positive_value_exists(error_message): messages.add_message(request, messages.ERROR, error_message) if positive_value_exists(info_message): messages.add_message(request, messages.INFO, info_message) messages_on_stage = get_messages(request) template_values = { 'request': request, 'username': username, 'next': next, 'voter_signed_in': voter_signed_in, 'messages_on_stage': messages_on_stage, } response = render(request, 'registration/login_user.html', template_values) # We want to store the voter_api_device_id cookie if it is new if positive_value_exists(voter_api_device_id) and positive_value_exists( store_new_voter_api_device_id_in_cookie): set_voter_api_device_id(request, response, voter_api_device_id) return response
def login_user(request): """ This method is called when you login from the /login/ form :param request: :return: """ voter_api_device_id = get_voter_api_device_id(request) # We look in the cookies for voter_api_device_id store_new_voter_api_device_id_in_cookie = False voter_signed_in = False voter_manager = VoterManager() voter_device_link_manager = VoterDeviceLinkManager() results = voter_manager.retrieve_voter_from_voter_device_id(voter_api_device_id) if results['voter_found']: voter_on_stage = results['voter'] voter_on_stage_id = voter_on_stage.id # Just because a We Vote voter is found doesn't mean they are authenticated for Django else: voter_on_stage_id = 0 info_message = '' error_message = '' username = '' # Does Django think user is already signed in? if request.user.is_authenticated(): # If so, make sure user and voter_on_stage are the same. if request.user.id != voter_on_stage_id: # Delete the prior voter_api_device_id from database voter_device_link_manager.delete_voter_device_link(voter_api_device_id) # Create a new voter_api_device_id and voter_device_link voter_api_device_id = generate_voter_device_id() results = voter_device_link_manager.save_new_voter_device_link(voter_api_device_id, request.user.id) store_new_voter_api_device_id_in_cookie = results['voter_device_link_created'] voter_on_stage = request.user voter_on_stage_id = voter_on_stage.id elif request.POST: username = request.POST.get('username') password = request.POST.get('password') user = authenticate(username=username, password=password) if user is not None: if user.is_active: login(request, user) info_message = "You're successfully logged in!" # Delete the prior voter_api_device_id from database voter_device_link_manager.delete_voter_device_link(voter_api_device_id) # Create a new voter_api_device_id and voter_device_link voter_api_device_id = generate_voter_device_id() results = voter_device_link_manager.save_new_voter_device_link(voter_api_device_id, user.id) store_new_voter_api_device_id_in_cookie = results['voter_device_link_created'] else: error_message = "Your account is not active, please contact the site admin." if user.id != voter_on_stage_id: # Eventually we want to merge voter_on_stage into user account pass else: error_message = "Your username and/or password were incorrect." elif not positive_value_exists(voter_on_stage_id): # If here, delete the prior voter_api_device_id from database voter_device_link_manager.delete_voter_device_link(voter_api_device_id) # We then need to set a voter_api_device_id cookie and create a new voter (even though not signed in) results = voter_setup(request) voter_api_device_id = results['voter_api_device_id'] store_new_voter_api_device_id_in_cookie = results['store_new_voter_api_device_id_in_cookie'] # Does Django think user is signed in? if request.user.is_authenticated(): voter_signed_in = True else: info_message = "Please log in below..." if positive_value_exists(error_message): messages.add_message(request, messages.ERROR, error_message) if positive_value_exists(info_message): messages.add_message(request, messages.INFO, info_message) messages_on_stage = get_messages(request) template_values = { 'request': request, 'username': username, 'next': next, 'voter_signed_in': voter_signed_in, 'messages_on_stage': messages_on_stage, } response = render(request, 'registration/login_user.html', template_values) # We want to store the voter_api_device_id cookie if it is new if positive_value_exists(voter_api_device_id) and positive_value_exists(store_new_voter_api_device_id_in_cookie): set_voter_api_device_id(request, response, voter_api_device_id) return response