Closed sauzher closed 1 month ago
@sauzher This may have been fixed in https://github.com/zopefoundation/DateTime/pull/61. You didn't say a specific version of Plone or DateTime that you were using.
@davisagli I'm facing the problem in plone 5.2.13, DateTime 4.9. but the same happens in Plone 6.0.11 (6022) and Plone 6.10 DateTime 5.3
Thanks.
@sauzher it was fixed in DateTime 5.4, according to the last comment in the issue that @davisagli linked. The latest Plone constraints.txt
file pins it to 5.3. I assume if you install DateTime 5.4, then it will work for latest Plone.
@davisagli @stevepiercy ,
unfortunately even pinning DateTime = 5.4
it doesn't solve. The traceback seems to be the same:
Traceback (innermost last):
Module ZPublisher.WSGIPublisher, line 176, in transaction_pubevents
Module ZPublisher.WSGIPublisher, line 385, in publish_module
Module ZPublisher.WSGIPublisher, line 280, in publish
Module ZPublisher.mapply, line 85, in mapply
Module ZPublisher.WSGIPublisher, line 63, in call_object
Module zope.browserpage.simpleviewclass, line 41, in __call__
Module Products.Five.browser.pagetemplatefile, line 126, in __call__
Module Products.Five.browser.pagetemplatefile, line 58, in __call__
Module zope.pagetemplate.pagetemplate, line 133, in pt_render
Module Products.PageTemplates.engine, line 378, in __call__
Module z3c.pt.pagetemplate, line 176, in render
Module chameleon.zpt.template, line 302, in render
Module chameleon.template, line 215, in render
Module chameleon.utils, line 53, in raise_with_traceback
Module chameleon.template, line 192, in render
Module c4d8b9e8c20076ed60bfb79b703e4984, line 1059, in render
Module 20728d413d4a6300597bce6859f44302, line 904, in render_master
Module 20728d413d4a6300597bce6859f44302, line 1540, in render_content
Module c4d8b9e8c20076ed60bfb79b703e4984, line 1044, in __fill_content_core
Module c4d8b9e8c20076ed60bfb79b703e4984, line 138, in render_content_core
Module zope.tales.expressions, line 250, in __call__
Module Products.PageTemplates.Expressions, line 225, in _eval
Module Products.PageTemplates.Expressions, line 155, in render
Module plone.memoize.view, line 59, in memogetter
Module plone.app.event.browser.event_listing, line 171, in events
Module plone.app.event.base, line 285, in expand_events
Module DateTime.DateTime, line 1370, in lessThanEqualTo
TypeError: '<=' not supported between instances of 'int' and 'datetime.datetime'
@sauzher Based on the traceback, it looks like a datetime instance was passed in to DateTime.lessThanEqualTo.
Based on the docstring in https://github.com/zopefoundation/DateTime/blob/5.4/src/DateTime/DateTime.py#L1352, it expects a DateTime instance or a float.
So I guess the bug is that plone.app.event is passing the wrong type.
@davisagli I agree, actually I've monkey patched plone.app.events.base.expand_events
casting into DateTime all the operands. Not so clean but it's ok for our Plones.
expand_events
requires a list of IEvent
objects or IEventAccessor
object wrappers (see https://github.com/plone/plone.app.event/blob/master/plone/app/event/base.py#L253) .. this is what you get from get_events
with ret_mode 2 (=objects) or 3 (=accessors) https://github.com/plone/plone.app.event/blob/master/plone/app/event/base.py#L74 ... you need the objects to calculate recurring event occurrences between date ranges ... i would investigate, why the ret_mode here https://github.com/plone/plone.app.event/blob/master/plone/app/event/browser/event_listing.py#L168 is not as expected ...
ok it's not the ret_mode but the collections query: afterToday
returns a DateTime
object but plone.app.event.base.expand_events
expects a datetime.datetime
object.
I think it would be best if this method https://github.com/plone/plone.app.event/blob/master/plone/app/event/browser/event_listing.py#L217 always returns datetime
objects as expected ...
This one adds a test and fixes this issue: https://github.com/plone/plone.app.event/pull/404
Though I saw this older PR (too late) trying to achieve the same thing: https://github.com/plone/plone.app.event/pull/397 ... sorry @ThibautBorn maybe you want to look at my PR and we can merge our solutions together?
@petschki , Your fix achieved the same thing as my PR for the conversion part, and with tests so I'm glad it's merged.
I was however also expanding on the usecase by refactoring the code and implementing some new logic. This isn't addressed here, so I made a new issue where this can be discussed. https://github.com/plone/plone.app.event/issues/405
Steps to reproduce:
Create events whose end date is in the future
Create a collection and set criteria: "Event End Date -> After Today"
Got Traceback error.
In plone 6 it is:
In plone 5 I get a slightly different error: