This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
collective.dms.mailcontent/src/collective/dms/mailcontent/browser/settings.py

73 lines
2.5 KiB
Python

from DateTime import DateTime
from five import grok
from Products.CMFCore.interfaces import ISiteRoot
from zope.interface import Interface
from zope import schema
from plone.z3cform import layout
from plone.app.registry.browser.controlpanel import RegistryEditForm
from plone.app.registry.browser.controlpanel import ControlPanelFormWrapper
from Products.PageTemplates.Expressions import getEngine
from Products.CMFCore.Expression import Expression
from .. import _
class IDmsMailConfig(Interface):
"""
Configuration of dms mail
"""
incomingmail_number = schema.Int(
title=_(u'Number of next incoming mail'),
description=_(u"This value is used as 'number' variable in linked tal expression"))
incomingmail_talexpression = schema.TextLine(
title=_(u"Incoming mail internal reference default value expression"),
description=_(u"Tal expression where you can use portal, number as variable")
)
outgoingmail_number = schema.Int(
title=_(u'Number of next outgoing mail'),
description=_(u"This value is used as 'number' variable in linked tal expression"))
outgoingmail_talexpression = schema.TextLine(
title=_(u"Outgoing mail internal reference default value expression"),
description=_(u"Tal expression where you can use portal, number as variable")
)
class SettingsEditForm(RegistryEditForm):
"""
Define form logic
"""
schema = IDmsMailConfig
label = _(u"Dms Mail settings")
class SettingsView(grok.View):
"""
View which wrap the settings form using ControlPanelFormWrapper to a HTML boilerplate frame.
"""
grok.name("dmsmailcontent-settings")
grok.context(ISiteRoot)
def render(self):
view_factor = layout.wrap_form(SettingsEditForm, ControlPanelFormWrapper)
view = view_factor(self.context, self.request)
return view()
def evaluateTalExpression(self, expression, portal, number, **kwargs):
"""
evaluate the expression, considering portal and number in context
"""
#evaluate the numerotationTALExpression and pass it obj, lastValue and self
data = {
'tool': self,
'number': str(number),
'portal': portal,
'date': DateTime(),
}
data.update(kwargs)
res = ''
try:
ctx = getEngine().getContext(data)
res = Expression(expression)(ctx)
except Exception, msg:
return 'Error in expression: %s'%msg
return res