def get(self):
        """Handles GET requests."""
        skill_summaries = skill_services.get_all_skill_summaries()
        skill_ids_assigned_to_some_topic = (
            topic_fetchers.get_all_skill_ids_assigned_to_some_topic())
        merged_skill_ids = skill_services.get_merged_skill_ids()

        untriaged_skill_summaries = (
            skill_services.get_untriaged_skill_summaries(
                skill_summaries, skill_ids_assigned_to_some_topic,
                merged_skill_ids))
        untriaged_short_skill_summaries = [
            skill_domain.ShortSkillSummary.from_skill_summary(skill_summary)
            for skill_summary in untriaged_skill_summaries
        ]

        categorized_skills = (
            skill_services.get_categorized_skill_ids_and_descriptions())

        self.values.update({
            'untriaged_skill_summary_dicts': [
                short_skill_summary.to_dict()
                for short_skill_summary in untriaged_short_skill_summaries
            ],
            'categorized_skills_dict':
            categorized_skills.to_dict()
        })
        self.render_json(self.values)
Esempio n. 2
0
    def get(self):
        """Handles GET requests."""

        topic_summaries = topic_services.get_all_topic_summaries()
        topic_summary_dicts = [
            summary.to_dict() for summary in topic_summaries
        ]

        skill_summaries = skill_services.get_all_skill_summaries()
        skill_summary_dicts = [
            summary.to_dict() for summary in skill_summaries
        ]

        skill_ids_assigned_to_some_topic = (
            topic_services.get_all_skill_ids_assigned_to_some_topic())
        merged_skill_ids = (skill_services.get_merged_skill_ids())
        topic_rights_dict = topic_services.get_all_topic_rights()
        for topic_summary in topic_summary_dicts:
            if topic_rights_dict[topic_summary['id']]:
                topic_rights = topic_rights_dict[topic_summary['id']]
                if topic_rights:
                    topic_summary['is_published'] = (
                        topic_rights.topic_is_published)
                    topic_summary['can_edit_topic'] = (
                        topic_services.check_can_edit_topic(
                            self.user, topic_rights))

        untriaged_skill_summary_dicts = []
        mergeable_skill_summary_dicts = []
        for skill_summary_dict in skill_summary_dicts:
            skill_id = skill_summary_dict['id']
            if (skill_id not in skill_ids_assigned_to_some_topic) and (
                    skill_id not in merged_skill_ids):
                untriaged_skill_summary_dicts.append(skill_summary_dict)
            if (skill_id in skill_ids_assigned_to_some_topic) and (
                    skill_id not in merged_skill_ids):
                mergeable_skill_summary_dicts.append(skill_summary_dict)

        can_delete_topic = (role_services.ACTION_DELETE_TOPIC
                            in self.user.actions)

        can_create_topic = (role_services.ACTION_CREATE_NEW_TOPIC
                            in self.user.actions)

        can_delete_skill = (role_services.ACTION_DELETE_ANY_SKILL
                            in self.user.actions)

        can_create_skill = (role_services.ACTION_CREATE_NEW_SKILL
                            in self.user.actions)

        self.values.update({
            'untriaged_skill_summary_dicts': untriaged_skill_summary_dicts,
            'mergeable_skill_summary_dicts': mergeable_skill_summary_dicts,
            'topic_summary_dicts': topic_summary_dicts,
            'can_delete_topic': can_delete_topic,
            'can_create_topic': can_create_topic,
            'can_delete_skill': can_delete_skill,
            'can_create_skill': can_create_skill
        })
        self.render_json(self.values)
Esempio n. 3
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()
Esempio n. 4
0
    def test_get_all_skill_summaries(self):
        skill_summaries = skill_services.get_all_skill_summaries()

        self.assertEqual(len(skill_summaries), 1)
        self.assertEqual(skill_summaries[0].id, self.SKILL_ID)
        self.assertEqual(skill_summaries[0].description, 'Description')
        self.assertEqual(skill_summaries[0].misconception_count, 1)
    def get(self):
        """Handles GET requests."""

        topic_summaries = topic_services.get_all_topic_summaries()
        topic_summary_dicts = [
            summary.to_dict() for summary in topic_summaries
        ]

        skill_summaries = skill_services.get_all_skill_summaries()
        skill_summary_dicts = [
            summary.to_dict() for summary in skill_summaries
        ]

        topic_rights_dict = topic_services.get_all_topic_rights()
        for topic_summary in topic_summary_dicts:
            topic_rights = topic_rights_dict[topic_summary['id']]
            if topic_rights:
                topic_summary['is_published'] = (
                    topic_rights.topic_is_published)

        can_delete_topic = (role_services.ACTION_DELETE_TOPIC
                            in self.user.actions)

        can_create_topic = (role_services.ACTION_CREATE_NEW_TOPIC
                            in self.user.actions)

        self.values.update({
            'skill_summary_dicts': skill_summary_dicts,
            'topic_summary_dicts': topic_summary_dicts,
            'can_delete_topic': can_delete_topic,
            'can_create_topic': can_create_topic
        })
        self.render_json(self.values)
Esempio n. 6
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()
    def get(self):
        """Handles GET requests."""

        topic_summaries = topic_services.get_all_topic_summaries()
        topic_summary_dicts = [
            summary.to_dict() for summary in topic_summaries
        ]

        skill_summaries = skill_services.get_all_skill_summaries()
        skill_summary_dicts = [
            summary.to_dict() for summary in skill_summaries
        ]

        self.values.update({
            'skill_summary_dicts': skill_summary_dicts,
            'topic_summary_dicts': topic_summary_dicts
        })
        self.render_json(self.values)
    def get(self):
        """Handles GET requests."""

        topic_summaries = topic_services.get_all_topic_summaries()
        topic_summary_dicts = [
            summary.to_dict() for summary in topic_summaries]

        skill_summaries = skill_services.get_all_skill_summaries()
        skill_summary_dicts = [
            summary.to_dict() for summary in skill_summaries]

        topic_rights_dict = topic_services.get_all_topic_rights()
        for topic_summary in topic_summary_dicts:
            topic_rights = topic_rights_dict[topic_summary['id']]
            if topic_rights:
                topic_summary['topic_is_published'] = (
                    topic_rights.topic_is_published)

        self.values.update({
            'skill_summary_dicts': skill_summary_dicts,
            'topic_summary_dicts': topic_summary_dicts
        })
        self.render_json(self.values)
    def get(self):
        """Handles GET requests."""

        topic_summaries = topic_fetchers.get_all_topic_summaries()
        topic_summary_dicts = [
            summary.to_dict() for summary in topic_summaries
        ]

        skill_summaries = skill_services.get_all_skill_summaries()
        skill_summary_dicts = [
            summary.to_dict() for summary in skill_summaries
        ]

        skill_ids_assigned_to_some_topic = (
            topic_fetchers.get_all_skill_ids_assigned_to_some_topic())
        merged_skill_ids = (skill_services.get_merged_skill_ids())
        topic_rights_dict = topic_fetchers.get_all_topic_rights()
        for topic_summary in topic_summary_dicts:
            if topic_rights_dict[topic_summary['id']]:
                topic_rights = topic_rights_dict[topic_summary['id']]
                if topic_rights:
                    topic_summary['is_published'] = (
                        topic_rights.topic_is_published)
                    topic_summary['can_edit_topic'] = (
                        topic_services.check_can_edit_topic(
                            self.user, topic_rights))

        all_classrooms_dict = config_domain.CLASSROOM_PAGES_DATA.value
        all_classroom_names = [
            classroom['name'] for classroom in all_classrooms_dict
        ]

        topic_classroom_dict = {}
        for classroom in all_classrooms_dict:
            for topic_id in classroom['topic_ids']:
                topic_classroom_dict[topic_id] = classroom['name']

        for topic_summary_dict in topic_summary_dicts:
            topic_summary_dict['classroom'] = topic_classroom_dict.get(
                topic_summary_dict['id'], None)

        mergeable_skill_summary_dicts = []

        untriaged_skill_summaries = (
            skill_services.get_untriaged_skill_summaries(
                skill_summaries, skill_ids_assigned_to_some_topic,
                merged_skill_ids))

        categorized_skills = (
            skill_services.get_categorized_skill_ids_and_descriptions())

        for skill_summary_dict in skill_summary_dicts:
            skill_id = skill_summary_dict['id']
            if (skill_id in skill_ids_assigned_to_some_topic) and (
                    skill_id not in merged_skill_ids):
                mergeable_skill_summary_dicts.append(skill_summary_dict)

        can_delete_topic = (role_services.ACTION_DELETE_TOPIC
                            in self.user.actions)

        can_create_topic = (role_services.ACTION_CREATE_NEW_TOPIC
                            in self.user.actions)

        can_delete_skill = (role_services.ACTION_DELETE_ANY_SKILL
                            in self.user.actions)

        can_create_skill = (role_services.ACTION_CREATE_NEW_SKILL
                            in self.user.actions)

        self.values.update({
            'untriaged_skill_summary_dicts': [
                skill_summary.to_dict()
                for skill_summary in untriaged_skill_summaries
            ],
            'mergeable_skill_summary_dicts':
            mergeable_skill_summary_dicts,
            'topic_summary_dicts':
            topic_summary_dicts,
            'total_skill_count':
            len(skill_summary_dicts),
            'all_classroom_names':
            all_classroom_names,
            'can_delete_topic':
            can_delete_topic,
            'can_create_topic':
            can_create_topic,
            'can_delete_skill':
            can_delete_skill,
            'can_create_skill':
            can_create_skill,
            'categorized_skills_dict':
            categorized_skills.to_dict()
        })
        self.render_json(self.values)
Esempio n. 10
0
    def get(self):
        """Handles GET requests."""

        topic_summaries = topic_services.get_all_topic_summaries()
        topic_summary_dicts = [
            summary.to_dict() for summary in topic_summaries]

        skill_summaries = skill_services.get_all_skill_summaries()
        skill_summary_dicts = [
            summary.to_dict() for summary in skill_summaries]

        skill_ids_assigned_to_some_topic = (
            topic_services.get_all_skill_ids_assigned_to_some_topic())
        merged_skill_ids = (
            skill_services.get_merged_skill_ids())
        topic_rights_dict = topic_services.get_all_topic_rights()
        for topic_summary in topic_summary_dicts:
            if topic_rights_dict[topic_summary['id']]:
                topic_rights = topic_rights_dict[topic_summary['id']]
                if topic_rights:
                    topic_summary['is_published'] = (
                        topic_rights.topic_is_published)
                    topic_summary['can_edit_topic'] = (
                        topic_services.check_can_edit_topic(
                            self.user, topic_rights)
                    )

        all_classrooms_dict = config_domain.TOPIC_IDS_FOR_CLASSROOM_PAGES.value
        all_classroom_names = [
            classroom['name'] for classroom in all_classrooms_dict]

        for topic_summary_dict in topic_summary_dicts:
            topic_summary_dict['classroom'] = None
            for classroom in all_classrooms_dict:
                if topic_summary_dict['id'] in classroom['topic_ids']:
                    topic_summary_dict['classroom'] = classroom['name']
                    break

        untriaged_skill_summary_dicts = []
        mergeable_skill_summary_dicts = []
        categorized_skills_dict = {}
        topics = topic_fetchers.get_all_topics()
        for topic in topics:
            subtopics = topic.subtopics
            categorized_skills_dict[topic.name] = {}
            uncategorized_skills = (
                skill_services.get_descriptions_of_skills(
                    topic.uncategorized_skill_ids)[0])
            skills_list = []
            for skill_id in topic.uncategorized_skill_ids:
                skill_dict = {
                    'skill_id': skill_id,
                    'skill_description': uncategorized_skills[skill_id]
                }
                skills_list.append(skill_dict)
            categorized_skills_dict[topic.name]['uncategorized'] = (
                skills_list)
            for subtopic in subtopics:
                skills = (skill_services.get_descriptions_of_skills(
                    subtopic.skill_ids))[0]
                skills_list = []
                for skill_id in subtopic.skill_ids:
                    skill_dict = {
                        'skill_id': skill_id,
                        'skill_description': skills[skill_id]
                    }
                    skills_list.append(skill_dict)
                categorized_skills_dict[topic.name][
                    subtopic.title] = skills_list
        categorized_skills_dict['untriaged_skills'] = []
        for skill_summary_dict in skill_summary_dicts:
            skill_id = skill_summary_dict['id']
            if (skill_id not in skill_ids_assigned_to_some_topic) and (
                    skill_id not in merged_skill_ids):
                untriaged_skill_summary_dicts.append(skill_summary_dict)
                categorized_skills_dict['untriaged_skills'].append({
                    'skill_id': skill_id,
                    'skill_description': skill_summary_dict['description']
                })
            if (skill_id in skill_ids_assigned_to_some_topic) and (
                    skill_id not in merged_skill_ids):
                mergeable_skill_summary_dicts.append(skill_summary_dict)

        can_delete_topic = (
            role_services.ACTION_DELETE_TOPIC in self.user.actions)

        can_create_topic = (
            role_services.ACTION_CREATE_NEW_TOPIC in self.user.actions)

        can_delete_skill = (
            role_services.ACTION_DELETE_ANY_SKILL in self.user.actions)

        can_create_skill = (
            role_services.ACTION_CREATE_NEW_SKILL in self.user.actions)

        self.values.update({
            'untriaged_skill_summary_dicts': untriaged_skill_summary_dicts,
            'mergeable_skill_summary_dicts': mergeable_skill_summary_dicts,
            'topic_summary_dicts': topic_summary_dicts,
            'all_classroom_names': all_classroom_names,
            'can_delete_topic': can_delete_topic,
            'can_create_topic': can_create_topic,
            'can_delete_skill': can_delete_skill,
            'can_create_skill': can_create_skill,
            'categorized_skills_dict': categorized_skills_dict
        })
        self.render_json(self.values)
Esempio n. 11
0
    def get(self):
        """Handles GET requests."""

        topic_summaries = topic_services.get_all_topic_summaries()
        topic_summary_dicts = [
            summary.to_dict() for summary in topic_summaries
        ]

        skill_summaries = skill_services.get_all_skill_summaries()
        skill_summary_dicts = [
            summary.to_dict() for summary in skill_summaries
        ]

        skill_ids_assigned_to_some_topic = (
            topic_services.get_all_skill_ids_assigned_to_some_topic())
        topic_rights_dict = topic_services.get_all_topic_rights()
        for topic_summary in topic_summary_dicts:
            if topic_rights_dict[topic_summary['id']]:
                topic_rights = topic_rights_dict[topic_summary['id']]
                if topic_rights:
                    topic_summary['is_published'] = (
                        topic_rights.topic_is_published)
                    topic_summary['can_edit_topic'] = (
                        topic_services.check_can_edit_topic(
                            self.user, topic_rights))

        skill_ids_for_private_skills_by_user = [
            skill_rights.id for skill_rights in (
                skill_services.get_unpublished_skill_rights_by_creator(
                    self.user_id))
        ]

        skill_ids_for_unpublished_skills = [
            skill_rights.id for skill_rights in (
                skill_services.get_all_unpublished_skill_rights())
        ]

        untriaged_skill_summary_dicts = []
        for skill_summary_dict in skill_summary_dicts:
            skill_id = skill_summary_dict['id']
            if (skill_id not in skill_ids_assigned_to_some_topic) and (
                    skill_id not in skill_ids_for_unpublished_skills):
                untriaged_skill_summary_dicts.append(skill_summary_dict)

        unpublished_skill_summary_dicts = [
            summary.to_dict()
            for summary in (skill_services.get_multi_skill_summaries(
                skill_ids_for_private_skills_by_user))
        ]

        can_delete_topic = (role_services.ACTION_DELETE_TOPIC
                            in self.user.actions)

        can_create_topic = (role_services.ACTION_CREATE_NEW_TOPIC
                            in self.user.actions)

        can_create_skill = (role_services.ACTION_CREATE_NEW_SKILL
                            in self.user.actions)

        self.values.update({
            'untriaged_skill_summary_dicts': untriaged_skill_summary_dicts,
            'unpublished_skill_summary_dicts': unpublished_skill_summary_dicts,
            'topic_summary_dicts': topic_summary_dicts,
            'can_delete_topic': can_delete_topic,
            'can_create_topic': can_create_topic,
            'can_create_skill': can_create_skill
        })
        self.render_json(self.values)