4

Plone 4.3.3 を使用して PloneFormGen 1.7.12 を使用します。フォームが送信する電子メールに現在のデータを含めるように要求があります。私たちは通常、編集者にダウンロードするデータへのアクセスを許可しますが、彼がこれらを送信したい人は編集者ではないため、編集者の許可を与えたくありません。

メーラーに追加できない場合は、役割を作成して、認証されたユーザーがデータをダウンロードするのに十分な権限を与えることができると思います。認証されたパーミッションを新しいロールにコピーして、PloneFormGen: Download Saved Input パーミッションも追加するとうまくいきますか? 余分な役割を作成するのは本当に好きではありません。さらに、これらの人々のアカウントを設定する必要があります。

4

2 に答える 2

2

私の知る限り、コーディングなしではありません:-)

  1. 新しい 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
    ...
  1. 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.

もちろん、これを行うにはいくつかの作業 (コンテンツ タイプの登録など) が必要ですが、これで正しい方向に進むはずです。

于 2015-09-22T06:26:23.693 に答える