예제 #1
0
def process(request):
    user_identifier = request.POST['user_identifier']
    user_identifier_type = request.POST['user_identifier_type']

    twitter_api = TwitterAPI()

    try:
        response = redirect('result')
        if user_identifier_type == "user_id":
            user = Users.objects.get(user_id=user_identifier)
            response.set_cookie('app_user_id', user_identifier)
        else:
            user = Users.objects.get(user_name=user_identifier)
            response.set_cookie('app_user_name', user_identifier)

        try:
            api = twitter_api.get_api_object(user.user_access_token,
                                             user.user_access_secret)
            response.set_cookie('app_access_token', user.user_access_token)
            response.set_cookie('app_access_secret', user.user_access_secret)
        except tweepy.TweepError:
            user.delete()
            print "Authentication failed. Redirecting user to relogin"
            redirect_url = twitter_api.auth_handler.get_authorization_url()
            request_token = twitter_api.auth_handler.request_token
            response = redirect(redirect_url)
            response.set_cookie('request_token', request_token)
            if user_identifier_type == "user_id":
                response.set_cookie('app_user_id', user_identifier)
            else:
                response.set_cookie('app_user_name', user_identifier)

        return response

    except Users.DoesNotExist:
        print "User not found in DB. Will redirect user to fetch verifier token"
        response = redirect(twitter_api.auth_handler.get_authorization_url())
        if user_identifier_type == "user_id":
            response.set_cookie('app_user_id', user_identifier)
        else:
            response.set_cookie('app_user_name', user_identifier)
        request_token = twitter_api.auth_handler.request_token
        response.set_cookie('request_token', request_token)

    return response
예제 #2
0
def process(request):
    user_identifier = request.POST['user_identifier']
    user_identifier_type = request.POST['user_identifier_type']

    twitter_api = TwitterAPI()

    try:
        response = redirect('result')
        if user_identifier_type == "user_id":
            user = Users.objects.get(user_id=user_identifier)
            response.set_cookie('app_user_id', user_identifier)
        else:
            user = Users.objects.get(user_name=user_identifier)
            response.set_cookie('app_user_name', user_identifier)

        try:
            api = twitter_api.get_api_object(user.user_access_token, user.user_access_secret)
            response.set_cookie('app_access_token', user.user_access_token)
            response.set_cookie('app_access_secret', user.user_access_secret)
        except tweepy.TweepError:
            user.delete()
            print "Authentication failed. Redirecting user to relogin"
            redirect_url = twitter_api.auth_handler.get_authorization_url()
            request_token = twitter_api.auth_handler.request_token
            response = redirect(redirect_url)
            response.set_cookie('request_token', request_token)
            if user_identifier_type == "user_id":
                response.set_cookie('app_user_id', user_identifier)
            else:
                response.set_cookie('app_user_name', user_identifier)

        return response

    except Users.DoesNotExist:
        print "User not found in DB. Will redirect user to fetch verifier token"
        response = redirect(twitter_api.auth_handler.get_authorization_url())
        if user_identifier_type == "user_id":
            response.set_cookie('app_user_id', user_identifier)
        else:
            response.set_cookie('app_user_name', user_identifier)
        request_token = twitter_api.auth_handler.request_token
        response.set_cookie('request_token', request_token)

    return response
예제 #3
0
def result(request):

    twitter_api = TwitterAPI()

    if ('app_access_token'
            in request.COOKIES.keys()) or ('app_access_secret'
                                           in request.COOKIES.keys()):
        api = twitter_api.get_api_object(
            request.COOKIES.get('app_access_token'),
            request.COOKIES.get('app_access_secret'))
        user_id = api.me().id_str
    else:
        api = twitter_api.get_api_object_from_verifier(
            request.GET['oauth_verifier'],
            request.COOKIES.get('request_token'))

        user_access_token = twitter_api.auth_handler.access_token
        user_access_secret = twitter_api.auth_handler.access_token_secret
        user_id = api.me().id_str
        user_name = api.me().screen_name

        new_user_entry = Users(user_name=user_name,
                               user_id=str(user_id),
                               user_access_secret=user_access_secret,
                               user_access_token=user_access_token)
        new_user_entry.save()

    calculated_value = PostTimeCalculator.calculate(user_id, api)

    best_time_to_post = calculated_value['best_time_to_post']
    best_day_to_post = calculated_value['best_day_to_post']

    return render(
        request, 'TimeToPost/result.html', {
            'best_time_to_post': best_time_to_post,
            'best_day_to_post': best_day_to_post
        })
예제 #4
0
def result(request):

    twitter_api = TwitterAPI()

    if ('app_access_token' in request.COOKIES.keys()) or ('app_access_secret' in request.COOKIES.keys()):
        api = twitter_api.get_api_object(request.COOKIES.get('app_access_token'), request.COOKIES.get('app_access_secret'))
        user_id = api.me().id_str
    else:
        api = twitter_api.get_api_object_from_verifier(request.GET['oauth_verifier'], request.COOKIES.get('request_token'))

        user_access_token = twitter_api.auth_handler.access_token
        user_access_secret = twitter_api.auth_handler.access_token_secret
        user_id = api.me().id_str
        user_name = api.me().screen_name

        new_user_entry = Users(user_name=user_name, user_id=str(user_id), user_access_secret=user_access_secret, user_access_token=user_access_token)
        new_user_entry.save()

    calculated_value = PostTimeCalculator.calculate(user_id, api)

    best_time_to_post = calculated_value['best_time_to_post']
    best_day_to_post = calculated_value['best_day_to_post']

    return render(request, 'TimeToPost/result.html', {'best_time_to_post': best_time_to_post, 'best_day_to_post': best_day_to_post})