Skip to content

Commit 2d214d4

Browse files
committed
cope with no LTI launch or no line item on student progress view
1 parent c95c7b0 commit 2d214d4

1 file changed

Lines changed: 17 additions & 7 deletions

File tree

numbas_lti/views/resource.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from .mixins import HelpLinkMixin, ResourceManagementViewMixin, MustBeInstructorMixin, MustHaveExamMixin, INSTRUCTOR_ROLES, lti_role_or_superuser_required, reverse_with_lti
22
from .generic import CreateFileReportView, JSONView
33
from numbas_lti import forms, save_scorm_data, tasks
4+
from numbas_lti.exceptions import LineItemDoesNotExist
45
from numbas_lti.models import \
56
Resource, LTI_13_ResourceLink, AccessToken, Exam, Attempt, \
67
ReportProcess, DiscountPart, EditorLink, COMPLETION_STATUSES, \
@@ -25,6 +26,7 @@
2526
from django.views import generic
2627
from django_auth_lti.decorators import lti_role_required
2728
from pathlib import Path
29+
from pylti1p3.exception import LtiException
2830
import csv
2931
import datetime
3032
import json
@@ -289,19 +291,27 @@ def summarise_student(student):
289291
'access_tokens': AccessToken.objects.filter(user=student,resource=resource).count(),
290292
}
291293

292-
message_launch = self.get_message_launch()
293-
if message_launch:
294-
is_lti_13 = context['is_lti_13'] = True
295-
else:
296-
is_lti_13 = context['is_lti_13'] = False
294+
is_lti_13 = False
295+
try:
296+
message_launch = self.get_message_launch()
297+
if message_launch:
298+
is_lti_13 = True
299+
except LtiException:
300+
pass
301+
302+
context['is_lti_13'] = is_lti_13
297303

298304
extra_students = []
299305
ags_grades = None
300306
lti_context = resource.lti_13_contexts().first()
301307
if lti_context:
302308
ags = lti_context.get_ags()
303-
lineitem = resource.get_lti_13_lineitem()
304-
ags_grades = context['grades'] = ags.get_grades(lineitem)
309+
try:
310+
lineitem = resource.get_lti_13_lineitem()
311+
ags_grades = context['grades'] = ags.get_grades(lineitem)
312+
except LineItemDoesNotExist:
313+
pass
314+
305315
nrps_members = [m for m in lti_context.nrps_members() if m['student']]
306316
if nrps_members:
307317
got_ids = [s for student in students for s in student.lti_13_aliases.all().values_list('sub', flat=True)]

0 commit comments

Comments
 (0)