Esempio n. 1
0
    def get_queryset(self):
        queryset = super().get_queryset()
        asset_id = self.request.query_params.get('asset')
        node_id = self.request.query_params.get('node')
        inherit_nodes = set()
        if not asset_id and not node_id:
            return queryset

        visions = set()
        if asset_id:
            asset = get_object_or_404(Asset, pk=asset_id)
            visions = set(queryset.filter(assets=asset))
            for node in asset.nodes.all():
                inherit_nodes.update(set(node.get_ancestor(with_self=True)))
        elif node_id:
            node = get_object_or_404(Node, pk=node_id)
            node.get_all_assets().update(classify=None)
            visions = set(queryset.filter(nodes=node))
            inherit_nodes = node.get_ancestor()

        for n in inherit_nodes:
            _visions = queryset.filter(nodes=n)
            set_or_append_attr_bulk(_visions, "inherit", n.value)
            visions.update(_visions)
        return visions
Esempio n. 2
0
 def get_all_users(self):
     users = set(self.users.all())
     for group in self.user_groups.all():
         _users = group.users.all()
         set_or_append_attr_bulk(_users, 'inherit', group.name)
         users.update(set(_users))
     return users
Esempio n. 3
0
 def get_all_assets(self):
     assets = set(self.assets.all())
     for node in self.nodes.all():
         _assets = node.get_all_assets()
         set_or_append_attr_bulk(_assets, 'inherit', node.value)
         assets.update(set(_assets))
     return assets
Esempio n. 4
0
 def get_all_users(self):
     users = set(self.users.all())
     for group in self.user_groups.all():
         _users = group.users.all()
         set_or_append_attr_bulk(_users, 'inherit', group.name)
         users.update(set(_users))
     return users
Esempio n. 5
0
 def get_all_assets(self):
     assets = set(self.assets.all())
     for node in self.nodes.all():
         _assets = node.get_all_assets()
         set_or_append_attr_bulk(_assets, 'inherit', node.value)
         assets.update(set(_assets))
     return assets
Esempio n. 6
0
    def get_queryset(self):
        queryset = super().get_queryset().all()
        search = self.request.query_params.get('search')
        asset_id = self.request.query_params.get('asset')
        node_id = self.request.query_params.get('node')
        inherit_nodes = set()

        if search:
            queryset = queryset.filter(name__icontains=search)

        if not asset_id and not node_id:
            return queryset

        permissions = set()
        if asset_id:
            asset = get_object_or_404(Asset, pk=asset_id)
            permissions = set(queryset.filter(assets=asset))
            for node in asset.nodes.all():
                inherit_nodes.update(set(node.get_ancestor(with_self=True)))
        elif node_id:
            node = get_object_or_404(Node, pk=node_id)
            permissions = set(queryset.filter(nodes=node))
            inherit_nodes = node.get_ancestor()

        for n in inherit_nodes:
            _permissions = queryset.filter(nodes=n)
            set_or_append_attr_bulk(_permissions, "inherit", n.value)
            permissions.update(_permissions)

        return list(permissions)
Esempio n. 7
0
 def get_user_assets_inherit_group(cls, user):
     assets = defaultdict(set)
     for group in user.groups.all():
         _assets = cls.get_user_group_assets(group)
         set_or_append_attr_bulk(_assets, 'inherit_group', group.id)
         for asset, _system_users in _assets.items():
             assets[asset].update(_system_users)
     return assets
Esempio n. 8
0
 def get_user_assets_inherit_group(cls, user):
     assets = defaultdict(set)
     for group in user.groups.all():
         _assets = cls.get_user_group_assets(group)
         set_or_append_attr_bulk(_assets, 'inherit_group', group.id)
         for asset, _system_users in _assets.items():
             assets[asset].update(_system_users)
     return assets
Esempio n. 9
0
 def get_user_group_assets_direct(cls, group):
     assets = defaultdict(set)
     permissions = cls.get_user_group_permissions(group)
     for perm in permissions:
         _assets = perm.assets.all().valid()
         _system_users = perm.system_users.all()
         set_or_append_attr_bulk(_assets, 'permission', perm.id)
         for asset in _assets:
             assets[asset].update(set(_system_users))
     return assets
Esempio n. 10
0
 def get_user_group_nodes(cls, group):
     nodes = defaultdict(set)
     permissions = cls.get_user_group_permissions(group)
     for perm in permissions:
         _nodes = perm.nodes.all()
         _system_users = perm.system_users.all()
         set_or_append_attr_bulk(_nodes, 'permission', perm.id)
         for node in _nodes:
             nodes[node].update(set(_system_users))
     return nodes
Esempio n. 11
0
 def get_user_group_nodes_assets(cls, group):
     assets = defaultdict(set)
     nodes = cls.get_user_group_nodes(group)
     for node, _system_users in nodes.items():
         _assets = node.get_all_assets()
         set_or_append_attr_bulk(_assets, 'inherit_node', node.id)
         set_or_append_attr_bulk(_assets, 'permission', getattr(node, 'permission', None))
         for asset in _assets:
             assets[asset].update(set(_system_users))
     return assets
Esempio n. 12
0
 def get_user_group_assets_direct(cls, group):
     assets = defaultdict(set)
     permissions = cls.get_user_group_permissions(group)
     for perm in permissions:
         _assets = perm.assets.all()
         _system_users = perm.system_users.all()
         set_or_append_attr_bulk(_assets, 'permission', perm.id)
         for asset in _assets:
             assets[asset].update(set(_system_users))
     return assets
Esempio n. 13
0
 def get_user_group_nodes(cls, group):
     nodes = defaultdict(set)
     permissions = cls.get_user_group_permissions(group)
     for perm in permissions:
         _nodes = perm.nodes.all()
         _system_users = perm.system_users.all()
         set_or_append_attr_bulk(_nodes, 'permission', perm.id)
         for node in _nodes:
             nodes[node].update(set(_system_users))
     return nodes
Esempio n. 14
0
 def get_user_group_nodes_assets(cls, group):
     assets = defaultdict(set)
     nodes = cls.get_user_group_nodes(group)
     for node, _system_users in nodes.items():
         _assets = node.get_all_valid_assets()
         set_or_append_attr_bulk(_assets, 'inherit_node', node.id)
         set_or_append_attr_bulk(_assets, 'permission',
                                 getattr(node, 'permission', None))
         for asset in _assets:
             assets[asset].update(set(_system_users))
     return assets