Exemple #1
0
    def get_group_data_permissions(self, group_id, tool_id):
        """
        TEMPRORARY DOESN'T WORK

        TO DO Method don't return anything
        Ver.1 - Get data by group
        Q:Why to put tool_id if data models_managers is fully defined by group_id?

        :param group_id:
        :type group_id:
        :param tool_id:
        :type tool_id:
        :return:
        :rtype:
        """
        # Validate inputs
        tool_id = _get_id_or_err(tool_id, 'tool_id')
        group_id = _get_id_or_err(group_id, 'group_id')

        # Get objects
        tool = a_m.get_tool_by_id(self.ssn, tool_id)
        if tool is None:
            raise ex.NotExistsError('Tool', 'id', tool_id)

        group = a_m.get_user_group_by_id(self.ssn, group_id)
        if group is None:
            raise ex.NotExistsError('UserGroup', 'id', group_id)

        return a_m.get_data_permission(group_id)
Exemple #2
0
    def add_role(self, name, tool_id):
        """
        Add role is correct
        :param name:
        :type name:
        :param tool_id:
        :type tool_id:
        :return:
        :rtype:
        """
        # Validate inputs
        name = _get_str_or_err(name, 'name')
        #tool_id = _get_id_or_err(tool_id, 'tool_id')

        # Get Objects
        tool = a_m.get_tool_by_id(self.ssn, tool_id)
        if tool is None:
            raise ex.NotExistsError('Tool', 'id', tool_id)

        existing = [role for role in tool.roles if role.name == name]
        if existing is not None and len(existing) > 0:
            raise ex.AlreadyExistsError('Role', 'name', name)

        new_role = self._add_role(self.ssn, name)
        # a_m.add_role_to_tool(self.ssn, new_role, tool)
        tool.roles.append(new_role)
        return new_role
Exemple #3
0
    def add_group(self, name, tool_id):
        """
        Add user group to Tool

        :param name:
        :type name:
        :param tool_id:
        :type tool_id:
        :return:
        :rtype:
        """
        # Validate inputs
        name = _get_str_or_err(name, 'name')
        tool_id = _get_id_or_err(tool_id, 'tool_id')

        # Get Objects
        tool = a_m.get_tool_by_id(self.ssn, tool_id)
        if tool is None:
            raise ex.NotExistsError('Tool', 'id', tool_id)

        existing = [ug for ug in tool.user_groups if ug.name == name]
        #  TODO Check
        if existing is not None and isinstance(existing, list):
            raise ex.AlreadyExistsError('UserGroup', 'name', name)

        return self._add_user_group(self.ssn, name, tool)
Exemple #4
0
    def get_tool(self, **kwargs):
        """
        Args:
            **kwargs: id|email
        """
        if 'id' in kwargs:
            tool_id = _get_id_or_err(kwargs['id'], 'id')
            return a_m.get_tool_by_id(self.ssn, tool_id)

        elif 'name' in kwargs:
            name = _get_str_or_err(kwargs['name'], 'name')
            return a_m.get_tool_by_name(self.ssn, name)
Exemple #5
0
    def get_feature(self, **kwargs):
        """
        Args:
            **kwargs: id|name & tool_id
        """
        if 'id' in kwargs:
            feature_id = _get_id_or_err(kwargs['id'], 'id')
            return a_m.get_feature_by_id(self.ssn, feature_id)

        elif 'name' in kwargs and 'tool_id' in kwargs:
            name = _get_str_or_err(kwargs['name'], 'name')
            tool_id = _get_id_or_err(kwargs['tool_id'], 'tool_id')
            tool = a_m.get_tool_by_id(self.ssn, tool_id)
            if tool is None:
                raise ex.NotExistsError('Tool', 'id', tool_id)
            return a_m.get_feature_by_name_in_tool(self.ssn, name, tool)
Exemple #6
0
    def add_permission(self, tool_id, node_type, name, parent_id=None):
        tool_id = _get_id_or_err(tool_id, 'tool_id')
        node_type = _get_str_or_err(node_type, 'node_type')  # Defined string
        name = _get_str_or_err(name, 'name')

        tool = a_m.get_tool_by_id(self.ssn, tool_id)
        if tool is None:
            raise ex.NotExistsError('Tool', 'id', tool_id)

        parent = None
        if parent_id is not None:
            parent_id = _get_id_or_err(parent_id, 'parent_id')
            parent = a_m.get_perm_node_in_tool(self.ssn, parent_id, tool)
            if parent is None:
                raise ex.NotExistsError('PermNode', 'id', parent_id)

        return a_m.add_perm_node(self.ssn, tool, node_type, name, parent)
Exemple #7
0
    def get_features(self, tool_id):
        """
        Return features related to given tool

        :param tool_id:
        :type tool_id:
        :return:
        :rtype:
        """
        # Validate inputs
        #tool_id = _get_id_or_err(tool_id, 'tool_id')

        # Get Objects
        tool = a_m.get_tool_by_id(self.ssn, tool_id)
        if tool is None:
            raise ex.NotExistsError('Tool', 'id', tool_id)

        return a_m.get_features_by_tool(self.ssn, tool)
Exemple #8
0
    def add_permission_value(self, tool_id, perm_node_id, value, user_id):
        tool_id = _get_id_or_err(tool_id, 'tool_id')
        perm_node_id = _get_id_or_err(perm_node_id, 'perm_node_id')
        user_id = _get_id_or_err(user_id, 'user_id')

        tool = a_m.get_tool_by_id(self.ssn, tool_id)
        if tool is None:
            raise ex.NotExistsError('Tool', 'id', tool_id)

        user = a_m.get_user_by_id(self.ssn, user_id)
        if user is None:
            raise ex.NotExistsError('User', 'id', user_id)

        perm_node = a_m.get_perm_node_in_tool(self.ssn, perm_node_id, tool)
        if perm_node is None:
            raise ex.NotExistsError('PermNode', 'id', perm_node_id)

        return a_m.add_perm_value(self.ssn, tool, perm_node, value, user)
Exemple #9
0
    def get_users(self, tool_id=None):
        """
        Return user object by given tool

        :param tool_id:
        :type tool_id:
        :return:
        :rtype:
        """
        # Validate inputs & Get object
        if tool_id is not None:
            tool_id = _get_id_or_err(tool_id, 'tool_id')
            tool = a_m.get_tool_by_id(self.ssn, tool_id)
            if tool is None:
                raise ex.NotExistsError('Tool', 'id', tool_id)

            return a_m.get_users_by_tool(self.ssn, tool)

        return a_m.get_all_users(self.ssn)
Exemple #10
0
    def get_permissions(self, tool_id, user_id):
        tool_id = _get_id_or_err(tool_id, 'tool_id')
        user_id = _get_id_or_err(user_id, 'user_id')

        tool = wha.get_tool_by_id(self.ssn, tool_id)
        user = wha.get_user_by_id(self.ssn, user_id)

        if tool is None:
            raise ex.NotExistsError('Tool', 'id', tool_id)
        if user is None:
            raise ex.NotExistsError('User', 'id', user_id)

        # default_perms = wha.get_perms_to_tool(ssn, tool)
        # wha.get_user_perms_to_tool(sess, tool, user),

        return {
            'permissions': wha.get_perms_to_tool(self.ssn, tool, user),
            'features': wha.get_user_features_to_tool(self.ssn, tool, user)
        }
Exemple #11
0
    def init_user_wb(self, user_id, tool_id):

        # Validate inputs

        tool_id = _get_id_or_err(tool_id, 'tool_id')
        user_id = _get_id_or_err(user_id, 'user_id')

        # Get Objects
        tool = a_m.get_tool_by_id(self.ssn, tool_id)
        if tool is None:
            raise ex.NotExistsError('Tool', 'id', tool_id)
        user = a_m.get_user_by_id(self.ssn, user_id)
        if user is None:
            raise ex.NotExistsError('User', 'id', user_id)

        # Version 2
        # Get raw data from table with masks
        raw_perm_values = a_m.get_raw_perm_values_for_user(
            self.ssn, tool, None)

        # Copy/Insert this raw data for specified user
        # TODO - check if there is no data for this user!!!
        for per_v in raw_perm_values:
            perm_node = per_v.perm_node
            a_m.add_perm_value(self.ssn, tool, perm_node, per_v.value, user)

        # TODO Fix bug with initialize db
        # # Get recently created permissions for user
        iaccess = _IAccess(ssn=self.ssn)
        u_perms = iaccess.get_permissions(tool_id, user_id)

        # self.istorage.backup.save(user_id, tool_id, u_perms, 'models_managers')

        # # Make backup file
        # dir_path = os.path.dirname(os.path.realpath(__file__))
        # file_name = "backup_tool_" + str(tool_id) + "_user_" \
        #             + str(user_id) + ".json"
        # file_path = os.path.join(dir_path, file_name)
        # with open(file_path, "w+") as backup_file:
        #     json.dump(u_perms, backup_file)

        pass  # TODO Confirm This Realization
Exemple #12
0
    def update_user_data_permissions(self, tool_id, user_id, permissions):
        """
        TEMPRORARY DOESN'T WORK
        :param tool_id:
        :type tool_id:
        :param user_id:
        :type user_id:
        :param permissions:
        :type permissions:
        :return:
        :rtype:
        """
        #TODO

        # Validate inputs
        tool_id = _get_id_or_err(tool_id, 'user_id')
        user_id = _get_id_or_err(user_id, 'user_id')

        # Get objects
        tool = a_m.get_tool_by_id(self.ssn, tool_id)
        if tool is None:
            raise ex.NotExistsError('Tool', 'id', tool_id)
        user = a_m.get_user_by_id(self.ssn, user_id)
        if user is None:
            raise ex.NotExistsError('User', 'id', user_id)

        # TODO Validating paths for nodes

        # Delete previous permissions for user
        a_m.del_perm_values_for_user(self.ssn, tool, user)

        # Get objects
        storage = {}
        permissions = sorted(permissions, key=lambda p: len(p['path']))
        for perm in permissions:
            self._add_permission(tool, storage, perm, user)
Exemple #13
0
    def set_permissions_template(self, tool_id, template):
        # Validate inputs
        tool_id = _get_id_or_err(tool_id, 'tool_id')
        if 'permissions' not in template or \
                not isinstance(template['permissions'], list):
            raise ex.WrongArgEx('permissions', template.get('permissions'))

        if 'features' not in template or \
                not isinstance(template['features'], list):
            raise ex.WrongArgEx('features', template.get('features'))

        feats = template['features']
        perms = template['permissions']

        # Get objects
        tool = a_m.get_tool_by_id(self.ssn, tool_id)
        if tool is None:
            raise ex.NotExistsError('Tool', 'id', tool_id)

        # Create & validate features dict for adding
        features_to_add = []
        for _f in feats:
            features_to_add.append({'name': _f.get('name')})

        # Add permissions
        perms = sorted(perms, key=lambda perm: len(perm['path']))
        storage = {}
        for perm in perms:
            self._add_permission(tool, storage, perm)

        # Add default features for tool
        if len(features_to_add) > 0:
            for f in features_to_add:
                a_m.add_feature(self.ssn, f['name'], tool)

        return None