Резюме:
- Plone 3.3.4
- Products.PloneGetPaid 0.8.8
- ore.viewlet 0.2.1
Я пытаюсь переопределить класс Viewlet, который наследуется от ore.viewlet.core.FormViewlet.Он имеет два метода, украшенных @form.action
(который импортирован из zope.formlib).Мне нужно переопределить только один из них.Если я не определю и другой, его действие будет недоступно.Поэтому я определил это, пытаясь просто передать возвращаемое значение родительского класса.Но затем я получаю TypeError: 'Action' object is not callable
.
Подробности:
В частности, я переопределяю Products.PloneGetPaid.browser.cart.ShoppingCartActions, который определяется следующим образом:
class ShoppingCartActions( FormViewlet ):
Я определил переопределяющий класс для наследования от него.Два декорированных метода:
@form.action(_("Continue Shopping"), name='continue-shopping')
def handle_continue_shopping( self, action, data ):
и
@form.action(_("Checkout"), condition="doesCartContainItems", name="Checkout")
def handle_checkout( self, action, data ):
Меня действительно волнует только переопределение первого.Я хотел бы оставить другого в покое.Эти два метода @ form.action генерируют кнопки «Продолжить покупки» и «Оформить заказ» в представлении «Следующие шаги» на странице управления корзиной покупок.Если я определю только метод «Продолжить покупки» в моем подклассе, кнопка «Оформить заказ» исчезнет.Поэтому я попытался определить метод Checkout следующим образом:
@form.action(_("Checkout"), condition="doesCartContainItems", name="Checkout")
def handle_checkout( self, action, data ):
return super( ShoppingCartActions, self ).handle_checkout(action, data)
Но затем я получаю эту ошибку:
2011-05-20 17:01:40 ERROR Zope.SiteErrorLog http://localhost:8080/obrien/@@getpaid-cartTraceback (innermost last):
Module ZPublisher.Publish, line 119, in publish
Module ZPublisher.mapply, line 88, in mapply
Module ZPublisher.Publish, line 42, in call_object
Module Products.PloneGetPaid.browser.cart, line 46, in __call__
Module zope.viewlet.manager, line 104, in update
Module ore.viewlet.core, line 15, in update
Module Products.PloneGetPaid._patch, line 44, in update
Module zope.formlib.form, line 750, in update
Module zope.formlib.form, line 594, in success
Module plonetheme.obrienskin.browser.cart, line 23, in handle_checkout
TypeError: 'Action' object is not callable
Это заставляет меня думать, что должен быть какой-то прием для переопределения и наследования методовукрашенный @form.action
.
Любой совет будет оценен.
Спасибо!