def signup(request, **kwargs): form_class = kwargs.pop("form_class", SignupForm) template_name = kwargs.pop("template_name", "account/signup.html") redirect_field_name = kwargs.pop("redirect_field_name", "next") success_url = kwargs.pop("success_url", None) group, bridge = group_and_bridge(kwargs) ctx = group_context(group, bridge) ctx['invite_parameters'] = get_invite_parameters(request) if success_url is None: if hasattr(settings, "SIGNUP_REDIRECT_URLNAME"): fallback_url = reverse(settings.SIGNUP_REDIRECT_URLNAME) else: if hasattr(settings, "LOGIN_REDIRECT_URLNAME"): fallback_url = reverse(settings.LOGIN_REDIRECT_URLNAME) else: fallback_url = settings.LOGIN_REDIRECT_URL success_url = get_default_redirect(request, fallback_url, redirect_field_name) if request.method == "POST": form = form_class(request.POST, request.FILES, group=group) if form.is_valid(): user = form.save(request=request) accept_invite(request, user) if settings.ACCOUNT_EMAIL_VERIFICATION: ctx.update({ "email": form.cleaned_data["email"], "success_url": success_url, }) ctx = RequestContext(request, ctx) return render_to_response("account/verification_sent.html", ctx) else: form.login(request, user) messages.add_message( request, messages.SUCCESS, ugettext("Successfully logged in as %(user)s.") % {"user": user_display(user)}) return HttpResponseRedirect(success_url) else: form = form_class(group=group, initial={ 'username': ugettext('Username'), 'email': ugettext('Email address') }) ctx.update({ "form": form, "redirect_field_name": redirect_field_name, "redirect_field_value": request.REQUEST.get(redirect_field_name), }) return render_to_response(template_name, RequestContext(request, ctx))
def test_invite_acceptance(self): inv = EmailInvite.objects.create(user=self.user, email='*****@*****.**') user = User.objects.create(username='******', email='*****@*****.**') req = self.factory.get(inv.get_absolute_url()) accept_invite(req, user) inv = EmailInvite.objects.get(pk=inv.pk) self.assertEqual(inv.accepted_user, user) #assert that users follow each other by default self.assertEqual(follow.get_user_followers(self.user.pk),[user.pk]) self.assertEqual(follow.get_user_followers(user.pk),[self.user.pk])
def complete_process(request, backend, *args, **kwargs): """Authentication complete process""" # pop redirect value before the session is trashed on login() redirect_value = request.session.get(REDIRECT_FIELD_NAME, "") user = auth_complete(request, backend, *args, **kwargs) inv_code = request.session.get("code", "") inv_type = request.session.get("inv_type", "") if isinstance(user, HttpResponse): return user if not user and request.user.is_authenticated(): return HttpResponseRedirect(redirect_value) if user: if getattr(user, "is_active", True): login(request, user) request.session["code"] = inv_code request.session["inv_type"] = inv_type from invite_friends.helpers import accept_invite accept_invite(request, user) # user.social_user is the used UserSocialAuth instance defined # in authenticate process social_user = user.social_user if setting("SOCIAL_AUTH_SESSION_EXPIRATION", True): # Set session expiration date if present and not disabled by # setting. Use last social-auth instance for current provider, # users can associate several accounts with a same provider. if social_user.expiration_delta(): request.session.set_expiry(social_user.expiration_delta()) # store last login backend name in session key = setting("SOCIAL_AUTH_LAST_LOGIN", "social_auth_last_login_backend") request.session[key] = social_user.provider # Remove possible redirect URL from session, if this is a new # account, send him to the new-users-page if defined. new_user_redirect = backend_setting(backend, "SOCIAL_AUTH_NEW_USER_REDIRECT_URL") if new_user_redirect and getattr(user, "is_new", False): url = new_user_redirect else: url = redirect_value or backend_setting(backend, "SOCIAL_AUTH_LOGIN_REDIRECT_URL") or DEFAULT_REDIRECT else: url = backend_setting(backend, "SOCIAL_AUTH_INACTIVE_USER_URL", LOGIN_ERROR_URL) else: msg = setting("LOGIN_ERROR_MESSAGE", None) if msg: messages.error(request, msg) url = backend_setting(backend, "LOGIN_ERROR_URL", LOGIN_ERROR_URL) return HttpResponseRedirect(url)
def test_invite_acceptance(self): inv = EmailInvite.objects.create(user=self.user, email='*****@*****.**') user = User.objects.create(username='******', email='*****@*****.**') req = self.factory.get(inv.get_absolute_url()) accept_invite(req, user) inv = EmailInvite.objects.get(pk=inv.pk) self.assertEqual(inv.accepted_user, user) #assert that users follow each other by default self.assertEqual(follow.get_user_followers(self.user.pk), [user.pk]) self.assertEqual(follow.get_user_followers(user.pk), [self.user.pk])
def signup(request, **kwargs): form_class = kwargs.pop("form_class", SignupForm) template_name = kwargs.pop("template_name", "account/signup.html") redirect_field_name = kwargs.pop("redirect_field_name", "next") success_url = kwargs.pop("success_url", None) group, bridge = group_and_bridge(kwargs) ctx = group_context(group, bridge) ctx['invite_parameters'] = get_invite_parameters(request) if success_url is None: if hasattr(settings, "SIGNUP_REDIRECT_URLNAME"): fallback_url = reverse(settings.SIGNUP_REDIRECT_URLNAME) else: if hasattr(settings, "LOGIN_REDIRECT_URLNAME"): fallback_url = reverse(settings.LOGIN_REDIRECT_URLNAME) else: fallback_url = settings.LOGIN_REDIRECT_URL success_url = get_default_redirect(request, fallback_url, redirect_field_name) if request.method == "POST": form = form_class(request.POST, request.FILES, group=group) if form.is_valid(): user = form.save(request=request) accept_invite(request, user) if settings.ACCOUNT_EMAIL_VERIFICATION: ctx.update({ "email": form.cleaned_data["email"], "success_url": success_url, }) ctx = RequestContext(request, ctx) return render_to_response("account/verification_sent.html", ctx) else: form.login(request, user) messages.add_message(request, messages.SUCCESS, ugettext("Successfully logged in as %(user)s.") % { "user": user_display(user) } ) return HttpResponseRedirect(success_url) else: form = form_class(group=group, initial={'username': ugettext('Username'), 'email': ugettext('Email address')}) ctx.update({ "form": form, "redirect_field_name": redirect_field_name, "redirect_field_value": request.REQUEST.get(redirect_field_name), }) return render_to_response(template_name, RequestContext(request, ctx))