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}, })
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'), })
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'), })
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}, })