def assoc_with_curr_user(request): code = request.GET.get('code', '') if code: try: uid = fb_utils.get_userid(code, assoc_with_curr_user) matches = FBProfile.objects.filter(fb_userid=uid).count() if matches: messages.error(request, "This facebook is already " +\ "associated with an account on LitHub") return redirect('bookswap.views.my_account') try: profile = FBProfile.objects.get(user=request.user) except ObjectDoesNotExist: profile = FBProfile(user=request.user) profile.fb_userid = uid profile.save() messages.success(request, "LitHub now recognizes your " +\ "facebook account.") return redirect('bookswap.views.my_account') except ValueError: return render(request, "fbconnect/code_error.html") else: messages.error(request, "There was an error getting your " +\ "information from facebook.") return redirect('django.contrib.auth.views.login')
def register(request, code): try: acc_tok = fb_utils.get_access_token(code) networks = fb_utils.get_networks(acc_tok) k = False for network in networks: if str(network['nid']) == '16777626': k = True break if not k: messages.error(request, "You need to be in the Kalamazoo "+\ "College network to register using facebook.") return redirect('registration.views.register') form = FBRegisterForm() if request.method == 'POST': form = FBRegisterForm(request.POST) if form.is_valid(): user_info = fb_utils.get_basic_info(acc_tok) new_user = User.objects.create_user( form.cleaned_data['username'], user_info['email']) new_user.first_name = user_info['first_name'] new_user.last_name = user_info['last_name'] new_user.is_active = True new_user.save() fbp = FBProfile(user=new_user, fb_userid=user_info['id']) fbp.save() messages.success(request, "Your account has been created!") return redirect('bookswap.views.my_account') return render(request, "fbconnect/register.html", {'form':form}) except ValueError: return render(request, "fbconnect/code_error.html")
def assoc_with_curr_user(request): try: fb = fb_utils.FBConnect(request.GET.get('code', ''), assoc_with_curr_user) uid = fb.userid matches = FBProfile.objects.filter(fb_userid=uid).count() if matches: messages.error(request, "Your facebook account is already " +\ "associated with another account on LitHub") return redirect('bookswap.views.my_account') try: profile = FBProfile.objects.get(user=request.user) except ObjectDoesNotExist: profile = FBProfile(user=request.user) profile.fb_userid = uid profile.save() messages.success(request, "LitHub now recognizes your " +\ "facebook account.") except ValueError: messages.error(request, "There was an error getting your " +\ "information from facebook.") return redirect('bookswap.views.my_account')
def register(request, access_token): try: fb = fb_utils.FBConnect(access_token=access_token) user = authenticate(fb_uid=fb.userid) if user: return redirect("bookswap.views.my_account") networks = fb.networks k = False for network in networks: if str(network['nid']) == '16777626': k = True break if k: createform = FBRegisterForm() else: createform = FBRegisterVerifyForm() loginform = AuthenticationForm() if request.method == 'POST': action = request.POST.get('action', '') if k and action == "createnew": createform = FBRegisterForm(request.POST) if createform.is_valid(): user_info = fb.basic_info new_user = User.objects.create_user( createform.cleaned_data['username'], user_info['email']) new_user.first_name = user_info['first_name'] new_user.last_name = user_info['last_name'] new_user.is_active = True new_user.set_unusable_password() new_user.save() fbp = FBProfile(user=new_user, fb_userid=user_info['id']) fbp.save() messages.success(request, "Your account has been created!") user = authenticate(fb_uid=fbp.fb_userid) request.session['fb_at'] = fb.access_token if user and user.is_active: login(request, user) return redirect('bookswap.views.my_account') if (not k) and action == "createnew": createform = FBRegisterVerifyForm(request.POST) if createform.is_valid(): from bookswap.kregform import KzooRegistrationBackend user_info = fb.basic_info backend = KzooRegistrationBackend() new_user = backend.register(request, username=createform.cleaned_data['username'], email=createform.cleaned_data['email'], password1=None, first_name=user_info['first_name'], last_name=user_info['last_name']) new_user.set_unusable_password() new_user.save() fbp = FBProfile(user=new_user, fb_userid=user_info['id']) fbp.save() messages.success(request, "An email has been sent to your " "account. Once you confirm your account, you will be " "able to log in.") return redirect('bookswap.views.my_account') elif action == "associate": loginform = AuthenticationForm(data=request.POST) if loginform.is_valid(): user = loginform.get_user() login(request, user) try: user.fbprofile messages.error(request, "You are already connected to " "a facebook account. If you are trying to connect " "a different facebook account, please dissociate " "your LitHub and facebook accounts.") return redirect('bookswap.views.my_account') except ObjectDoesNotExist: pass fbp = FBProfile(user=user,fb_userid=fb.basic_info['id']) fbp.save() request.session['fb_at'] = fb.access_token messages.success(request, "Your account is now connected " "to your Facebook account!") return redirect('bookswap.views.my_account') template = {True:"register.html", False:"register_verify.html"} return render(request, "fbconnect/%s"%template[k], {'createform':createform, "loginform":loginform}) except ValueError: return render(request, "fbconnect/code_error.html")