Registro múltiple, formularios de registro con django-allauth
La aplicación en la que estoy trabajando necesita un inicio de sesión por separado para 2 tipos diferentes de usuarios. Necesitamos "clientes" y propietarios de "negocios" para poder registrarse.
Para el propietario del "negocio", todo lo que necesito hacer es establecer el valor booleanouser.is_business
aTrue
He usadoACCOUNT_SIGNUP_FORM_CLASS
con una clase separada que establece lo booleano en verdadero y que funciona como un encanto. Pero entonces el inicio de sesión del cliente ya no funciona.
¿Hay alguna manera de crear una vista de registro separada para un usuario diferente?
He probado lo siguiente
class BusinessUserRegistrationView(FormView):
form_class = BusinessSignupForm
template_name = 'allauth/account/signup.html'
view_name = 'organisersignup'
success_url = reverse_lazy(view_name)
organisersignup = BusinessUserRegistrationView.as_view()
Y la forma
class BusinessSignupForm(BaseSignupForm):
password1 = SetPasswordField(label=_("Password"))
password2 = PasswordField(label=_("Password (again)"))
confirmation_key = forms.CharField(max_length=40,
required=False,
widget=forms.HiddenInput())
def __init__(self, *args, **kwargs):
super(BusinessSignupForm, self).__init__(*args, **kwargs)
if not app_settings.SIGNUP_PASSWORD_VERIFICATION:
del self.fields["password2"]
def clean(self):
super(BusinessSignupForm, self).clean()
if app_settings.SIGNUP_PASSWORD_VERIFICATION \
and "password1" in self.cleaned_data \
and "password2" in self.cleaned_data:
if self.cleaned_data["password1"] \
!= self.cleaned_data["password2"]:
raise forms.ValidationError(_("You must type the same password"
" each time."))
return self.cleaned_data
def save(self, request):
adapter = get_adapter()
user = adapter.new_user(request)
user.is_business = True
adapter.save_user(request, user, self)
self.custom_signup(request, user)
setup_user_email(request, user, [])
return user
Y en las urls.py
url(r'^organiser/El problema es que de alguna manera, el booleano is_business nunca se establece en True. El de muestra, puedo guardar, pero lo que se guarda nunca es un negocio, siempre es un cliente. BusinessSignupForm es una copia de SignUpForm que se encuentra en los formularios de todos.
¿Qué estoy haciendo mal?
, 'authentication.views.organisersignup', name='organisersignup'),
El problema es que de alguna manera, el booleano is_business nunca se establece en True. El de muestra, puedo guardar, pero lo que se guarda nunca es un negocio, siempre es un cliente. BusinessSignupForm es una copia de SignUpForm que se encuentra en los formularios de todos.
¿Qué estoy haciendo mal?