Revision 1c4e8364 snf-astakos-app/astakos/im/target/twitter.py

b/snf-astakos-app/astakos/im/target/twitter.py
63 63

  
64 64
import oauth2 as oauth
65 65
import cgi
66
import urllib
66 67

  
67 68
consumer = oauth.Consumer(settings.TWITTER_TOKEN, settings.TWITTER_SECRET)
68 69
client = oauth.Client(consumer)
......
71 72
access_token_url = 'http://twitter.com/oauth/access_token'
72 73
authenticate_url = 'http://twitter.com/oauth/authenticate'
73 74

  
74

  
75 75
@requires_auth_provider('twitter', login=True)
76 76
@require_http_methods(["GET", "POST"])
77 77
def login(request):
78
    force_login = request.GET.get('force_login',
79
                                  settings.TWITTER_AUTH_FORCE_LOGIN)
78 80
    resp, content = client.request(request_token_url, "GET")
79 81
    if resp['status'] != '200':
80 82
        messages.error(request, 'Invalid Twitter response')
81 83
        return HttpResponseRedirect(reverse('edit_profile'))
82 84

  
83 85
    request.session['request_token'] = dict(cgi.parse_qsl(content))
84
    url = "%s?oauth_token=%s" % (authenticate_url,
85
        request.session['request_token']['oauth_token'])
86
    params = {
87
        'oauth_token': request.session['request_token']['oauth_token'],
88
    }
89
    if force_login:
90
        params['force_login'] = 1
91

  
92
    url = "%s?%s" % (authenticate_url, urllib.urlencode(params))
86 93

  
87 94
    return HttpResponseRedirect(url)
88 95

  
......
95 102
    extra_context={}
96 103
):
97 104

  
105
    if request.GET.get('denied'):
106
        return HttpResponseRedirect(reverse('edit_profile'))
107

  
98 108
    if not 'request_token' in request.session:
99 109
        messages.error(request, 'Twitter handshake failed')
100 110
        return HttpResponseRedirect(reverse('edit_profile'))
......
107 117
    resp, content = client.request(access_token_url, "GET")
108 118
    if resp['status'] != '200':
109 119
        try:
110
          del request.session['request_token']
120
            del request.session['request_token']
111 121
        except:
112
          pass
122
            pass
113 123
        messages.error(request, 'Invalid Twitter response')
114 124
        return HttpResponseRedirect(reverse('edit_profile'))
115 125

  

Also available in: Unified diff