2013-08-22 3 views
1

У меня есть шаблон страницы контроллера и скрипт Python контроллера, который обрабатывает действие. Замечательно, что я смог добавить эту форму и скрипт действий через Интернет, поэтому мне не нужно создавать и перезапускать экземпляр Plone каждый раз, когда я делаю небольшое изменение кода. Проблема заключается в том, что мой скрипт python должен создавать список объектов контента в виде массива, а затем совместно использовать объекты с другим сервером путем POSTing массива JSON в качестве тела REQUEST, отправленного на удаленный сервер. У меня есть массив arrayOfObjects, который должен выглядеть как «[{'param1: val1,' param2 ': val2}, {' param1 ': val3,' param2 ': val4}]".Как разрешить сквозным скриптам Python на контроллере импортировать в других случаях модули с ограничениями? Plone4

import json 

...other stuff... 

sJSON = json.dumps(arrayOfObjects) 

Приведенных выше код будет работать в стандартном интерпретаторе, но Plone ограничивает использование многих модулей для скриптов Python через-сеть, которые управляются в ZMI. Это отличная функция безопасности, однако я хочу продолжить разработку скрипта через Интернет и переместить его в хранилище файловой системы в своем дополнительном продукте после его разработки. Я слышал, что функция allow_module в пакете AccessControl должна включать импорт, но это звучит так, как будто вам все равно придется жить в файловой системе. Есть ли способ иметь как сквозное редактирование скрипта Python, так и модуля JSON, который имеет решающее значение для функциональности, которую я создаю? Заранее благодарим за любую информацию!

PS- экран недостаточно прав является то, что я вижу, когда я импортировать модуль JSON (ожидаемое поведение, не является ошибочным)

ответ

4

Где-то в обычном коде питона, добавьте следующее:

from AccessControl import allow_module 
allow_module('json') 

в белый список модуля. Да, у этого есть для запуска из Python на основе файловой системы по очевидным соображениям безопасности.

+0

Я добавил код в начало моего дополнительного продукта в файле __init__.py, и он работал как шарм. В конце концов, я тоже переведу скрипты в пакет продукта. Это было полезно: D – user1075722