def save(self, commit=True): """ - Extracts form data - Searches User database for user with same email - Found email, reuse the User object for new Role - Did not find email, create the User object for new Role """ email = self.cleaned_data.get('email') username = self.cleaned_data.get('username') password = self.cleaned_data.get('password') # Create user for new role user = create_user(email, username, password, is_active=True) user.save() print user # Create each role user_account = PostAccount.objects.create( user=user, slug=generate_unique_slug('account','PostAccount') ) user_account.save() print user_account return user_account
def send_confirmation_and_redirect(request, email, task): email_activation_key = utils.make_email_hash(email, task) phone_activation_code = utils.make_verify_phone_code() u = utils.create_user( name=request.POST.get('name'), password=request.POST.get('password'), email=request.POST.get('email'), phone_number=request.POST.get('phone_number'), phone_activation_code=phone_activation_code, email_activation_key=email_activation_key) u.save() utils.send_verification_email(email, task) return http.HttpResponseRedirect('/account/email-sent/')
def sns_callback(request,sns): from account.models import UserProfile from account.utils import create_user, login_by_profile # get user info from sns site if sns == 'weibo': from TaskManager.weibo import APIError, APIClient code = request.GET.get('code') client = APIClient() tokendict = client.request_access_token(code) client.set_access_token(tokendict.access_token, tokendict.expires_in) sns_user = client.users.show.get(uid = tokendict.uid) userinfo = dict( uid = sns_user.id, \ domain = sns_user.domain, \ name = sns_user.name, \ nickname = sns_user.screen_name, \ avatar_url = sns_user.avatar_large or sns_user.profile_image_url, \ homepage = 'http://weibo.com/%s' % sns_user.domain, \ auth_token = tokendict.access_token, \ expired_time = tokendict.expires_in) try: userProfile = UserProfile.objects.get(weibo_id = tokendict.uid) except UserProfile.DoesNotExist: content = create_user(request, userinfo, sns) return render_to_response("snsreg-success.html", content,context_instance = RequestContext(request)) login_by_profile(request,userProfile) return HttpResponseRedirect(reverse('userinfo')) elif sns == 'qq': from TaskManager.qq import APIError, APIClient code = request.GET.get('code') client = APIClient() tokendict = client.request_access_token(code) r = client.request_openid(tokendict.access_token) tokendict.uid = r.openid client.set_access_token(tokendict.access_token, tokendict.uid, tokendict.expires_in) sns_user = client.user.get_info.get(openid = tokendict.uid) sns_user = sns_user.data userinfo = dict( uid = sns_user.openid , \ name = sns_user.name, \ nickname = sns_user.nick, \ avatar_url = '%s/100'% (sns_user.head), \ homepage = sns_user.homepage, \ auth_token = tokendict.access_token, \ expired_time = tokendict.expires_in) try: userProfile = UserProfile.objects.get(qq_id = tokendict.uid) except UserProfile.DoesNotExist: content = create_user(request, userinfo, sns) return render_to_response("snsreg-success.html", content, context_instance = RequestContext(request)) login_by_profile(request, userProfile) return HttpResponseRedirect(reverse('userinfo')) elif sns == 'renren': from TaskManager.renren import APIError, APIClient from account.utils import multi_get_letter code = request.GET.get('code') client = APIClient() tokendict = client.request_access_token(code) sns_user = tokendict.user for avatar in sns_user.avatar: if avatar['type'] == 'large': avatar_url = avatar['url'] break; pass pass userinfo = dict( uid = sns_user.id , \ name = multi_get_letter(sns_user.name), \ nickname = sns_user.name, \ avatar_url = avatar_url, \ homepage = 'http://www.renren.com', \ auth_token = tokendict.access_token, \ expired_time = tokendict.expires_in) try: userProfile = UserProfile.objects.get(renren_id = sns_user.id) except UserProfile.DoesNotExist: content = create_user(request, userinfo, sns) return render_to_response("snsreg-success.html", content,context_instance = RequestContext(request)) login_by_profile(request, userProfile) return HttpResponseRedirect(reverse('userinfo')) else: return HttpResponseRedirect(reverse('sns_notsupport')) pass