2012-05-30 4 views
1

Я пытаюсь настроить форму ploneformgen путем динамического заполнения поля выбора. Мне нужно проанализировать файл в моей файловой системе и выбрать определенные параметры на основе их даты и времени. Создание сценария python не было проблемой, но тогда, где я поместил сценарий?Ploneformgen динамически заполняет поле выбора

  1. Из того, что я понимаю, внешние методы не являются предпочтительным выбором в Plone 4
  2. Я пытался добавить питон скрипт через ZMI, но тогда я был поражен ограниченным питоном и мой сценарий не будет выполнять.
  3. Я разработал надстройку и поместил ее в папку с яйцами, а затем написал сценарий python для вызова кода из надстройки, но, к сожалению, меня снова ударили с той же ошибкой, что и ранее. «У вас недостаточно прав доступа для просмотра этой страницы ". Из того, что я понял, код внутри надстройки не ограничен, или?

Что было бы лучшим вариантом для настройки формы?

ответ

3

Если вы использовали сценарий скина, то да, который также запускается как ограниченный питон. Это эквивалент файловой системы сценария python ZMI.

Лучшей практикой является использование 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.

Однако, если это единственное, что вы создаете для этого пользовательского пакета, то, во всяком случае, используйте внешний метод.