J'écris une vue personnalisée pour contourner le bogue qui affiche les heures de début et de fin erronées pour les événements dans la vue de table dans Plone 4. Cependant, quand j'appelle ma vue j'obtiens l'erreur suivante :Plone 4 Vue de table Travailler autour
Traceback (innermost last):
Module ZPublisher.Publish, line 116, in publish
Module ZPublisher.BaseRequest, line 498, in traverse
Module ZPublisher.BaseRequest, line 343, in traverseName
Module ZPublisher.BaseRequest, line 110, in publishTraverse
Module zope.component._api, line 122, in queryMultiAdapter
Module zope.component.registry, line 240, in queryMultiAdapter
Module zope.interface.adapter, line 522, in queryMultiAdapter
TypeError:__init__
() takes exactly 2 arguments (3 given)
Il a été un certain temps depuis que je l'ai créé une vue, mais je pensais que (selon this) que __init__()
ne prend 3 arguments (auto, contexte, demande). En tout cas, voici ce que ma classe BrowserView ressemble au moment:
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
J'ai essayé différentes variations de ce en ajoutant une __init__
comme dans les salons de page mentionnés ci-dessus, et juste pour le plaisir de le faire en lui donnant une __init__(self, context):
juste pour voir si 2 arguments changeraient vraiment quelque chose et il donne exactement la même erreur.
Je teste cela dans un site Plone 4.0.2 sous Mac OS X Snow Leopard (dans un python 2.6.6 virtualenv)
Enregistrement de BrowersView du navigateur/configure.zcml (j'ai jeté cela dans un thème Je travaillais aussi avec). J'appelle http://localhost:8080/plone/events/new_events_view pour voir à quoi ressemble la vue et obtenir l'erreur ci-dessus. J'ai également essayé d'enregistrer l'affichage dans portal_types pour le sujet et il me donnera cette erreur en naviguant à http://localhost:8080/plone/events jusqu'à ce que je supprime la vue.
<browser:page
for="*"
name="new_events_view"
class=".newEventsView.NewEventsView"
template="newEventsView.pt"
permission="zope.Public"
allowed_interface=".interfaces.INewEventsView"
/>
Toute aide serait grandement appréciée.
En outre, je sais que c'est un petit bloc de code, mais déchirer si vous pensez que cela pourrait être fait d'une meilleure façon, je suis un étudiant toujours à la recherche de moyens d'améliorer.
Merci
Pour mémoire: le retraçage indique que la méthode '__init__' trouvée ne prend que 2 arguments alors que l'appelant a essayé de passer 3. Marque ce que tu veux. –
Ouais j'ai attrapé ça, je ne suis pas sûr où est ce '__init__ 'parce que, comme je l'ai dit plus haut, peu importe comment je change le' __init__' pour ma vue, je reçois le même résultat. – keiththomps
Pouvez-vous fournir plus de détails sur l'enregistrement ZCML pour cette vue et sur l'endroit où vous avez importé BrowserView? Aussi, quelle URL utilisez-vous pour accéder à la vue? –