私の知る限り、コーディングなしではありません:-)
新しい DataSaveAdapter コンテンツ タイプを作成する
最善の方法は、既存のものから継承して新しいフィールドを追加することです。
from Products.PloneFormGen.content.saveDataAdapter import FormSaveDataAdapter
SendDataAdapterSchema = FormSaveDataAdapter.schema.copy() + atapi.Schema((
atapi.StringField(
name='csv_recipients',
required=False,
widget=atapi.LinesWidget(
label=_(u'label_csv_recipients', default=u'CSV recipients'),
)
)
))
class SendDataAdapter(FormSaveDataAdapter):
implements(IPloneFormGenActionAdapter)
...
schema = SendDataAdapterSchema
...
- SaveDataAdapter は、
onSuccess
フックしてメールを送信できるメソッドを提供します
class SendDataAdapter(FormSaveDataAdapter):
...
def onSuccess(self, fields, REQUEST=None, loopstop=False):
""" saves input data and initiates mail"""
super(SendDataAdapter, self).onSuccess(fields, REQUEST, loopstop)
self.send_csv() # This is where you may implement sending the email.
もちろん、これを行うにはいくつかの作業 (コンテンツ タイプの登録など) が必要ですが、これで正しい方向に進むはずです。