Пример #1
0
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)
Пример #2
0
    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)