Ploneformgen动态填充选择字段

时间:2012-05-30 03:26:09

标签: python plone zope ploneformgen

我正在尝试通过动态填充选择字段来自定义ploneformgen表单。我需要解析文件系统上的文件,并根据日期和时间选择某些选项。创建python脚本并不是很明智,但是我在哪里放置脚本?

  1. 根据我的理解,外部方法不是plone 4
  2. 的首选
  3. 我试图通过ZMI添加一个python脚本,但后来我遇到了受限制的python并且我的脚本无法执行。
  4. 我开发了一个附加组件并将其放在egg文件夹中,然后编写了一个python脚本来调用附加组件中的代码,但遗憾的是我再次遇到了与之前相同的错误“你没有足够的权限查看此页面“。根据我的理解,加载项中的代码不受限制,或者?
  5. 实现表单自定义的最佳选择是什么?

1 个答案:

答案 0 :(得分:3)

如果你使用了皮肤脚本,那么是的,那也是作为受限制的python运行的。它是文件系统存储的ZMI python脚本的等价物。

最佳做法是使用browser view;它只是一个可调用的对象,它有一个与之关联的请求和上下文:

from zope.publisher.browser import BrowserView

class MyBrowserView(BrowserView):
    def __call__(self):
        request = self.request
        context = self.context
        # Do something with the request and context

在configure.zcml中注册:

<browser:view
    for="*"
    name="mybrowserview"
    class=".views.MyBrowserView"
    permission="zope2.Public"
    />

之后,它将以someobject/@@mybrowserview的形式提供给PloneFormGen。

但是,如果这是您创建自定义包的唯一方法,那么请务必使用外部方法。