Пример #1
0
def create_skill_opportunity(skill_id, skill_description):
    """Creates a SkillOpportunityModel entity in the datastore.

    Args:
        skill_id: str. The skill_id of the opportunity.
        skill_description: str. The skill_description of the opportunity.

    Raises:
        Exception. If a SkillOpportunityModel corresponding to the supplied
            skill_id already exists.
    """
    skill_opportunity_model = (
        opportunity_models.SkillOpportunityModel.get_by_id(skill_id))
    if skill_opportunity_model is not None:
        raise Exception(
            'SkillOpportunity corresponding to skill ID %s already exists.' %
            (skill_id))

    questions, _, _ = (
        question_fetchers.get_questions_and_skill_descriptions_by_skill_ids(
            constants.MAX_QUESTIONS_PER_SKILL, [skill_id], ''))
    skill_opportunity = opportunity_domain.SkillOpportunity(
        skill_id=skill_id,
        skill_description=skill_description,
        question_count=len(questions))
    _save_skill_opportunities([skill_opportunity])
Пример #2
0
 def test_load_new_structures_data(self):
     self.set_admins([self.ADMIN_USERNAME])
     self.login(self.ADMIN_EMAIL, is_super_admin=True)
     csrf_token = self.get_new_csrf_token()
     self.post_json(
         '/adminhandler', {
             'action': 'generate_dummy_new_structures_data'
         }, csrf_token=csrf_token)
     topic_summaries = topic_services.get_all_topic_summaries()
     self.assertEqual(len(topic_summaries), 2)
     for summary in topic_summaries:
         if summary.name == 'Dummy Topic 1':
             topic_id = summary.id
     story_id = (
         topic_fetchers.get_topic_by_id(
             topic_id).canonical_story_references[0].story_id)
     self.assertIsNotNone(
         story_fetchers.get_story_by_id(story_id, strict=False))
     skill_summaries = skill_services.get_all_skill_summaries()
     self.assertEqual(len(skill_summaries), 3)
     questions, _, _ = (
         question_fetchers.get_questions_and_skill_descriptions_by_skill_ids(
             10, [
                 skill_summaries[0].id, skill_summaries[1].id,
                 skill_summaries[2].id], '')
     )
     self.assertEqual(len(questions), 3)
     self.logout()
Пример #3
0
    def test_get_questions_and_skill_descriptions_by_skill_ids(self):
        question_services.create_new_question_skill_link(
            self.editor_id, self.question_id, 'skill_1', 0.3)

        questions, _, _ = (
            question_fetchers.get_questions_and_skill_descriptions_by_skill_ids(
                2, ['skill_1'], ''))

        self.assertEqual(len(questions), 1)
        self.assertEqual(
            questions[0].to_dict(), self.question.to_dict())
Пример #4
0
 def test_generate_dummy_skill_and_questions_data(self):
     self.set_admins([self.ADMIN_USERNAME])
     self.login(self.ADMIN_EMAIL, is_super_admin=True)
     csrf_token = self.get_new_csrf_token()
     self.post_json(
         '/adminhandler', {
             'action': 'generate_dummy_new_skill_data'
         }, csrf_token=csrf_token)
     skill_summaries = skill_services.get_all_skill_summaries()
     self.assertEqual(len(skill_summaries), 1)
     questions, _, _ = (
         question_fetchers.get_questions_and_skill_descriptions_by_skill_ids(
             20, [skill_summaries[0].id], '')
     )
     self.assertEqual(len(questions), 15)
     self.logout()
Пример #5
0
    def test_get_questions_with_multi_skill_ids(self):
        question_id_1 = question_services.get_new_question_id()
        question_1 = self.save_new_question(
            question_id_1, self.editor_id,
            self._create_valid_question_data('ABC'), ['skill_1', 'skill_2'])
        question_services.create_new_question_skill_link(
            self.editor_id, question_id_1, 'skill_1', 0.3)
        question_services.create_new_question_skill_link(
            self.editor_id, question_id_1, 'skill_2', 0.5)

        questions, _, _ = (
            question_fetchers.get_questions_and_skill_descriptions_by_skill_ids(
                2, ['skill_1', 'skill_2'], ''))

        self.assertEqual(len(questions), 1)
        self.assertEqual(
            questions[0].to_dict(), question_1.to_dict())
Пример #6
0
    def get(self, exploration_id):
        """Handles GET request."""
        start_cursor = self.request.get('cursor')
        story_id = self.request.get('story_id')
        story = story_fetchers.get_story_by_id(story_id, strict=False)
        if story is None:
            raise self.InvalidInputException
        if not story.has_exploration(exploration_id):
            raise self.InvalidInputException
        pretest_questions, _, next_start_cursor = (
            question_fetchers.get_questions_and_skill_descriptions_by_skill_ids(
                feconf.NUM_PRETEST_QUESTIONS,
                story.get_prerequisite_skill_ids_for_exp_id(exploration_id),
                start_cursor)
        )
        question_dicts = [question.to_dict() for question in pretest_questions]

        self.values.update({
            'pretest_question_dicts': question_dicts,
            'next_start_cursor': next_start_cursor
        })
        self.render_json(self.values)
Пример #7
0
 def test_get_no_questions_with_no_skill_ids(self):
     questions, _ = (
         question_fetchers.get_questions_and_skill_descriptions_by_skill_ids(
             1, [], 0))
     self.assertEqual(len(questions), 0)