예제 #1
0
def admin_edit(request, guest=None):
    if request.POST:
        gf = GuestFormAdmin(request.POST)
        guest.uid = gf['uid'].value()
        guest.mail = gf['mail'].value()
        guest.givenName = gf['givenName'].value()
        guest.sn = gf['sn'].value()
        if gf['userPassword'].value(): # password changed
            guest.userPassword = ssha(gf['userPassword'].value()) # ssha the new password
        guest.save()
        return redirect('guest.views.admin_show', uid=guest.uid)
    else:
        gf = GuestFormAdmin(initial=model_to_dict(guest))
    return render(request, 'guest/edit.html', {
        'form':gf,
        'guest':guest,
        'title': _('Edit %(name)s') % {'name': guest.displayName},
        })
예제 #2
0
def activate(request, code=None):
    if request.POST:
        gf = GuestFormCreate(request.POST)
        if gf.is_valid():
            g = Guest()
            g.uid = gf.cleaned_data['uid']
            g.mail = request.session['validated_mail']
            g.givenName = gf.cleaned_data['givenName']
            g.sn = gf.cleaned_data['sn']
            g.userPassword = ssha(gf.cleaned_data['userPassword']) # ssha the new password
            g.save()
            del request.session['validated_mail']
            messages.add_message(request, messages.SUCCESS, _('Account %(uid)s created.') % {'uid': g.uid})
            request.session['uid'] = g.uid
            return redirect('guest.views.me')
    else:
        try:
            obj = signing.loads(code)
        except signing.BadSignature:
            messages.add_message(request, messages.ERROR, _("The activation link is broken. Are you shure you've entered it correctly?"))
            logger.error('User entered broken activation link. Possible user copy/paste error.')
            return redirect('guest.views.home')
        if time.time() - obj['time'] > 60*60*settings.LINK_EXPIRY:
            messages.add_message(request, messages.ERROR, _('The activation link has expired. Please register again to recieve a new one.'))
            logger.error('User entered expired activation link. Possible server clock error. If not, consider increasing the LINK_EXPIRY setting.')
            return redirect('guest.views.home')
        else:
            if 'uid' in obj:
                g = get_object_or_404(Guest, uid=obj['uid'])
                g.mail = obj['mail']
                g.save()
                request.session['uid'] = g.uid
                messages.add_message(request, messages.SUCCESS, _('Mail updated.'))
                return redirect('guest.views.me')
            else:
                request.session['validated_mail'] = obj['mail']
                gf = GuestFormCreate()
    return render(request, 'guest/form.html', {
        'form': gf,
        'title': _('Activate account'),
        })
예제 #3
0
def reset_password(request, code):
    if request.POST:
        pf = PasswordForm(request.POST)
        if pf.is_valid():
            g = get_object_or_404(Guest, uid=request.session['recovery_uid'])
            del request.session['recovery_uid']
            g.userPassword = ssha(pf.cleaned_data['userPassword']) # ssha the new password
            g.save()
            messages.add_message(request, messages.SUCCESS, 'New password set.')
            return redirect('guest.views.home')
    else:
        obj = signing.loads(code)
        if time.time() - obj['time'] > 60*60*settings.LINK_EXPIRY:
            messages.add_message(request, messages.ERROR, _('The password reset link has expired. Please do recovery again for a new one.'))
            logger.error('User entered expired password reset link. Possible server clock error. If not, consider increasing the LINK_EXPIRY setting.')
            return redirect('guest.views.recover')
        else:
            g = get_object_or_404(Guest, uid=obj['uid'])
            pf = PasswordForm()
            request.session['recovery_uid'] = g.uid
    return render(request, 'guest/form.html', {
        'form': pf,
        'title': _('Reset password'),
        })
예제 #4
0
def edit_me(request, guest=None):
    if request.POST:
        gf = GuestFormEdit(request.POST)
        if gf.is_valid():
            guest.givenName = gf.cleaned_data['givenName']
            guest.sn = gf.cleaned_data['sn']
            if gf.cleaned_data['userPassword']: # password changed
                guest.userPassword = ssha(gf.cleaned_data['userPassword']) # ssha the new password
            guest.save()

            f_mail = gf.cleaned_data['mail']
            if f_mail and f_mail != guest.mail: # mail changed
                obj = {'uid':guest.uid, 'mail':f_mail, 'time':time.time()}
                send_activation_mail(request, obj)
            return redirect('guest.views.me')
    else:
        m = model_to_dict(guest)
        m.pop('mail')
        gf = GuestFormEdit(initial=m)
    return render(request, 'guest/edit.html', {
        'form':gf,
        'guest':guest,
        'title': _('Edit %(name)s') % {'name': guest.displayName},
        })