def watch_instruction(self, request, pk=None): student = self.get_object() assert student.pk == int(pk) instruction_name = request.data['instruction'] domain = get_domain() action = actions.watch_instruction(domain, student, instruction_name) #serializer = ActionSerializer(action, context={'request': request}) return Response()
def start_task(self, request, pk=None): student = self.get_object() assert student.pk == int(pk) task_name = request.data['task'] domain = get_domain() action = actions.start_task(domain, student, task_name) response_data = {'task_session_id': action.task_session_id} return Response(response_data)
def practice_overview(self, request, pk): del request, pk # not needed student = self.get_object() prefetch_related_objects( [student], Prefetch('task_sessions', queryset=TaskSession.objects.select_related('task'))) # -> Same as student = Student.objects.prefetch_related(...).get(pk=pk) domain = get_domain() overview = get_practice_overview(domain, student) serializer = PracticeOverviewSerializer(overview) return Response(serializer.data)
def practice_overview(self, request, pk): del request, pk # not needed student = self.get_object() prefetch_related_objects( [student], Prefetch( 'task_sessions', queryset=TaskSession.objects.select_related('task'))) # -> Same as student = Student.objects.prefetch_related(...).get(pk=pk) domain = get_domain() overview = get_practice_overview(domain, student) serializer = PracticeOverviewSerializer(overview) return Response(serializer.data)
def run_program(self, request, pk=None): task_session_id = request.data['task-session-id'] program = request.data['program'] correct = request.data['correct'] task_session = (TaskSession.objects.select_related( 'task', 'student').get(pk=task_session_id)) student = task_session.student assert student.pk == int(pk) domain = get_domain() progress = actions.run_program(domain, task_session, program, correct) response = {'correct': correct} if correct: prefetch_related_objects( [student], Prefetch('task_sessions', queryset=TaskSession.objects.select_related('task'))) response['recommendation'] = get_recommendation(domain, student) response['progress'] = progress or [] print('progress', progress) serializer = RunProgramResponseSerializer(response) return Response(serializer.data)
def run_program(self, request, pk=None): task_session_id = request.data['task-session-id'] program = request.data['program'] correct = request.data['correct'] task_session = ( TaskSession.objects .select_related('task', 'student') .get(pk=task_session_id)) student = task_session.student assert student.pk == int(pk) domain = get_domain() progress = actions.run_program(domain, task_session, program, correct) response = {'correct': correct} if correct: prefetch_related_objects( [student], Prefetch( 'task_sessions', queryset=TaskSession.objects.select_related('task'))) response['recommendation'] = get_recommendation(domain, student) response['progress'] = progress or [] print('progress', progress) serializer = RunProgramResponseSerializer(response) return Response(serializer.data)
def list(self, request, format=None): domain = get_domain() # TODO: Don't pass request context if not needed. serializer = DomainSerializer(domain, context={'request': request}) return Response(serializer.data)
def get_level(self, student): domain = get_domain() level = get_level(domain, student) return level