def custom_password_reset_confirm( request, uidb64=None, token=None, template_name='wagtailadmin/account/password_reset/confirm.html', post_reset_redirect='wagtailadmin_password_reset_complete'): """ View that checks the hash in a password reset link and presents a form for entering a new password. """ UserModel = get_user_model() assert uidb64 is not None and token is not None # checked by URLconf post_reset_redirect = resolve_url(post_reset_redirect) try: # urlsafe_base64_decode() decodes to bytestring on Python 3 uid = force_text(urlsafe_base64_decode(uidb64)) user = UserModel._default_manager.get(pk=uid) except (TypeError, ValueError, OverflowError, UserModel.DoesNotExist): user = None if user is not None and default_token_generator.check_token(user, token): validlink = True title = _('Enter new password') if request.method == 'POST': form = CFGOVSetPasswordForm(user, request.POST) if form.is_valid(): form.save() user.temporarylockout_set.all().delete() return HttpResponseRedirect(post_reset_redirect) else: form = CFGOVSetPasswordForm(user) else: validlink = False form = None title = _('Password reset unsuccessful') context = { 'form': form, 'title': title, 'validlink': validlink, } return TemplateResponse(request, template_name, context)