4

我们使用 Plone 4.3.3 使用 PloneFormGen 1.7.12。我请求在表单发送的电子邮件中包含当前数据。我们通常允许编辑访问要下载的数据,但他要发送这些数据的人不是编辑,我不想给他们编辑权限。

如果无法将其添加到邮件程序中,我想我可以创建一个角色并为其提供足够的权限以供经过身份验证的用户下载数据。将经过身份验证的权限复制到新角色并添加 PloneFormGen: Download Saved Input 权限是否有效?我真的不喜欢创造额外的角色。此外,我们还需要为这些人设置帐户。

4

2 回答 2

2

AFAIK 不是没有编码 :-)

  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 回答
0

不太确定您的要求,但如果您想在提交表单时将 CSV 格式的单条记录作为邮件发送,您可以自定义mailer-adapter的模板,如下所示:

    <tal:block repeat="field options/wrappedFields | nothing">
        "<span tal:replace="structure python:field.htmlValue(request)" />",
    </tal:block>

请注意,这仅适用于邮件格式为 HTML 的情况,以纯文本tal:repeat形式出现,在值之间添加换行符。

如果您想授予一组用户查看和下载保存适配器的权限,请转到 PFG 的控制面板(附加/prefs_pfg_permits到站点的 URL),其中显示“下载保存的输入”,选中“阅读器”复选框,然后分配“可以通过保存适配器的共享选项卡将“-permissioins”编辑到您希望获得特权的用户和组。

于 2015-09-24T07:13:23.937 回答