예제 #1
0
 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
     })
예제 #2
0
    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)
예제 #3
0
    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])
예제 #4
0
 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})