Skip to content
Snippets Groups Projects
Verified Commit aaabb405 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Clean up

parent 376f3d74
No related branches found
No related tags found
No related merge requests found
......@@ -18,8 +18,8 @@ class RecurrenceManager(CTEManager):
def with_occurrences(
self,
start: datetime | None = None,
end: datetime | None = None,
start: datetime,
end: datetime,
start_qs: Q | None = None,
additional_filter: Q | None = None,
select_related: Sequence | None = None,
......@@ -81,7 +81,7 @@ class RecurrenceManager(CTEManager):
function="get_occurrences",
output_field=DateTimeField(),
),
F("rdates"),
Cast("rdates", output_field=ArrayField(DateTimeField())),
function="ARRAY_CAT",
output_field=ArrayField(DateTimeField()),
),
......@@ -100,7 +100,7 @@ class RecurrenceManager(CTEManager):
with_qs.only("id"),
name="qodatetimes",
)
cte_query = ( # Join WITH clause with actual data
qs = ( # Join WITH clause with actual data
cte.join(self.model, id=cte.col.id)
.with_cte(cte)
# Annotate WITH clause
......@@ -117,40 +117,14 @@ class RecurrenceManager(CTEManager):
)
)
# single_events_qs = start_qs.filter(
# rrule__isnull=True,
# )
#
# if additional_filter:
# single_events_qs = single_events_qs.filter(additional_filter)
#
# single_events_qs = single_events_qs.filter(
# Q(
# **{
# f"{self.datetime_start_field}__lte": end,
# f"{self.datetime_end_field}__gte": start,
# }
# )
# | Q(
# **{
# f"{self.date_start_field}__lte": end.date(),
# f"{self.date_end_field}__gte": start.date(),
# }
# )
# ).annotate(
# odatetime=F(self.datetime_start_field), odate=F(self.date_start_field)
# )
if select_related:
cte_query = cte_query.select_related(*select_related)
# single_events_qs = single_events_qs.select_related(*select_related)
qs = qs.select_related(*select_related)
if prefetch_related:
cte_query = cte_query.prefetch_related(*prefetch_related)
# single_events_qs = single_events_qs.prefetch_related(*prefetch_related)
qs = qs.prefetch_related(*prefetch_related)
# qs = (cte_query).union(single_events_qs)
qs = cte_query
# Hacky way to enforce RIGHT OUTER JOIN
# Otherwise, Django always will rewrite the join_type to LEFT OUTER JOIN/INNER JOIN
qs.query.alias_map["qodatetimes"].join_type = "RIGHT OUTER JOIN"
return qs
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment