Django-Postman禁用每个用户的电子邮件通知

时间:2013-08-12 13:38:29

标签: python django

我正在尝试弄清楚如何在用户群中启用/禁用Django-Postman中的电子邮件通知。通知系统已经包含在内,我希望能够为每个用户设置一个字段,其中包含一个用户想要接收邮差通知邮件的布尔值。

我在postman.utils中找到了以下设置:

# to disable email notification to users
DISABLE_USER_EMAILING = getattr(settings, 'POSTMAN_DISABLE_USER_EMAILING', False)

但我怎么用呢?

亲切的问候!

1 个答案:

答案 0 :(得分:0)

该代码表示​​django-postman读取了一个名为settings.py的设置(来自您的POSTMAN_DISABLE_USER_EMAILING文件),如果未设置任何值,则默认为False

The docs说:

  

POSTMAN_DISABLE_USER_EMAILING

     

如果您不希望向用户发送基本电子邮件通知,请将其设置为True。此设置不适用于访问者(请参阅   POSTMAN_DISALLOW_ANONYMOUS),也不是通知程序应用程序(请参阅POSTMAN_NOTIFIER_APP)

     

默认为:False。

然而,这会在整个系统中打开和关闭电子邮件。要根据您的要求禁用每个用户的用户电子邮件,postman/utils.py中的此代码指向答案:

if notification:
    # the context key 'message' is already used in django-notification/models.py/send_now() (v0.2.0)
    notification.send(users=[user], label=label, extra_context={'pm_message': object, 'pm_action': action})
else:
    if not DISABLE_USER_EMAILING and user.email and user.is_active:
        email('postman/email_user_subject.txt', 'postman/email_user.txt', [user.email], object, action)

因此,为每个用户发送电子邮件的一种hacky方法是向User对象添加一个字段(或函数),并在postman\utils.py中的那一行添加另一个检查。

更好的方法是使用django-postman对django-notification等通知框架的内置支持,允许您根据每个用户自定义消息(包括电子邮件)。