Ejemplo n.º 1
0
def get_rate_results(request, lex):
    results = {'success':'False'}
    u = request.user

    rating = lex[u'rating']

    if(lex.has_key(u'status')):
        sid = int(lex[u'status'])
        try: status = Status.objects.get(id=sid)
        except Status.DoesNotExist:
            api = get_authorized_twython(request.session['twitter_tokens'])
            status_json = api.showStatus(id=lex[u'status'])
            status = Status.construct_from_dict(status_json)
    else:
        api = get_authorized_twython(request.session['twitter_tokens'])
        status_json = api.showStatus(id=lex[u'id'])
        status = Status.construct_from_dict(status_json)

    # Show user if tweet delivered from Search API, which does not have correct userid
    # TODO: a more elegant solution
    if not status.user.id:
        api = get_authorized_twython(request.session['twitter_tokens'])
        api_user = api.showUser(screen_name=status.user.screen_name)
        setattr(status, 'user', TwitterUserProfile.construct_from_dict(api_user))

    tp = TwitterUserProfile.objects.get(id=request.session['twitter_tokens']['user_id'])
    prof = u.get_profile()
    status.save_with_user(is_cached=False)
    try:
        details = CachedStatus.objects.get(user=tp.id, status=status.id)
        details.prediction -= 2.0
        details.save()
    except CachedStatus.DoesNotExist: pass
    if rating == 'up':
        rating_int = 1
    elif rating == 'down':
        rating_int = -1
    try:
        r = Rating.objects.get(status=status, user=tp)
    except:
        r = Rating(status=status, user=tp)
        # prof.whale.exp += 1
        # if prof.whale.exp == prof.whale.species.evolution.minExp: prof.whale.species = prof.whale.species.evolution
        # prof.whale.save()
    r.rating = rating_int
    r.save()
    results['success'] = 'True'
    # results['exp'] = prof.whale.exp
    # results['min-exp'] = prof.whale.species.minExp
    # results['max-exp'] = prof.whale.species.evolution.minExp
    # results['species'] = prof.whale.species.img.url
    # results['speciesName'] = prof.whale.species.name

    return results
Ejemplo n.º 2
0
def twitter_return(request, window_type):
    """
    A user gets redirected here after hitting Twitter and authorizing your
    app to use their data.

    This is the view that stores the tokens you want
    for querying data. Pay attention to this.
    """
    # Now that we've got the magic tokens back from Twitter, we need to exchange
    # for permanent ones and store them...

    api = Twython(
        twitter_token = CONSUMER_KEY,
        twitter_secret = CONSUMER_SECRET,
        oauth_token = request.session['request_token']['oauth_token'],
        oauth_token_secret = request.session['request_token']['oauth_token_secret']
    )

    # Retrieve the tokens we want...
    twitter_tokens = api.get_authorized_tokens()

    api = get_authorized_twython(twitter_tokens)

    username = '******'.join([str(twitter_tokens['user_id']), 'twitter'])

    request.session['twitter_tokens'] = twitter_tokens

    # No need to call authorize because of get_authorized_tokens()

    # Probable bug - need to fix when TwitterUserProfile already exists without
    # user having logged in.

    try:
        user = User.objects.get(username=username)
        up = UserProfile.objects.get(user=user)
        twitter_user = TwitterUserProfile.objects.get(user=up)
    except:
        # Create User, UserProfile, TwitterUserProfile
        twitter_user = api.verifyCredentials()
        if 'error' in twitter_user:
            del request.session['access_token']
            del request.session['request_token']
            return HttpResponse("Unable to authenticate you!")
        name = twitter_user['name'].split()
        if(len(name) > 0):
            first_name = name[0]
        else:
            first_name = "Unknown User"
        if(len(name) > 1):
            last_name = name[1]
        else:
            last_name = ""


        user = User(username=username, first_name=first_name, last_name=last_name)
        user.set_unusable_password()
        user.save()


        up = UserProfile(user=user)
        # whale = Whale(species=WhaleSpecies.getDefaultSpecies())
        # whale.save()
        # up.whale = whale
        up.save()
        try:
            tp = TwitterUserProfile.objects.get(user_id=user.id)
        except TwitterUserProfile.DoesNotExist:
            tp = TwitterUserProfile()
        tp.__dict__.update(twitter_user)
        tp.user = up
        tp.oauth_token = twitter_tokens['oauth_token']
        tp.oauth_secret = twitter_tokens['oauth_token_secret']
        tp.active_classifier = DEFAULT_CLASSIFIER
        tp.classifier_version = DEFAULT_CLASSIFIER_VERSION

        tp.save()

    # Hack so don't have to call authenticate
    user.backend = 'twitter.auth.TwitterAuthentication'

    login(request, user)

    if window_type == 'popup':
        return render_to_response("twitter/twitter_return.html", {'twitter_user': twitter_user},
                                  context_instance=RequestContext(request))
    elif window_type == 'api':
        return HttpResponse()
    else:
        return HttpResponseRedirect("/")