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])
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()
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())
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()
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())
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)
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)