From 6dbcc524b8897cbc18c883b763c936f74353842e Mon Sep 17 00:00:00 2001 From: Thibaut Born Date: Thu, 20 Jun 2024 13:12:35 +0200 Subject: [PATCH 1/3] make event_listing act consistent context: event_listing didn't always show the results from the collection. --- plone/app/event/browser/event_listing.py | 32 ++++++++++++++++-------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/plone/app/event/browser/event_listing.py b/plone/app/event/browser/event_listing.py index e01de705..9b9fd089 100644 --- a/plone/app/event/browser/event_listing.py +++ b/plone/app/event/browser/event_listing.py @@ -66,20 +66,30 @@ def __init__(self, context, request): ).isoformat() if self.mode is None: - self.mode = "day" if self._date else "future" + if self._date: + self.mode = "day" + elif self.is_start_or_end_in_query(): + self.mode = "all" + else: + self.mode = "future" self.uid = None # Used to get all occurrences from a single event. Overrides all other settings # noqa - @property - def show_filter(self): - ret = True + def is_start_or_end_in_query(self): if self.is_collection: ctx = self.default_context query = queryparser.parseFormquery(ctx, ctx.query) if "start" in query or "end" in query: - # Don't show the date filter, if a date is given in the - # collection's query - ret = False + return True + return False + + @property + def show_filter(self): + ret = True + if self.is_start_or_end_in_query(): + # Don't show the date filter, if a date is given in the + # collection's query + ret = False return ret @property @@ -150,12 +160,14 @@ def events(self, ret_mode=RET_MODE_ACCESSORS, expand=True, batch=True): ctx, ctx.query, sort_on=sort_on, sort_order=sort_order ) custom_query = self.request.get("contentFilter", {}) - if "start" not in query or "end" not in query: - # ... else don't show the navigation bar + # only use custom end or start dates, if none are used by the collection + if "start" not in query and "end" not in query: start, end = self._start_end start, end = _prepare_range(ctx, start, end) custom_query.update(start_end_query(start, end)) - res = ctx.results(batch=False, brains=True, custom_query=custom_query) + res = ctx.results(batch=False, brains=True, custom_query=custom_query) + else: + res = ctx.results(batch=False, brains=True) if expand: # get start and end values from the query to ensure limited # listing for occurrences From 8f125c817c061588b8506d7d81e3fdd3b85528a7 Mon Sep 17 00:00:00 2001 From: Thibaut Born Date: Mon, 24 Jun 2024 17:29:43 +0200 Subject: [PATCH 2/3] restucture code event_listing context: make code more readable by seperating usecases --- plone/app/event/browser/configure.zcml | 22 +- plone/app/event/browser/event_listing.py | 289 ++++++++++++----------- 2 files changed, 172 insertions(+), 139 deletions(-) diff --git a/plone/app/event/browser/configure.zcml b/plone/app/event/browser/configure.zcml index ea49f92b..cf31a1d9 100644 --- a/plone/app/event/browser/configure.zcml +++ b/plone/app/event/browser/configure.zcml @@ -23,10 +23,30 @@ menu="plone_displayviews" title="Event listing" /> + + Date: Thu, 22 Aug 2024 17:19:34 +0200 Subject: [PATCH 3/3] update changenote --- news/405.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 news/405.bugfix diff --git a/news/405.bugfix b/news/405.bugfix new file mode 100644 index 00000000..e3c8323d --- /dev/null +++ b/news/405.bugfix @@ -0,0 +1 @@ +Fix query for when start/end dates are set on collections and refactor event_listing. [ThibautBorn]