Я пишу пользовательское представление, чтобы обойти ошибку, которая отображает неправильное время начала и окончания событий в табличном представлении в Plone 4. Однако, когда я вызываю мое представление, я получаю следующую ошибку:
Трассировка (самая последняя):
Модуль ZPublisher.Publish, строка 116, в публикации
Модуль ZPublisher.BaseRequest, строка 498, в ходу
Модуль ZPublisher.BaseRequest, строка 343, в traverseName
Модуль ZPublisher.BaseRequest, строка 110, в publishTraverse
Модуль zope.component._api, строка 122, в запросе MultiAdapter
Модуль zope.component.registry, строка 240, в запросе MultiAdapter
Модуль zope.interface.adapter, строка 522, в queryMultiAdapter
Ошибка типа: __init__
() принимает ровно 2 аргумента (задано 3)
Прошло некоторое время с тех пор, как я создал представление, но я подумал (в соответствии с this ), что __init__()
действительно принимает 3 аргумента (self, context, request). Во всяком случае, вот как выглядит мой класс BrowserView на данный момент:
class NewEventsView(BrowserView):
"""Custom View for displaying events in a table with correct times"""
implements(INewEventsView)
def getCurrentEvents(self):
"""Method to return all active events in order"""
current_events = []
cat = getToolByName(self.context, 'portal_catalog')
brains = cat(portal_type='Event', review_state='published', sort_on='start')
for x in brains:
event = x.getObject()
if event.startDate > DateTime():
current_events.append(event)
return current_events
Я пробовал разные варианты этого добавления __init__
, как показано на вышеупомянутой странице, и просто ради того, чтобы дать ему __init__(self, context):
, просто чтобы посмотреть, действительно ли 2 аргумента что-то изменят, и это даст точно такая же ошибка.
Я тестирую это на сайте Plone 4.0.2 в Mac OS X Snow Leopard (в python 2.6.6 virtualenv)
Регистрация BrowersView из browser / configure.zcml (я добавил это в тему, с которой я также работал). Я звоню http://localhost:8080/plone/events/new_events_view, чтобы посмотреть, как выглядит вид, и получить вышеуказанную ошибку. Я также попытался зарегистрировать представление в portal_types для темы, и при переходе к http://localhost:8080/plone/events эта ошибка будет отображаться до тех пор, пока я не удалю представление.
<browser:page
for="*"
name="new_events_view"
class=".newEventsView.NewEventsView"
template="newEventsView.pt"
permission="zope.Public"
allowed_interface=".interfaces.INewEventsView"
/>
Любая помощь будет принята с благодарностью.
Кроме того, я знаю, что это небольшой блок кода, но разорвите его на части, если вы думаете, что это можно сделать лучше, я студент, всегда ищущий способы улучшения.
Спасибо