def test_get_active_task_instance(self): taskInstance = service.get_active_task_instance(self.session) self.assertEquals(self.taskInstance, taskInstance) # solve the task and ask again taskInstance.solved = True taskInstance.save() taskInstance = service.get_active_task_instance(self.session) self.assertIsNone(taskInstance)
def get_task_by_id(user, task_id): student = StudentModel.objects.get_or_create(user=user)[0] # ask if the student is in the middle of the session task if sess_service.has_unresolved_task(student): session = sess_service.get_session(student) active_task = sess_service.get_active_task_instance(session) if active_task.task.pk == task_id: # if the given task is same as active, go in session return get_active_task_in_session(student) return get_task(student, IdSpecifidedTaskSelector(task_id))
def get_active_task_in_session(student): session = sess_service.get_session(student) active_task_instance = sess_service.get_active_task_instance(session) if not active_task_instance: raise ValueError('Student {pk} does not have an active task.') session_task_instance_info = TaskInfo( task_instance=active_task_instance, task=active_task_instance.task, student_toolbox=get_student_toolbox(student), new_instructions=get_instructions(active_task_instance.task, student), all_instructions=get_instructions(active_task_instance.task), session = session ) return session_task_instance_info
def get_task_by_id(user, task_id): student = StudentModel.objects.get_or_create(user=user)[0] # ask if the student is in the middle of the session task if sess_service.has_unresolved_task(student): session = sess_service.get_session(student) active_task = sess_service.get_active_task_instance(session) if active_task.task.pk == task_id: # if the given task is same as active, go in session return get_active_task_in_session(student) if len(TaskModel.objects.filter(pk=task_id)) == 0: # task does not exist raise LookupError('Task does not exists.') try: return get_task(student, IdSpecifidedTaskSelector(task_id)) except LookupError: # student has low level to solve the task raise LowLevelForTaskException()