Revision 9d20fe23 snf-astakos-app/astakos/im/target/google.py

b/snf-astakos-app/astakos/im/target/google.py
73 73
OAUTH_CONSUMER_KEY = settings.GOOGLE_CLIENT_ID
74 74
OAUTH_CONSUMER_SECRET = settings.GOOGLE_SECRET
75 75

  
76
consumer = oauth.Consumer(key=OAUTH_CONSUMER_KEY, secret=OAUTH_CONSUMER_SECRET)
77
client = oauth.Client(consumer)
78

  
79 76
token_scope = 'https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email'
80 77
authenticate_url = 'https://accounts.google.com/o/oauth2/auth'
81 78
access_token_url = 'https://www.googleapis.com/oauth2/v1/tokeninfo'
......
84 81

  
85 82
def get_redirect_uri():
86 83
    return "%s%s" % (settings.BASEURL,
87
                   reverse('astakos.im.target.google.authenticated'))
84
                     reverse('astakos.im.target.google.authenticated'))
85

  
88 86

  
89
@requires_auth_provider('google', login=True)
87
@requires_auth_provider('google')
90 88
@require_http_methods(["GET", "POST"])
91 89
def login(request):
92 90
    init_third_party_session(request)
......
96 94
        'redirect_uri': get_redirect_uri(),
97 95
        'client_id': settings.GOOGLE_CLIENT_ID
98 96
    }
99
    force_login = request.GET.get('force_login', False)
97
    force_login = request.GET.get('force_login', request.GET.get('from_login',
98
                                                                 True))
100 99
    if force_login:
101 100
        params['approval_prompt'] = 'force'
102 101

  
......
110 109
    return HttpResponseRedirect(url)
111 110

  
112 111

  
113
@requires_auth_provider('google', login=True)
112
@requires_auth_provider('google')
114 113
@require_http_methods(["GET", "POST"])
115 114
def authenticated(
116 115
    request,
......
123 122

  
124 123
    # TODO: Handle errors, e.g. error=access_denied
125 124
    try:
125
        consumer = oauth.Consumer(key=OAUTH_CONSUMER_KEY,
126
                                  secret=OAUTH_CONSUMER_SECRET)
127
        client = oauth.Client(consumer)
128

  
126 129
        code = request.GET.get('code', None)
127 130
        params = {
128 131
            'code': code,
......
136 139
                                       body=urllib.urlencode(params))
137 140
        token = json.loads(content).get('access_token', None)
138 141

  
139
        resp, content = client.request("%s?access_token=%s" % (access_token_url,
140
                                                               token) , "GET")
142
        resp, content = client.request("%s?access_token=%s" %
143
                                       (access_token_url, token), "GET")
141 144
        access_token_data = json.loads(content)
142
    except Exception, e:
143
        messages.error(request, 'Invalid Google response. Please contact support')
145
    except Exception:
146
        messages.error(request, _('Invalid Google response. Please '
147
                                  'contact support'))
144 148
        return HttpResponseRedirect(reverse('edit_profile'))
145 149

  
146 150
    if not access_token_data.get('user_id', None):
147
        messages.error(request, 'Invalid Google response. Please contact support')
151
        messages.error(request, _('Invalid Google response. Please contact '
152
                                  ' support'))
148 153
        return HttpResponseRedirect(reverse('edit_profile'))
149 154

  
150 155
    userid = access_token_data['user_id']
151
    username = access_token_data.get('email', None)
152 156
    provider_info = access_token_data
153 157
    affiliation = 'Google.com'
154 158

  
155 159
    try:
156 160
        return handle_third_party_login(request, 'google', userid,
157 161
                                        provider_info, affiliation)
158
    except AstakosUser.DoesNotExist, e:
162
    except AstakosUser.DoesNotExist:
159 163
        third_party_key = get_pending_key(request)
160 164
        user_info = {'affiliation': affiliation}
161 165
        return handle_third_party_signup(request, userid, 'google',
......
164 168
                                         user_info,
165 169
                                         template,
166 170
                                         extra_context)
167

  

Also available in: Unified diff