Skip to content

Commit f20e7fc

Browse files
authored
1 parent f748104 commit f20e7fc

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

src/onegov/feriennet/homepage_widgets.py

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
from __future__ import annotations
22

3+
from sqlalchemy.orm import selectinload
4+
35
from onegov.activity import ActivityFilter
46
from onegov.feriennet import FeriennetApp, _
57

6-
78
from typing import TYPE_CHECKING
89

910
from onegov.feriennet.collections import MatchCollection
@@ -68,21 +69,29 @@ def get_variables(self, layout: DefaultLayout) -> RenderData:
6869

6970
activity_ids = (o.activity_id for o in occasions)
7071
unique_activity_ids = list(dict.fromkeys(activity_ids))[:6]
71-
activities = VacationActivityCollection(layout.app.session()
72-
).query(
73-
).filter(VacationActivity.id.in_(unique_activity_ids)).all()
72+
activities = (
73+
VacationActivityCollection(layout.app.session())
74+
.query()
75+
.options(selectinload(VacationActivity.occasions))
76+
.filter(VacationActivity.id.in_(unique_activity_ids))
77+
.all()
78+
)
7479

7580
if len(activities) < 6:
7681
filter_obj = ActivityFilter()
7782
filter_obj.period_ids = (
7883
{layout.app.active_period.id
7984
} if layout.app.active_period else set())
80-
rest_activities = VacationActivityCollection(
81-
layout.app.session(),
82-
filter=filter_obj,
83-
).query().filter(
84-
VacationActivity.id.notin_(unique_activity_ids)).limit(
85-
6 - len(activities))
85+
rest_activities = (
86+
VacationActivityCollection(
87+
layout.app.session(),
88+
filter=filter_obj,
89+
)
90+
.query()
91+
.options(selectinload(VacationActivity.occasions))
92+
.filter(VacationActivity.id.notin_(unique_activity_ids))
93+
.limit(6 - len(activities))
94+
)
8695
activities = activities + rest_activities.all()
8796
else:
8897
activities = []

0 commit comments

Comments
 (0)