from django.shortcuts import render # Create your views here. from .oauthmanager import WBOauthManager, GoogleOauthManager, get_manager_by_type from django.conf import settings from django.http import HttpResponse, HttpResponseRedirect from django.contrib.auth import get_user_model from .models import OAuthUser from django.contrib.auth import login from django.shortcuts import get_object_or_404 from django.views.generic import FormView, RedirectView from oauth.forms import RequireEmailForm from django.core.urlresolvers import reverse def authorize(request): manager = None type = request.GET.get('type', None) if not type: return HttpResponseRedirect('/') manager = get_manager_by_type(type) if not manager: return HttpResponseRedirect('/') code = request.GET.get('code', None) rsp = manager.get_access_token_by_code(code) if not rsp: return HttpResponseRedirect(manager.get_authorization_url()) user = manager.get_oauth_userinfo() author = None if user: email = user.email email = None if email: author = get_user_model().objects.get(email=email) if not author: author = get_user_model().objects.create_user(username=user.nikename, email=email) user.author = author user.save() login(request, author) return HttpResponseRedirect('/') if not email: author = get_user_model().objects.create_user(username=user.nikename) user.author = author user.save() url = reverse('oauth:require_email', kwargs= { 'oauthid': user.id }) print(url) return HttpResponseRedirect(url) """ def require_email(request, oauthid): oauthuser = get_object_or_404(OAuthUser, pk=oauthid) if oauthuser.email: return HttpResponseRedirect('/') """ class RequireEmailView(FormView): form_class = RequireEmailForm template_name = 'oauth/require_email.html' def get(self, request, *args, **kwargs): oauthid = self.kwargs['oauthid'] oauthuser = get_object_or_404(OAuthUser, pk=oauthid) if oauthuser.email: pass # return HttpResponseRedirect('/') return super(RequireEmailView, self).get(request, *args, **kwargs) def get_initial(self): oauthid = self.kwargs['oauthid'] return { 'email': '', 'oauthid': oauthid } def get_context_data(self, **kwargs): oauthid = self.kwargs['oauthid'] oauthuser = get_object_or_404(OAuthUser, pk=oauthid) if oauthuser.picture: kwargs['picture'] = oauthuser.picture return super(RequireEmailView, self).get_context_data(**kwargs) def form_valid(self, form): email = form.cleaned_data['email'] oauthid = form.cleaned_data['oauthid'] oauthuser = get_object_or_404(OAuthUser, pk=oauthid) from DjangoBlog.utils import send_email url = '123' content = """
请点击下面链接绑定您的邮箱
{url} 再次感谢您!