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
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("/")