Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
J
jumpserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ops
jumpserver
Commits
5055a9f3
Commit
5055a9f3
authored
Sep 24, 2019
by
ibuler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[Update] 修改获取资产的逻辑
parent
28afd1f6
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
18 additions
and
23 deletions
+18
-23
node.py
apps/assets/models/node.py
+8
-2
user.py
apps/assets/models/user.py
+5
-11
asset_permission.py
apps/perms/models/asset_permission.py
+5
-10
No files found.
apps/assets/models/node.py
View file @
5055a9f3
...
...
@@ -302,13 +302,19 @@ class NodeAssetsMixin:
return
Asset
.
objects
.
filter
(
nodes__key__regex
=
pattern
)
.
distinct
()
@classmethod
def
get_nodes_all_assets
(
cls
,
nodes_keys
,
extra_assets_ids
=
None
):
from
.asset
import
Asset
def
get_nodes_all_assets_ids
(
cls
,
nodes_keys
):
nodes_keys
=
cls
.
clean_children_keys
(
nodes_keys
)
assets_ids
=
set
()
for
key
in
nodes_keys
:
node_assets_ids
=
cls
.
tree
()
.
all_assets
(
key
)
assets_ids
.
update
(
set
(
node_assets_ids
))
return
assets_ids
@classmethod
def
get_nodes_all_assets
(
cls
,
nodes_keys
,
extra_assets_ids
=
None
):
from
.asset
import
Asset
nodes_keys
=
cls
.
clean_children_keys
(
nodes_keys
)
assets_ids
=
cls
.
get_nodes_all_assets_ids
(
nodes_keys
)
if
extra_assets_ids
:
assets_ids
.
update
(
set
(
extra_assets_ids
))
return
Asset
.
objects
.
filter
(
id__in
=
assets_ids
)
...
...
apps/assets/models/user.py
View file @
5055a9f3
...
...
@@ -148,18 +148,12 @@ class SystemUser(AssetUser):
return
True
,
None
def
get_all_assets
(
self
):
from
.node
import
Node
args
=
[
Q
(
systemuser
=
self
)]
pattern
=
set
()
from
assets.models
import
Node
nodes_keys
=
self
.
nodes
.
all
()
.
values_list
(
'key'
,
flat
=
True
)
nodes_keys
=
Node
.
clean_children_keys
(
nodes_keys
)
for
key
in
nodes_keys
:
pattern
.
add
(
r'^{0}$|^{0}:'
.
format
(
key
))
pattern
=
'|'
.
join
(
list
(
pattern
))
if
pattern
:
args
.
append
(
Q
(
nodes__key__regex
=
pattern
))
args
=
reduce
(
lambda
x
,
y
:
x
|
y
,
args
)
assets
=
Asset
.
objects
.
filter
(
args
)
.
distinct
()
assets_ids
=
set
(
self
.
assets
.
all
()
.
values_list
(
'id'
,
flat
=
True
))
nodes_assets_ids
=
Node
.
get_nodes_all_assets_ids
(
nodes_keys
)
assets_ids
.
update
(
nodes_assets_ids
)
assets
=
Asset
.
objects
.
filter
(
id__in
=
assets_ids
)
return
assets
class
Meta
:
...
...
apps/perms/models/asset_permission.py
View file @
5055a9f3
...
...
@@ -94,15 +94,10 @@ class AssetPermission(BasePermission):
)
def
get_all_assets
(
self
):
args
=
[
Q
(
granted_by_permissions
=
self
)]
pattern
=
set
()
from
assets.models
import
Node
nodes_keys
=
self
.
nodes
.
all
()
.
values_list
(
'key'
,
flat
=
True
)
nodes_keys
=
Node
.
clean_children_keys
(
nodes_keys
)
for
key
in
nodes_keys
:
pattern
.
add
(
r'^{0}$|^{0}:'
.
format
(
key
))
pattern
=
'|'
.
join
(
list
(
pattern
))
if
pattern
:
args
.
append
(
Q
(
nodes__key__regex
=
pattern
))
args
=
reduce
(
lambda
x
,
y
:
x
|
y
,
args
)
assets
=
Asset
.
objects
.
filter
(
args
)
.
distinct
()
assets_ids
=
set
(
self
.
assets
.
all
()
.
values_list
(
'id'
,
flat
=
True
))
nodes_assets_ids
=
Node
.
get_nodes_all_assets_ids
(
nodes_keys
)
assets_ids
.
update
(
nodes_assets_ids
)
assets
=
Asset
.
objects
.
filter
(
id__in
=
assets_ids
)
return
assets
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment