summaryrefslogtreecommitdiffstats
path: root/askbot/views/sharing.py
diff options
context:
space:
mode:
Diffstat (limited to 'askbot/views/sharing.py')
-rw-r--r--askbot/views/sharing.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/askbot/views/sharing.py b/askbot/views/sharing.py
new file mode 100644
index 00000000..0ba7686c
--- /dev/null
+++ b/askbot/views/sharing.py
@@ -0,0 +1,53 @@
+from askbot import const
+from askbot.deps.django_authopenid.util import OAuthConnection
+from askbot.utils import decorators
+from django.contrib.auth.decorators import login_required
+from django.core.urlresolvers import reverse
+from django.http import HttpResponseRedirect
+from django.views.decorators import csrf
+from django.utils import simplejson
+
+@login_required
+def start_sharing_twitter(request):
+ #start oauth process to authorize tweeting
+ #on behalf of user
+ callback_url = reverse('save_twitter_access_token')
+ connection = OAuthConnection('twitter', callback_url=callback_url)
+ connection.start()
+ request.session['oauth_token'] = connection.get_token()
+ oauth_url = connection.get_auth_url(login_only=False)
+ return HttpResponseRedirect(oauth_url)
+
+@login_required
+def save_twitter_access_token(request):
+ oauth_token = request.GET['oauth_token']
+ session_oauth_token = request.session['oauth_token']
+ assert(oauth_token == session_oauth_token['oauth_token'])
+ oauth = OAuthConnection('twitter')
+ access_token_data = oauth.get_access_token(
+ oauth_token = session_oauth_token,
+ oauth_verifier = request.GET['oauth_verifier']
+ )
+ #save the access token
+ request.user.twitter_access_token = simplejson.dumps(access_token_data)
+ request.user.twitter_handle = access_token_data['screen_name']
+ if request.user.social_sharing_mode == const.SHARE_NOTHING:
+ request.user.social_sharing_mode = const.SHARE_MY_POSTS
+ request.user.save()
+ #todo: set up user associaton for the login via twitter
+ #todo: save message that user can also login via twitter
+ return HttpResponseRedirect(request.user.get_profile_url())
+
+@csrf.csrf_exempt
+@decorators.ajax_only
+@decorators.post_only
+def change_social_sharing_mode(request):
+ mode = request.POST['mode']
+ if mode == 'share-nothing':
+ request.user.social_sharing_mode = const.SHARE_NOTHING
+ elif mode == 'share-my-posts':
+ request.user.social_sharing_mode = const.SHARE_MY_POSTS
+ else:
+ assert(mode == 'share-everything')
+ request.user.social_sharing_mode = const.SHARE_EVERYTHING
+ request.user.save()