Добавление / изменение логики в методе send_email в django-registration-redux - PullRequest
1 голос
/ 17 июня 2019

Мой сайт работает с несколькими доменами. Пользователи могут зарегистрироваться на каждом из этих доменов. В результате мне нужно сделать django-registration-redux:

  • используйте правильный адрес электронной почты для отправки электронных писем регистрации / сброса пароля

  • используйте правильный пароль электронной почты для отправки электронных писем регистрации / сброса пароля

  • использовать правильный домен в электронных письмах регистрации / сброса пароля

Я копался в исходном коде для django-registration-redux и считаю, что мне нужно обновить метод send_email в registration / models.py (https://github.com/macropin/django-registration/blob/master/registration/models.py) с моими необходимыми изменениями.

Я предполагаю, что лучший способ добавить эту настройку заключается в следующем:

  • run 'pip uninstall django-registration-redux == 2.2'
  • запустите 'pip freeze> needs.txt'

  • из исходного кода, перетащите папку «регистрация» в мой проект

  • зайдите в myproject / registration / models.py и вручную обновите метод send_email, чтобы он включал мои изменения.

Есть ли более простой или более правильный способ встроить мою собственную логику в def send_email без внесения изменений, указанных выше?

Спасибо!

1 Ответ

1 голос
/ 05 июля 2019

Вы можете создать подкласс модели, затем переопределить функцию, которая вызывает send_email(), и исправить ее с помощью пользовательской функции.

from unittest import mock
from django_registration import models

def custom_send_email():
    print('sending custom email')

class CustomEmailRegistration(models.Registration):
    def function_calling_send_email(self):
        with mock.patch('models.send_email', side_effect=custom_send_email):
            super().function_calling_send_email()
...