Django PasswordResetForm не отправляет электронные письма

У меня есть следующая функция, управляющая добавлением нового сотрудника в выбранный цех,

def add_employee(request, shop_number):
    workshop = get_object_or_404(Workshop, shop_number=shop_number)
    context = {"workshop": workshop}
    
    if request.method == "POST":
        form = ProfileForm(request.POST, files=request.FILES)
        if form.is_valid():
            employee = form.save(commit=False)
            employee.added_by = request.user
            
           # Create the user associated with the employee with an unusable password
            employee_user = get_user_model().objects.create_user(
                username=request.POST['email'],
                email=request.POST['email'],
                password=None,  # No password is set
                first_name=request.POST['first_name'],
                last_name=request.POST['last_name']
            )
            employee_user.set_unusable_password()
            employee_user.save()

            employee.user = employee_user
            employee.save()

            # Add the new employee to the workshop's employees
            workshop.employees.add(employee)

            # Conditionally add the employee to groups based on their role
            if employee.is_craftman:
                group, created = Group.objects.get_or_create(name='craftmen')
                group.user_set.add(employee_user)
            elif employee.is_salesman:
                group, created = Group.objects.get_or_create(name='salesmen')
                group.user_set.add(employee_user)


            # Send a password reset email to the user
            form = PasswordResetForm({'email': employee_user.email})
            print(employee_user.email)
           
            if form.is_valid():
                request.current_site = get_current_site(request)
                form.save(
                    request=request,
                    use_https=request.is_secure(),
                    email_template_name='registration/password_reset_email.html',
                    subject_template_name='registration/password_reset_subject.txt',
                    from_email=settings.EMAIL_HOST_USER,
             
                )
            else:
                print(form.errors)
                print(form)


            messages.success(request, f"You have successfully added {\
                             employee}")
            return redirect('manage_employees', shop_number=shop_number)
        else:
            context['form'] = form
    else:
        context['form'] = ProfileForm()        

    return render(request, 'employees/employees_form.html', context)

Код правильно печатает электронную почту сотрудника, но пользователь не получает письмо со сбросом пароля. Другие части кода успешно отправляют электронные письма, но эта секция и стандартное представление сброса пароля не доставляют письма. Я подтвердил, что конкретное электронное письмо существует в базе данных. Может ли кто-нибудь помочь определить потенциальные проблемы, препятствующие доставке письма о сбросе пароля?

Я понял, в чем дело. Метод get_users в PasswordResetForm также отфильтровывает пользователей с непригодным паролем, поэтому они тоже не получают писем. Вам придется либо назначить какой-то тип пароля для этих пользователей, либо переопределить этот метод в форме, чтобы не отфильтровывать их по этому условию.

Вернуться на верх