Exemplo n.º 1
0
    def get(self, topic_id):
        """Returns the TopicRights object of a topic."""
        topic_domain.Topic.require_valid_topic_id(topic_id)

        topic_rights = topic_services.get_topic_rights(topic_id, strict=False)
        if topic_rights is None:
            raise self.InvalidInputException(
                'Expected a valid topic id to be provided.')
        user_actions_info = user_services.UserActionsInfo(self.user_id)
        can_edit_topic = topic_services.check_can_edit_topic(
            user_actions_info, topic_rights)

        can_publish_topic = (role_services.ACTION_CHANGE_TOPIC_STATUS
                             in user_actions_info.actions)

        self.values.update({
            'can_edit_topic': can_edit_topic,
            'published': topic_rights.topic_is_published,
            'can_publish_topic': can_publish_topic
        })

        self.render_json(self.values)
Exemplo 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))

        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 = []
        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 skill_ids_for_unpublished_skills) 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 skill_ids_for_unpublished_skills) and (
                        skill_id not in merged_skill_ids):
                mergeable_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_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,
            '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_delete_skill': can_delete_skill,
            'can_create_skill': can_create_skill
        })
        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)
Exemplo n.º 4
0
    def test_admin_can_manage_topic(self):
        topic_rights = topic_services.get_topic_rights(self.TOPIC_ID)

        self.assertTrue(topic_services.check_can_edit_topic(
            self.user_admin, topic_rights))
Exemplo n.º 5
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)
Exemplo n.º 6
0
    def test_check_can_edit_topic_with_no_topic_rights(self):
        user_can_edit_topic = topic_services.check_can_edit_topic(
            self.user_a, None)

        self.assertFalse(user_can_edit_topic)
Exemplo n.º 7
0
 def test_cannot_edit_topic_with_no_topic_rights(self):
     self.assertFalse(topic_services.check_can_edit_topic(self.user_a, None))