def _add_association(self, request, access_token): """ Adds an association for `access_token` to `request.user`. Returns an HttpResponse. """ success_url = get_success_url(request=request) if success_url is None: success_url = login_redirect_url() try: self._associate(request, access_token) except UserAlreadyLinked: return HttpResponseRedirect( update_qs(success_url, { 'error': 'user_already_linked', 'user': request.user.username })) except TwitterAlreadyLinked: userinfo = cached_user_info(request, access_token) return HttpResponseRedirect( update_qs( success_url, { 'error': 'twitter_already_linked', 'user': userinfo.screen_name })) return HttpResponseRedirect(success_url)
def _add_association(self, request, access_token): """ Adds an association for `access_token` to `request.user`. Returns an HttpResponse. """ success_url = get_success_url(request=request) if success_url is None: success_url = login_redirect_url() try: self._associate(request, access_token) except UserAlreadyLinked: return HttpResponseRedirect( update_qs(success_url, {'error': 'user_already_linked', 'user': request.user.username}) ) except TwitterAlreadyLinked: userinfo = cached_user_info(request, access_token) return HttpResponseRedirect( update_qs(success_url, {'error': 'twitter_already_linked', 'user': userinfo.screen_name}) ) return HttpResponseRedirect(success_url)
def _login_and_redirect(self, request, user): """ Login `user` with `access_token` and redirects to `success_url`. `success_url` was the URL provided to OAuthTwitter.signin(). If the `request.user` is already logged in, don't clobber the login with `user`. The `request.user` has to log out first. """ if user is None: return self._redirect_to_login(request=request) if request.user.is_anonymous(): # Login self._login(request, user) # Update the access_token twitter = user.twitter save = False if twitter.update_access_token(request.twitter_access_token): save = True if twitter.update_userinfo(request.twitter_userinfo): save = True if save: twitter.save() # Redirect success_url = get_success_url(request) if success_url is not None: return HttpResponseRedirect(success_url) return self._redirect_to_home(request=request)