@@ -70,16 +70,32 @@ def meetings_index(request: HttpRequest) -> HttpResponse:
70
70
now = timezone .now ()
71
71
active_semester = Semester .get_active ()
72
72
73
+ ongoing_meetings = Meeting .get_user_queryset (request .user ) \
74
+ .filter (starts_at__lte = now ) \
75
+ .filter (ends_at__gte = now ) \
76
+ .order_by ("starts_at" ) \
77
+ .select_related ("room" , "host" )[:3 ]
78
+
79
+ ongoing_meeting = None
80
+ if len (ongoing_meetings ) > 0 :
81
+ ongoing_meeting = ongoing_meetings [0 ]
82
+
83
+ upcoming_meetings = Meeting .get_user_queryset (request .user ) \
84
+ .filter (starts_at__gte = now ) \
85
+ .order_by ("starts_at" ) \
86
+ .prefetch_related () \
87
+ .select_related ("room" , "host" )[:3 ]
88
+
89
+ next_meeting = None
90
+ if len (upcoming_meetings ) > 0 :
91
+ next_meeting = upcoming_meetings [0 ]
92
+
93
+
73
94
return TemplateResponse (request , "portal/meetings/index.html" , {
74
- "ongoing_meetings" : Meeting .get_user_queryset (request .user )
75
- .filter (starts_at__lte = now )
76
- .filter (ends_at__gte = now )
77
- .order_by ("starts_at" )
78
- .select_related ()[:3 ],
79
- "upcoming_meetings" : Meeting .get_user_queryset (request .user )
80
- .filter (starts_at__gte = now )
81
- .order_by ("starts_at" )
82
- .select_related ()[:3 ],
95
+ "ongoing_meetings" : ongoing_meetings ,
96
+ "ongoing_meeting" : ongoing_meeting ,
97
+ "upcoming_meetings" : upcoming_meetings ,
98
+ "next_meeting" : next_meeting ,
83
99
"is_enrolled" : bool (request .user .enrollments .filter (semester = active_semester ).first ()) if request .user .is_authenticated else False ,
84
100
"can_schedule_workshops_check" : CheckUserCanScheduleWorkshop ().check (request .user , active_semester )
85
101
})
@@ -134,11 +150,14 @@ def get_context_data(self, **kwargs):
134
150
135
151
data ["can_manage_attendance" ] = False
136
152
137
- can_manage_attendance = cache .get_or_set (
138
- f"can_manage_attendance:{ self .object .pk } :{ self .request .user .pk } " ,
139
- default = self .can_manage_attendance ,
140
- timeout = 60 * 60 * 24 ,
141
- )
153
+ if self .request .user .is_authenticated :
154
+ can_manage_attendance = cache .get_or_set (
155
+ f"can_manage_attendance:{ self .object .pk } :{ self .request .user .pk } " ,
156
+ default = self .can_manage_attendance (),
157
+ timeout = 60 * 60 * 24 ,
158
+ )
159
+ else :
160
+ can_manage_attendance = False
142
161
143
162
if can_manage_attendance :
144
163
data ["can_manage_attendance" ] = True
0 commit comments