# This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later.
# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
#
-import cgi
+from urllib.parse import parse_qsl
from django.contrib.auth.decorators import login_required
from django.urls import reverse
from django.http import HttpResponseRedirect, HttpResponse
+from django.views.decorators.http import require_POST
import oauth2
from apiclient.models import OAuthConnection
if resp['status'] != '200':
raise Exception("Invalid response %s." % resp['status'])
- request_token = dict(cgi.parse_qsl(content))
+ request_token = dict(parse_qsl(content.decode('utf-8')))
conn = OAuthConnection.get(request.user, beta)
# this might reset existing auth!
token.set_verifier(oauth_verifier)
client = oauth2.Client(wl_consumer, token)
_resp, content = client.request(WL_ACCESS_TOKEN_URL if not beta else BETA_ACCESS_TOKEN_URL, method="POST")
- access_token = dict(cgi.parse_qsl(content))
+ access_token = dict(parse_qsl(content.decode('utf-8')))
conn.access = True
conn.token = access_token['oauth_token']
conn.token_secret = access_token['oauth_token_secret']
conn.save()
- return HttpResponseRedirect('/')
+ return HttpResponseRedirect(reverse('documents_user'))
+
+
+@login_required
+@require_POST
+def disconnect(request):
+ request.user.oauthconnection_set.filter(beta=False).delete()
+ return HttpResponseRedirect(reverse('documents_user'))