2015-08-17 8 views
0

https://pypi.python.org/pypi/DateTime упоминает, что лучше использовать python datetime, а не Zope DateTime. Я считаю, что это делается путем вызова внешних методов. Есть ли другой способ сделать это, поскольку я не думаю, что хотелось бы создать внешний метод для всех видов вещей, которые необходимо импортировать?Использование даты и времени Python вместо Zope DateTime

+0

Вы должны задать отдельные вопросы отдельно. Кроме того, первый вопрос остается неясным, а второй - неопределенным. Что вы делаете? – Cyphase

+0

Убрали второй вопрос. В Zope, всякий раз, когда новый скрипт Python создается с использованием ZMI, он находится в режиме ограниченного доступа и как таковой не может импортировать модули Python, такие как datetime и т. Д. Таким образом, единственный способ сделать это - написать логику в файловой системе и получить доступ к этому файлу с помощью Внешний метод от Zope. Мой вопрос состоял в том, чтобы найти альтернативный подход к этому. – Ravi

+0

Я не знаком с Zope, но почему бы просто не использовать Zope DateTime? Чтобы отменить порядок описания пакета, «вам, вероятно, лучше использовать встроенный модуль времени и времени Python ... если вам не нужно общаться с Zope 2 API». – Cyphase

ответ

0

Класс DateTime от модуля DateTime может быть импортирован в ограниченном режиме Zope просто потому, что объявлен как открытый в пакете AccessControl. В своем верхнем уровне __init__.py

ModuleSecurityInfo('DateTime').declarePublic('DateTime') 

Он также содержит это позволить импорт из четырех других полезных встроенных импорта

for name in ('string', 'math', 'random', 'sets'): 
    ModuleSecurityInfo(name).setDefaultAccess('allow') 

Так, чтобы сделать это, вам нужно добавить подобные строки в __init__.py вашего пакета Zope (или создать, если вы уже не имеете, see this tutorial), например:

from AccessControl import ModuleSecurityInfo 
# just a specific class 
ModuleSecurityInfo('datetime').declarePublic('datetime') 
# or at a broader level for the entire module 
ModuleSecurityInfo('datetime').setDefaultAccess('allow') 

Это, конечно, предполагает пакет datetime достаточно доверен, чтобы не было возможности атаковать ваш экземпляр Zope.