blob: 0ba7686cec8e9888075476b53c59f81f7a262c9f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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()
|