Plon:内容规则中的自定义变量

标签 plone plone-4.x

我定义了一个敏捷内容类型 myaddon.subscriber(订阅者=事件参与者)。

我添加了一项内容规则,以便在订阅者获得批准后发送电子邮件(工作流程状态更改为该规则)。

每个订阅者都有一个电子邮件地址(电子邮件字段)。

在编辑邮件操作表单中,我看到我可以在 电子邮件收件人(必需)中使用 ${user_email} 等变量 您想要发送此消息的电子邮件地址。要将其发送到不同的电子邮件地址,只需将它们分隔开,

这正在工作。在我的例子中,user_email 是登录用户的电子邮件 - 批准参与者的人。当状态改变时发送消息。完美。

我需要定义一个变量 ${subscriber_email} ,该变量将具有 myaddon.subscriber.email 值。我怎样才能做到这一点?我正在尝试寻找一个例子。那么,如何使用当前更改对象(订阅者)的字段(电子邮件)作为此邮件操作中的变量?

最佳答案

您可以使用 plone.stringinterp 1.0.14+ 中的 IContextWrapper:

>>> new_context = IContextWrapper(context)(
...     email=u"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ea999f8899899883888f98aa8f928b879a868fc4898587" rel="noreferrer noopener nofollow">[email protected]</a>"
... )

>>> class SubscriberEmailSubstitution(BaseSubstitution):
...     def safe_call(self):
...         return self.wrapper.email

>>> sm = getGlobalSiteManager()
>>> sm.registerAdapter(SubscriberEmailSubstitution, (Interface, ), IStringSubstitution, name=u"subscriber_email")

>>> getAdapter(new_context, IStringSubstitution, 'subscriber_email')()
u'<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="285b5d4a5b4b5a414a4d5a684d50494558444d064b4745" rel="noreferrer noopener nofollow">[email protected]</a>'

进口:

>>> from zope.interface import Interface
>>> from plone.stringinterp.interfaces import IStringSubstitution
>>> from plone.stringinterp.interfaces import IStringSubstitutionInfo
>>> from zope.component import getGlobalSiteManager, getAdapter
>>> from plone.stringinterp.adapters import BaseSubstitution
>>> from plone.stringinterp.interfaces import IContextWrapper

查看更多 stringinterp doctests

另请参阅 eea.pdf 中的完整工作示例附加组件。

关于Plon:内容规则中的自定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43139334/

相关文章:

python - Plone 4.3.3 - 模式驱动类型 - plone.directives.form 未导入

workflow - Plone 4 - 第二个工作流程的历史不会显示在@@historyview 中

tabs - 为控制面板配置创建选项卡的规范方法是什么?

Plone:编辑 portlet 的名称

plone - 有没有办法将 PloneFormGen 中的当前数据(作为 .csv 文件)附加到邮件程序?

Plon:具有多个字段值的注册表字典字段

plone - 如何设置通过通用设置(结构)导入的内容的默认 View

plone - Diazo:css:if-content 和 css:if-not-content 都匹配

css - Senaite LIMS (Plone 4.3.18) css 无法在启用 https 的 Nginx 上工作

Plone/Workflow-为什么portal_workflow工具的getStatusOf返回None?