def collaborator_registration(request, sede_url): errors = [] user_form = UserRegistrationForm(request.POST or None) if request.POST: collaborator_form = CollaboratorRegistrationForm(request.POST) forms = [user_form, collaborator_form] if user_form.is_valid(): user = user_form.save() try: if collaborator_form.is_valid(): collaborator = collaborator_form.save() user = add_collaborator_perms(user) user.save() collaborator.user = user collaborator.save() messages.success(request, _("You've been registered successfully!")) return HttpResponseRedirect('/sede/' + sede_url) except Exception: User.delete(user) messages.error(request, _("You haven't been registered successfully (check form errors)")) errors = get_forms_errors(forms) else: sede = Sede.objects.get(url=sede_url) collaborator = Collaborator(sede=sede) collaborator_form = CollaboratorRegistrationForm(instance=collaborator) forms = [user_form, collaborator_form] return render(request, 'registration/collaborator-registration.html', update_sede_info(sede_url, {'forms': forms, 'errors': errors, 'multipart': False}))
def become_installer(request, sede_url): forms = [] errors = [] installer = None if request.POST: collaborator = Collaborator.objects.get(user=request.user) installer_form = InstallerRegistrationFromCollaboratorForm(request.POST, instance=Installer(collaborator=collaborator)) forms = [installer_form] if installer_form.is_valid(): try: installer = installer_form.save() collaborator.user = add_collaborator_perms(collaborator.user) collaborator.save() installer.save() messages.success(request, _("You've became an installer!")) return HttpResponseRedirect('/sede/' + sede_url) except Exception as e: if installer is not None: Installer.delete(installer) messages.error(request, _("You not became an installer (check form errors)")) errors = get_forms_errors(forms) else: installer_form = InstallerRegistrationFromCollaboratorForm(instance=Installer()) forms = [installer_form] return render(request, 'registration/become_installer.html', update_sede_info(sede_url, {'forms': forms, 'errors': errors, 'multipart': False}))