GhitaB
GhitaB

Reputation: 3437

Plone: custom variable in content rule

I have defined a dexterity content type myaddon.subscriber (subscriber = participant at an event).

I added a Content rule to send an email when a subscriber is approved (workflow state change to this one).

Each subscriber has an email address (email - field).

In Edit Mail Action form I see I can use variables like ${user_email} in Email recipients (Required) The email where you want to send this message. To send it to different email addresses, just separate them with ,

This is working. In my case user_email is the email of logged in user - the person who approve the participant. The messages are sent when the state is changed. Perfect.

I need to define a variable ${subscriber_email} that will have the myaddon.subscriber.email value. How can I do this? I'm trying to find an example. So, how to use an field (email) of current changed object (subscriber) as variable in this Mail Action?

Upvotes: 2

Views: 126

Answers (1)

avoinea
avoinea

Reputation: 579

You can use IContextWrapper from plone.stringinterp 1.0.14+:

>>> new_context = IContextWrapper(context)(
...     email=u"[email protected]"
... )

>>> 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'[email protected]'

Imports:

>>> 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

See more stringinterp doctests.

Also see a fully working example within eea.pdf add-on.

Upvotes: 3

Related Questions