Example #1
0
    def add_uncategorized_skill_id(self, new_uncategorized_skill_id):
        """Updates the skill id list of a topic object.

        Args:
            new_uncategorized_skill_id: str. The new skill id to add to
                uncategorized_skill_ids list.

        Raises:
            Exception. The given skill id is already present in a subtopic.
        """
        for subtopic in self.subtopics:
            if new_uncategorized_skill_id in subtopic.skill_ids:
                raise Exception(
                    'The skill id %s already exists in subtopic with id %s.' %
                    (new_uncategorized_skill_id, subtopic.id))

        if new_uncategorized_skill_id in self.uncategorized_skill_ids:
            raise Exception(
                'The skill id %s is already an uncategorized skill.' %
                new_uncategorized_skill_id)

        skill_ids_for_unpublished_skills = [
            skill_rights.id for skill_rights in (
                skill_services.get_all_unpublished_skill_rights())
        ]
        if new_uncategorized_skill_id in skill_ids_for_unpublished_skills:
            raise Exception('Cannot assign unpublished skills to a topic')
        self.uncategorized_skill_ids.append(new_uncategorized_skill_id)
Example #2
0
def _add_uncategorized_skill_id_to_topic(topic, uncategorized_skill_id):
    """Adds an uncategorized skill_id to a topic.

    Args:
        topic: Topic. Topic to be modified.
        uncategorized_skill_id: str. Skill ID to be added.
    """
    skill_ids_for_unpublished_skills = [
        skill_rights.id
        for skill_rights in (skill_services.get_all_unpublished_skill_rights())
    ]
    if uncategorized_skill_id in skill_ids_for_unpublished_skills:
        raise Exception('Cannot assign unpublished skills to a topic')
    topic.add_uncategorized_skill_id(uncategorized_skill_id)
    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)