def core_registration_view(request): vars = page_wizard_vars(request) next = vars['next'] if request.user.is_authenticated(): return redirect(next) person_form = initialize_form(PersonForm, request, prefix='person') registration_form = initialize_form(RegistrationForm, request, prefix='registration') terms_and_conditions_form = initialize_form(TermsAndConditionsForm, request, prefix='terms') if request.method == 'POST': if person_form.is_valid() and registration_form.is_valid() and terms_and_conditions_form.is_valid(): username = registration_form.cleaned_data['username'] password = registration_form.cleaned_data['password'] person = person_form.save(commit=False) user = User( username=username, is_active=True, is_staff=False, is_superuser=False, ) user.set_password(password) user.save() person.user = user person.save() person.setup_email_verification(request) if 'ipa_integration' in settings.INSTALLED_APPS: from ipa_integration.utils import create_user create_user(user, password) user = authenticate(username=username, password=password) response = do_login(request, user=user, password=password, next=next) messages.success(request, u'Käyttäjätunnuksesi on luotu. Tervetuloa {kompassiin}!' .format(kompassiin=settings.KOMPASSI_INSTALLATION_NAME_ILLATIVE) ) return response else: messages.error(request, u'Ole hyvä ja tarkista lomake.') vars.update( next=next, person_form=person_form, registration_form=registration_form, terms_and_conditions_form=terms_and_conditions_form, login_page=True ) return render(request, 'core_registration_view.jade', vars)
def respond_with_new_user(self, request, next_url, desuprofile): User = get_user_model() password = create_temporary_password() # Kompassi has stricter rules for username validation than Desusite username = desuprofile.username.lower() try: valid_username(username) except DjangoValidationError: username = None with transaction.atomic(): try: User.objects.get(username=username) except User.DoesNotExist: # Username is free pass else: # Username clash with an existing account, use safe username username = None if username is None: username = "******".format(id=desuprofile.id) user = User( username=username, is_active=True, is_staff=False, is_superuser=False, ) user.set_password(password) user.save() person = Person( first_name=desuprofile.first_name, surname=desuprofile.last_name, nick=desuprofile.nickname, email=desuprofile.email, phone=desuprofile.phone, birth_date=datetime.strptime(desuprofile.birth_date, '%Y-%m-%d').date() if desuprofile.birth_date else None, notes=u'Luotu Desuprofiilista', user=user, ) person.save() connection = Connection( id=int(desuprofile.id), desuprofile_username=desuprofile.username, user=user, ) connection.save() person.setup_email_verification(request) if 'ipa_integration' in settings.INSTALLED_APPS: from ipa_integration.utils import create_user create_user(user, password) messages.success(request, u'Sinulle on luotu Desuprofiiliisi liitetty Kompassi-tunnus. Tervetuloa Kompassiin!') return respond_with_connection(request, next_url, connection)