def setup(request): if not request.facebook.uid: return HttpResponseRedirect(reverse('auth_login')+"?next="+request.GET.get('next','')) if request.method == "POST": if request.POST.get('next',False) and request.POST['next']: next = request.POST['next'] else: next = getattr(settings,'LOGIN_REDIRECT_URL','/') profile = FacebookProfile(facebook_id=request.facebook.uid) if request.POST.get('facebook_only',False): user = User(username=request.facebook.uid, password=sha.new(str(random.random())).hexdigest()[:8], email=profile.email) user.save() profile.user = user profile.save() logging.info("FBC: Added user and profile for %s!" % request.facebook.uid) user = authenticate(request=request) login(request, user) return HttpResponseRedirect(next) form = AuthenticationForm(data=request.POST) if form.is_valid(): user = form.get_user() logging.debug("FBC: Trying to setup FB: %s, %s" % (user,profile)) if user is not None and user.is_active: profile.user = user profile.save() logging.info("FBC: Attached facebook profile %s to user %s!" % (profile.facebook_id,user)) login(request, user) return HttpResponseRedirect(next) else: user = User() user.facebook_profile = profile elif request.user.is_authenticated(): profile = FacebookProfile(facebook_id=request.facebook.uid) profile.user = request.user profile.save() logging.info("FBC: Attached facebook profile %s to user %s!" % (profile.facebook_id,profile.user.id)) return HttpResponseRedirect(next) else: user = User() user.facebook_profile = FacebookProfile(facebook_id=request.facebook.uid) next = request.GET.get('next','') form = AuthenticationForm(request) return render_to_response( 'facebook/setup.html', {"user":user, "form":form, "next":next}, context_instance=RequestContext(request))
def setup(request): if debugging: from datetime import datetime print str(datetime.now()) +" debugging facebook problems" if not request.facebook.uid: if debugging: print "not request.facebook.uid, returning" return HttpResponseRedirect(reverse('login')+"?next="+request.GET.get('next','')) if request.method == "POST": if debugging: print "request method was post" if request.POST.get('next',False) and request.POST['next']: next = request.POST['next'] else: next = getattr(settings,'LOGIN_REDIRECT_URL','/') try: profile = FacebookProfile.objects.get(pk=request.facebook.uid) if debugging: print "Found old profile for "+request.facebook.uid except: profile = FacebookProfile(facebook_id=request.facebook.uid) if debugging: print "Created new profile for " + request.facebook.uid if debugging: print "Profile for uid " +str(request.facebook.uid) + ": " + str (profile) if request.POST.get('facebook_only',False): if debugging: print "request post facebook only is false" try: user = User.objects.get(username__exact=request.facebook.uid) except: user = User(username=request.facebook.uid, password=sha.new(str(random.random())).hexdigest()[:8], email=profile.email) user.save() if debugging: print "saved user " +str(user) profile.user = user profile.save() logging.info("FBC: Added user and profile for %s!" % request.facebook.uid) user = authenticate(request=request) if debugging: print "authenticated user " +str(user) login(request, user) if debugging: print "Logged in user, returning" return HttpResponseRedirect(next) if debugging: print "request facebook only true" form = AuthenticationForm(data=request.POST) if form.is_valid(): if debugging: print "Authentication form valid" user = form.get_user() if debugging: print "get user from form" logging.debug("FBC: Trying to setup FB: %s, %s" % (user,profile)) if user is not None and user.is_active: if debugging: print "User exists" profile.user = user profile.save() logging.info("FBC: Attached facebook profile %s to user %s!" % (profile.facebook_id,user)) login(request, user) if debugging: print "Attached profile, returning" return HttpResponseRedirect(next) else: if debugging: print "Form was not valid, doing something with a user" user = User() user.facebook_profile = profile elif request.user.is_authenticated(): if debugging: print "User was already authenticated, so do something and return" profile = FacebookProfile(facebook_id=request.facebook.uid) profile.user = request.user profile.save() logging.info("FBC: Attached facebook profile %s to user %s!" % (profile.facebook_id,user)) return HttpResponseRedirect(next) else: if debugging: print "No post data, no authentication done, doing a user and then what?" user = User() user.facebook_profile = FacebookProfile(facebook_id=request.facebook.uid) # print "I added user.save() here:" # user.save() next = request.GET.get('next','') form = AuthenticationForm(request) if debugging: print "Adding authentication form here" if debugging: print "Returning form with user: >"+str(user) + "< form: "+ str(form) + " next: "+str(next) return render_to_response( 'facebook/setup.html', {"user":user, "form":form, "next":next}, context_instance=RequestContext(request))