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
a96bda8c
Commit
a96bda8c
authored
May 25, 2018
by
ibuler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[Update] 修改树形结构
parent
bff3868b
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
32 additions
and
15 deletions
+32
-15
node.py
apps/assets/models/node.py
+27
-14
settings.py
apps/jumpserver/settings.py
+5
-1
No files found.
apps/assets/models/node.py
View file @
a96bda8c
...
...
@@ -65,15 +65,25 @@ class Node(models.Model):
key__regex
=
r'^{}:[0-9]+$'
.
format
(
self
.
key
)
)
def
get_children_with_self
(
self
):
return
self
.
__class__
.
objects
.
filter
(
key__regex
=
r'^{0}$|^{0}:[0-9]+$'
.
format
(
self
.
key
)
)
def
get_all_children
(
self
):
return
self
.
__class__
.
objects
.
filter
(
key__startswith
=
'{}:'
.
format
(
self
.
key
)
)
def
get_all_children_with_self
(
self
):
return
self
.
__class__
.
objects
.
filter
(
key__regex
=
r'^{0}$|^{0}:'
.
format
(
self
.
key
)
)
def
get_family
(
self
):
children
=
list
(
self
.
get_all_children
())
children
.
append
(
self
)
return
children
ancestor
=
self
.
ancestor
children
=
self
.
get_all_children
(
)
return
[
*
tuple
(
ancestor
),
self
,
*
tuple
(
children
)]
def
get_assets
(
self
):
from
.asset
import
Asset
...
...
@@ -88,7 +98,7 @@ class Node(models.Model):
if
self
.
is_root
():
assets
=
Asset
.
objects
.
all
()
else
:
nodes
=
self
.
get_
family
()
nodes
=
self
.
get_
all_children_with_self
()
assets
=
Asset
.
objects
.
filter
(
nodes__in
=
nodes
)
.
distinct
()
return
assets
...
...
@@ -108,18 +118,15 @@ class Node(models.Model):
@property
def
parent
(
self
):
if
self
.
key
==
"0"
:
return
self
.
__class__
.
root
()
elif
not
self
.
key
.
startswith
(
"0"
):
if
self
.
key
==
"0"
or
not
self
.
key
.
startswith
(
"0"
):
return
self
.
__class__
.
root
()
parent_key
=
":"
.
join
(
self
.
key
.
split
(
":"
)[:
-
1
])
try
:
parent
=
self
.
__class__
.
objects
.
get
(
key
=
parent_key
)
return
parent
except
Node
.
DoesNotExist
:
return
self
.
__class__
.
root
()
else
:
return
parent
@parent.setter
def
parent
(
self
,
parent
):
...
...
@@ -127,14 +134,20 @@ class Node(models.Model):
@property
def
ancestor
(
self
):
if
self
.
parent
==
self
.
__class__
.
root
():
_key
=
self
.
key
.
split
(
':'
)
ancestor_keys
=
[]
if
self
.
is_root
():
return
[
self
.
__class__
.
root
()]
else
:
return
[
self
.
parent
,
*
tuple
(
self
.
parent
.
ancestor
)]
for
i
in
range
(
len
(
_key
)
-
1
):
_key
.
pop
()
ancestor_keys
.
append
(
':'
.
join
(
_key
))
return
self
.
__class__
.
objects
.
filter
(
key__in
=
ancestor_keys
)
@property
def
ancestor_with_
node
(
self
):
ancestor
=
self
.
ancestor
def
ancestor_with_
self
(
self
):
ancestor
=
list
(
self
.
ancestor
)
ancestor
.
insert
(
0
,
self
)
return
ancestor
...
...
apps/jumpserver/settings.py
View file @
a96bda8c
...
...
@@ -229,7 +229,11 @@ LOGGING = {
'django_auth_ldap'
:
{
'handlers'
:
[
'console'
,
'ansible_logs'
],
'level'
:
"INFO"
,
}
},
# 'django.db': {
# 'handlers': ['console', 'file'],
# 'level': 'DEBUG'
# }
}
}
...
...
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