def put(self, question_id): """Updates the QuestionSkillLink models with respect to the given question. """ skill_ids_task_list = self.payload.get('skill_ids_task_list') if skill_ids_task_list is None: raise self.InvalidInputException( 'Missing fields \'skill_ids_task_list\'in payload') for task_dict in skill_ids_task_list: if not 'id' in task_dict: raise self.InvalidInputException('Missing skill ID.') if task_dict['task'] == 'remove': question_services.delete_question_skill_link( self.user_id, question_id, task_dict['id']) elif task_dict['task'] == 'add': question_services.create_new_question_skill_link( self.user_id, question_id, task_dict['id'], task_dict['difficulty']) elif task_dict['task'] == 'update_difficulty': question_services.update_question_skill_link_difficulty( question_id, task_dict['id'], float(task_dict['difficulty'])) else: raise self.InvalidInputException('Invalid task.') self.render_json(self.values)
def put(self, question_id, skill_id): """Updates the difficulty of the question with respect to the given skill. """ new_difficulty = float(self.payload.get('new_difficulty')) question_services.update_question_skill_link_difficulty( question_id, skill_id, new_difficulty) self.render_json(self.values)
def put(self, question_id): """Updates the QuestionSkillLink models with respect to the given question. """ if self.payload.get('action') == 'update_difficulty': new_difficulty = self.payload.get('new_difficulty') skill_id = self.payload.get('skill_id') if skill_id is None: raise self.InvalidInputException( 'The \'skill_id\' field is missing in payload') if new_difficulty is None: raise self.InvalidInputException( 'The \'new_difficulty\' field is missing in payload') question_services.update_question_skill_link_difficulty( question_id, skill_id, float(new_difficulty)) elif self.payload.get('action') == 'edit_links': difficulty = self.payload.get('difficulty') skill_ids_task_list = self.payload.get('skill_ids_task_list') if skill_ids_task_list is None: raise self.InvalidInputException( 'Missing fields \'skill_ids_task_list\'in payload') for task_dict in skill_ids_task_list: if not 'id' in task_dict: raise self.InvalidInputException( 'Missing skill ID for edit_links.') if task_dict['task'] == 'remove': question_services.delete_question_skill_link( self.user_id, question_id, task_dict['id']) elif task_dict['task'] == 'add': if difficulty is None: raise self.InvalidInputException( 'Missing field \'difficulty\' in payload') question_services.create_new_question_skill_link( self.user_id, question_id, task_dict['id'], difficulty) else: raise self.InvalidInputException( 'Invalid task for edit_links.') else: raise self.InvalidInputException('Invalid action in payload.') self.render_json(self.values)
def test_update_question_skill_link_difficulty(self): question_services.create_new_question_skill_link( self.editor_id, self.question_id, 'skill_1', 0.3) _, merged_question_skill_links, _ = ( question_services.get_displayable_question_skill_link_details( 2, ['skill_1'], '')) self.assertEqual(merged_question_skill_links[0].skill_difficulties, [0.3]) question_services.update_question_skill_link_difficulty( self.question_id, 'skill_1', 0.9) _, merged_question_skill_links, _ = ( question_services.get_displayable_question_skill_link_details( 2, ['skill_1'], '')) self.assertEqual(merged_question_skill_links[0].skill_difficulties, [0.9]) with self.assertRaisesRegexp( Exception, 'The given question and skill are not linked.'): question_services.update_question_skill_link_difficulty( self.question_id, 'skill_10', 0.9)