def post(self): """Handles the POST request.""" if not constants.ENABLE_NEW_STRUCTURE_EDITORS: raise self.PageNotFoundException old_skill_id = self.payload.get('old_skill_id') new_skill_id = self.payload.get('new_skill_id') new_skill = skill_services.get_skill_by_id(new_skill_id, strict=False) if new_skill is None: raise self.PageNotFoundException( Exception('The new skill with the given id doesn\'t exist.')) old_skill = skill_services.get_skill_by_id(old_skill_id, strict=False) if old_skill is None: raise self.PageNotFoundException( Exception('The old skill with the given id doesn\'t exist.')) question_services.update_skill_ids_of_questions( old_skill_id, old_skill.description, new_skill_id) changelist = [ skill_domain.SkillChange({ 'cmd': skill_domain.CMD_UPDATE_SKILL_PROPERTY, 'property_name': ( skill_domain.SKILL_PROPERTY_ALL_QUESTIONS_MERGED), 'old_value': False, 'new_value': True }) ] skill_services.update_skill( self.user_id, old_skill_id, changelist, 'Marking the skill as having being merged successfully.') self.render_json({ 'merged_into_skill': new_skill_id })
def test_update_skill_ids_of_questions(self): question_id_2 = question_services.get_new_question_id() self.save_new_question(question_id_2, self.editor_id, self._create_valid_question_data('ABC')) question_id_3 = question_services.get_new_question_id() self.save_new_question(question_id_3, self.editor_id, self._create_valid_question_data('ABC')) question_services.create_new_question_skill_link( self.question_id, 'skill_1', 0.5) question_services.create_new_question_skill_link( question_id_2, 'skill_1', 0.3) question_services.create_new_question_skill_link( question_id_3, 'skill_2', 0.9) question_skill_links = ( question_services.get_question_skill_links_of_skill( 'skill_1', 'Skill Description 1')) self.assertEqual(len(question_skill_links), 2) question_ids = [ question_skill.question_id for question_skill in question_skill_links ] self.assertItemsEqual(question_ids, [self.question_id, question_id_2]) for question_skill in question_skill_links: if question_skill.question_id == self.question_id: self.assertEqual(question_skill.skill_difficulty, 0.5) question_services.update_skill_ids_of_questions( 'skill_1', 'Description 1', 'skill_3') question_skill_links = ( question_services.get_question_skill_links_of_skill( 'skill_1', 'Description 1')) self.assertEqual(len(question_skill_links), 0) question_skill_links = ( question_services.get_question_skill_links_of_skill( 'skill_3', 'Skill Description 3')) question_ids = [ question_skill.question_id for question_skill in question_skill_links ] self.assertItemsEqual(question_ids, [self.question_id, question_id_2]) for question_skill in question_skill_links: if question_skill.question_id == self.question_id: self.assertEqual(question_skill.skill_difficulty, 0.5)
def test_update_skill_ids_of_questions(self): question_id_2 = question_services.get_new_question_id() self.save_new_question(question_id_2, self.editor_id, self._create_valid_question_data('ABC')) question_id_3 = question_services.get_new_question_id() self.save_new_question(question_id_3, self.editor_id, self._create_valid_question_data('ABC')) question_services.create_new_question_skill_link( self.question_id, 'skill_1') question_services.create_new_question_skill_link( question_id_2, 'skill_1') question_services.create_new_question_skill_link( question_id_3, 'skill_2') question_skill_links = ( question_services.get_question_skill_links_of_skill('skill_1')) self.assertEqual(len(question_skill_links), 2) question_ids = [ question_skill.question_id for question_skill in question_skill_links ] self.assertItemsEqual(question_ids, [self.question_id, question_id_2]) question_services.update_skill_ids_of_questions('skill_1', 'skill_3') question_skill_links = ( question_services.get_question_skill_links_of_skill('skill_1')) self.assertEqual(len(question_skill_links), 0) question_skill_links = ( question_services.get_question_skill_links_of_skill('skill_3')) question_ids = [ question_skill.question_id for question_skill in question_skill_links ] self.assertItemsEqual(question_ids, [self.question_id, question_id_2])
def post(self): """Handles the POST request.""" if not constants.ENABLE_NEW_STRUCTURES: raise self.PageNotFoundException old_skill_id = self.payload.get('old_skill_id') new_skill_id = self.payload.get('new_skill_id') question_services.update_skill_ids_of_questions( old_skill_id, new_skill_id) changelist = [ skill_domain.SkillChange({ 'cmd': skill_domain.CMD_UPDATE_SKILL_PROPERTY, 'property_name': (skill_domain.SKILL_PROPERTY_ALL_QUESTIONS_MERGED), 'old_value': False, 'new_value': True }) ] skill_services.update_skill( self.user_id, old_skill_id, changelist, 'Marking the skill as having being merged successfully.') self.render_json({'merged_into_skill': new_skill_id})