Exemplo n.º 1
0
def register(request):
    """
    Render and process a basic registration form.
    """
    if not settings.PRETIX_REGISTRATION:
        raise PermissionDenied('Registration is disabled')
    ctx = {}
    if request.user.is_authenticated():
        return redirect(request.GET.get("next", 'control:index'))
    if request.method == 'POST':
        form = RegistrationForm(data=request.POST)
        if form.is_valid():
            user = User.objects.create_user(
                form.cleaned_data['email'],
                form.cleaned_data['password'],
                locale=request.LANGUAGE_CODE,
                timezone=request.timezone
                if hasattr(request, 'timezone') else settings.TIME_ZONE)
            user = authenticate(email=user.email,
                                password=form.cleaned_data['password'])
            user.log_action('pretix.control.auth.user.created', user=user)
            auth_login(request, user)
            return redirect('control:index')
    else:
        form = RegistrationForm()
    ctx['form'] = form
    return render(request, 'pretixcontrol/auth/register.html', ctx)
Exemplo n.º 2
0
def register(request):
    """
    Render and process a basic registration form.
    """
    if not settings.PRETIX_REGISTRATION:
        raise PermissionDenied('Registration is disabled')
    ctx = {}
    if request.user.is_authenticated:
        return redirect(request.GET.get("next", 'control:index'))
    if request.method == 'POST':
        form = RegistrationForm(data=request.POST)
        if form.is_valid():
            user = User.objects.create_user(
                form.cleaned_data['email'], form.cleaned_data['password'],
                locale=request.LANGUAGE_CODE,
                timezone=request.timezone if hasattr(request, 'timezone') else settings.TIME_ZONE
            )
            user = authenticate(request=request, email=user.email, password=form.cleaned_data['password'])
            user.log_action('pretix.control.auth.user.created', user=user)
            auth_login(request, user)
            request.session['pretix_auth_login_time'] = int(time.time())
            request.session['pretix_auth_long_session'] = (
                settings.PRETIX_LONG_SESSIONS and form.cleaned_data.get('keep_logged_in', False)
            )
            return redirect('control:index')
    else:
        form = RegistrationForm()
    ctx['form'] = form
    return render(request, 'pretixcontrol/auth/register.html', ctx)
Exemplo n.º 3
0
def register(request):
    """
    Render and process a basic registration form.
    """
    ctx = {}
    if request.user.is_authenticated():
        return redirect(request.GET.get("next", 'control:index'))
    if request.method == 'POST':
        form = RegistrationForm(data=request.POST)
        if form.is_valid():
            user = User.objects.create_user(
                form.cleaned_data['email'], form.cleaned_data['password'],
                locale=request.LANGUAGE_CODE,
                timezone=request.timezone if hasattr(request, 'timezone') else settings.TIME_ZONE
            )
            user = authenticate(email=user.email, password=form.cleaned_data['password'])
            auth_login(request, user)
            return redirect('control:index')
    else:
        form = RegistrationForm()
    ctx['form'] = form
    return render(request, 'pretixcontrol/auth/register.html', ctx)
Exemplo n.º 4
0
def invite(request, token):
    """
    Registration form in case of an invite
    """
    ctx = {}

    try:
        inv = TeamInvite.objects.get(token=token)
    except TeamInvite.DoesNotExist:
        messages.error(request, _('You used an invalid link. Please copy the link from your email to the address bar '
                                  'and make sure it is correct and that the link has not been used before.'))
        return redirect('control:auth.login')

    if request.user.is_authenticated:
        if inv.team.members.filter(pk=request.user.pk).exists():
            messages.error(request, _('You cannot accept the invitation for "{}" as you already are part of '
                                      'this team.').format(inv.team.name))
            return redirect('control:index')
        else:
            with transaction.atomic():
                inv.team.members.add(request.user)
                inv.team.log_action(
                    'pretix.team.member.joined', data={
                        'email': request.user.email,
                        'invite_email': inv.email,
                        'user': request.user.pk
                    }
                )
                inv.delete()
            messages.success(request, _('You are now part of the team "{}".').format(inv.team.name))
            return redirect('control:index')

    if request.method == 'POST':
        form = RegistrationForm(data=request.POST)
        with transaction.atomic():
            valid = form.is_valid()
            if valid:
                user = User.objects.create_user(
                    form.cleaned_data['email'], form.cleaned_data['password'],
                    locale=request.LANGUAGE_CODE,
                    timezone=request.timezone if hasattr(request, 'timezone') else settings.TIME_ZONE
                )
                user = authenticate(request=request, email=user.email, password=form.cleaned_data['password'])
                user.log_action('pretix.control.auth.user.created', user=user)
                auth_login(request, user)
                request.session['pretix_auth_login_time'] = int(time.time())
                request.session['pretix_auth_long_session'] = (
                    settings.PRETIX_LONG_SESSIONS and form.cleaned_data.get('keep_logged_in', False)
                )

                inv.team.members.add(request.user)
                inv.team.log_action(
                    'pretix.team.member.joined', data={
                        'email': user.email,
                        'invite_email': inv.email,
                        'user': user.pk
                    }
                )
                inv.delete()
                messages.success(request, _('Welcome to pretix! You are now part of the team "{}".').format(inv.team.name))
                return redirect('control:index')
    else:
        form = RegistrationForm(initial={'email': inv.email})
    ctx['form'] = form
    return render(request, 'pretixcontrol/auth/invite.html', ctx)
Exemplo n.º 5
0
def invite(request, token):
    """
    Registration form in case of an invite
    """
    ctx = {}

    try:
        inv = TeamInvite.objects.get(token=token)
    except TeamInvite.DoesNotExist:
        messages.error(
            request,
            _('You used an invalid link. Please copy the link from your email to the address bar '
              'and make sure it is correct and that the link has not been used before.'
              ))
        return redirect('control:auth.login')

    if request.user.is_authenticated:
        if inv.team.members.filter(pk=request.user.pk).exists():
            messages.error(
                request,
                _('You cannot accept the invitation for "{}" as you already are part of '
                  'this team.').format(inv.team.name))
            return redirect('control:index')
        else:
            with transaction.atomic():
                inv.team.members.add(request.user)
                inv.team.log_action('pretix.team.member.joined',
                                    data={
                                        'email': request.user.email,
                                        'invite_email': inv.email,
                                        'user': request.user.pk
                                    })
                inv.delete()
            messages.success(
                request,
                _('You are now part of the team "{}".').format(inv.team.name))
            return redirect('control:index')

    if request.method == 'POST':
        form = RegistrationForm(data=request.POST)
        if form.is_valid():
            user = User.objects.create_user(
                form.cleaned_data['email'],
                form.cleaned_data['password'],
                locale=request.LANGUAGE_CODE,
                timezone=request.timezone
                if hasattr(request, 'timezone') else settings.TIME_ZONE)
            user = authenticate(email=user.email,
                                password=form.cleaned_data['password'])
            user.log_action('pretix.control.auth.user.created', user=user)
            auth_login(request, user)
            request.session['pretix_auth_login_time'] = int(time.time())
            request.session['pretix_auth_long_session'] = (
                settings.PRETIX_LONG_SESSIONS
                and form.cleaned_data.get('keep_logged_in', False))

            with transaction.atomic():
                inv.team.members.add(request.user)
                inv.team.log_action('pretix.team.member.joined',
                                    data={
                                        'email': user.email,
                                        'invite_email': inv.email,
                                        'user': user.pk
                                    })
                inv.delete()
            messages.success(
                request,
                _('Welcome to pretix! You are now part of the team "{}".').
                format(inv.team.name))
            return redirect('control:index')
    else:
        form = RegistrationForm(initial={'email': inv.email})
    ctx['form'] = form
    return render(request, 'pretixcontrol/auth/invite.html', ctx)
Exemplo n.º 6
0
def invite(request, token):
    """
    Registration form in case of an invite
    """
    ctx = {}

    try:
        perm = EventPermission.objects.get(invite_token=token)
        desc = perm.event.name
    except EventPermission.DoesNotExist:
        try:
            perm = OrganizerPermission.objects.get(invite_token=token)
            desc = perm.organizer.name
        except OrganizerPermission.DoesNotExist:
            messages.error(
                request,
                _('You used an invalid link. Please copy the link from your email to the address bar '
                  'and make sure it is correct and that the link has not been used before.'
                  ))
            return redirect('control:auth.login')

    if request.user.is_authenticated:
        try:
            if isinstance(perm, EventPermission):
                EventPermission.objects.get(event=perm.event,
                                            user=request.user)
            else:
                OrganizerPermission.objects.get(organizer=perm.organizer,
                                                user=request.user)
            messages.error(
                request,
                _('You cannot accept the invitation for "{}" as you already are part of '
                  'this team.').format(desc))
            return redirect('control:index')
        except (EventPermission.DoesNotExist,
                OrganizerPermission.DoesNotExist):
            pass

        perm.invite_token = None
        perm.invite_email = None
        perm.user = request.user
        perm.save()
        messages.success(request,
                         _('You have now access to "{}".').format(desc))
        return redirect('control:index')

    if request.method == 'POST':
        form = RegistrationForm(data=request.POST)
        if form.is_valid():
            user = User.objects.create_user(
                form.cleaned_data['email'],
                form.cleaned_data['password'],
                locale=request.LANGUAGE_CODE,
                timezone=request.timezone
                if hasattr(request, 'timezone') else settings.TIME_ZONE)
            user = authenticate(email=user.email,
                                password=form.cleaned_data['password'])
            user.log_action('pretix.control.auth.user.created', user=user)
            auth_login(request, user)
            request.session['pretix_auth_login_time'] = int(time.time())

            perm.invite_token = None
            perm.invite_email = None
            perm.user = user
            perm.save()
            messages.success(
                request,
                _('Welcome to pretix! You have now access to "{}".').format(
                    desc))
            return redirect('control:index')
    else:
        form = RegistrationForm(initial={'email': perm.invite_email})
    ctx['form'] = form
    return render(request, 'pretixcontrol/auth/invite.html', ctx)