Проблема с типом контента Dexterity DateTime и как изменить значения типа контента

Прежде всего: я использую экземпляр Plonce Plone 4.3 (4305) с типами содержимого Dexterity 2.0.7.

Мой подход заключается в написании скрипта Python (добавленного через ZMI), который создает мой тип контента ловкости, используя методы invokeFactory(...) или typestool.constructContent(..), описанные здесь: http://plone.org/documentation/kb/add-content-programmatically (я написал два скрипта, выполняющих одну и ту же задачу, но использующих разные методы - в учебных целях)

Все работает нормально, за исключением случаев, когда я пытаюсь добавить объект DateTime в конструктор обоих методов выше, чтобы создать свой тип контента. Поле «Дата» странным образом обновляет только значения дня и года. Из-за ограничений на импорт библиотек внутри python я застрял (с моими текущими знаниями) с этим кодом:

d = DateTime('12/12/2013')

Мой скрипт возвращает объект даты после завершения, который выглядит так:

2013/12/12 00:00:00 GMT+1

Я написал еще один небольшой скрипт, который выводит значение даты после построения, и он дает мне тот же результат (что кажется правильным). Поле дня и года в результирующем типе контента обновлено правильно, но значение месяца остается в январе и при просмотре вызывает следующую ошибку TypeError:

TypeError: int() argument must be a string or a number, not 'instancemethod'

Я могу исправить это, отредактировав значение месяца вручную, что не совсем то, что я хочу. Я предполагаю, что это незначительная проблема с моим объектом DateTime, но на данный момент у меня заканчиваются идеи (общая документация кажется немного разбросанной). Я пробовал различные форматы даты внутри конструктора DateTime, но безуспешно.

Я также не уверен, как изменить значения настраиваемых полей моих объектов. Plone предоставляет только методы setTitle() и setDescription(). Может у кого есть хорошая подсказка.

Всем заранее спасибо, с уважением


person shiriaru    schedule 07.07.2013    source источник


Ответы (2)


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

например, чтобы установить свой заголовок

@indexer(IFormName)
def titleIndexer(obj):
    return obj.valueFromForm
grok.global_adapter(titleIndexer, name="Title")
person Don Keillor    schedule 23.07.2013

Насколько я знаю, проблема в том, что поле DateTime для типов ловкости нуждается в объекте datetime, а не в объекте DateTime.

В invokeFactory вы должны передать объект datetime вместо объекта DateTime.

>>>date=datetime.datetime(2011,1,1)
>>>myobj=target.invokeFactory(type_name="content_type_name", id=id, date=date)

>>from DateTime import DateTime
>>DateTime().month() 
7
>>from datetime import datetime
>>datetime.now().month
7
>>datetime.now().month()
TypeError: 'int' object is not callable 

>>> myobj.date
datetime.datetime(2013, 7, 26, 0, 0) 
>>> myobj.date.month 
7
>>> myobj.date.month() 
TypeError: 'int' object is not callable 
person dmunicio    schedule 29.07.2013