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
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
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
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
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
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)
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
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
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
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
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
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
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
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