def student_view(self, context=None): user_allowed = False user_state = {} message = "" lti_parameters = {} fragment = Fragment() context.update(self._get_context_for_template()) child_fragments = self.runtime.render_children(block=self, view_name='student_view', context=context) context.update({"child_fragments": child_fragments}) if self._is_studio(): # studio view context["lms_link"] = get_lms_link_for_item(self.location) if get_lms_link_for_item else "" fragment.add_content(self._render_template('static/html/studio.html', context)) else: # Student view if self.launch_url and self._get_exam_id(): try: lti_consumer = LtiConsumer(self) lti_parameters = lti_consumer.get_signed_lti_parameters() exam_id = self._get_exam_id() user_state = self.get_proctorexam_user_state( self._get_exam_id(), lti_parameters ) context["user_state"] = user_state except LtiError: message = _("Proctor Exam xblock configuration is incomplete, LTI passport is invalid") else: message = _("Proctor Exam xblock configuration is incomplete, exam URL is missing") if user_state and "student" in user_state and (user_state["student"].get("status") == "exam_started"): # User have completed Proctor Exam indentification process, # we show him exam content html = self._render_template('static/html/sequence.html', context) fragment.add_content(html) fragment.add_frags_resources(child_fragments) else: if self._allowed_verified(): # User have to complete Proctor Exam indentification process context.update({'lti_parameters': lti_parameters, "message": message}) html = self._render_template("static/html/student.html", context) else: html = self._render_template("static/html/honor.html", context) fragment.add_content(html) fragment.add_css(self.resource_string('static/css/student.css')) return fragment
def setUp(self): super(TestLtiConsumer, self).setUp() self.lti_consumer = LtiConsumer(self.xblock)