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
7c694c68
Commit
7c694c68
authored
May 29, 2018
by
BaiJiangJie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[Update] 合并Node的parent.setter方法,修改node_fake的parent逻辑
parent
5b53cfb4
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
39 additions
and
41 deletions
+39
-41
node.py
apps/assets/api/node.py
+29
-31
node.py
apps/assets/models/node.py
+10
-10
No files found.
apps/assets/api/node.py
View file @
7c694c68
...
@@ -31,7 +31,7 @@ from .. import serializers
...
@@ -31,7 +31,7 @@ from .. import serializers
logger
=
get_logger
(
__file__
)
logger
=
get_logger
(
__file__
)
__all__
=
[
__all__
=
[
'NodeViewSet'
,
'NodeChildrenApi'
,
'NodeViewSet'
,
'NodeChildrenApi'
,
'NodeAssetsApi'
,
'NodeWithAssetsApi'
,
'NodeAssetsApi'
,
'NodeAddAssetsApi'
,
'NodeRemoveAssetsApi'
,
'NodeAddAssetsApi'
,
'NodeRemoveAssetsApi'
,
'NodeReplaceAssetsApi'
,
'NodeReplaceAssetsApi'
,
'NodeAddChildrenApi'
,
'RefreshNodeHardwareInfoApi'
,
'NodeAddChildrenApi'
,
'RefreshNodeHardwareInfoApi'
,
...
@@ -50,32 +50,32 @@ class NodeViewSet(BulkModelViewSet):
...
@@ -50,32 +50,32 @@ class NodeViewSet(BulkModelViewSet):
serializer
.
save
()
serializer
.
save
()
class
NodeWithAssetsApi
(
generics
.
ListAPIView
):
#
class NodeWithAssetsApi(generics.ListAPIView):
permission_classes
=
(
IsSuperUser
,)
#
permission_classes = (IsSuperUser,)
serializers
=
serializers
.
NodeSerializer
#
serializers = serializers.NodeSerializer
#
def
get_node
(
self
):
#
def get_node(self):
pk
=
self
.
kwargs
.
get
(
'pk'
)
or
self
.
request
.
query_params
.
get
(
'node'
)
#
pk = self.kwargs.get('pk') or self.request.query_params.get('node')
if
not
pk
:
#
if not pk:
node
=
Node
.
root
()
#
node = Node.root()
else
:
#
else:
node
=
get_object_or_404
(
Node
,
pk
)
#
node = get_object_or_404(Node, pk)
return
node
#
return node
#
def
get_queryset
(
self
):
#
def get_queryset(self):
queryset
=
[]
#
queryset = []
node
=
self
.
get_node
()
#
node = self.get_node()
children
=
node
.
get_children
()
#
children = node.get_children()
assets
=
node
.
get_assets
()
#
assets = node.get_assets()
queryset
.
extend
(
list
(
children
))
#
queryset.extend(list(children))
#
for
asset
in
assets
:
#
for asset in assets:
node
=
Node
()
#
node = Node()
node
.
id
=
asset
.
id
#
node.id = asset.id
node
.
parent
=
node
.
id
#
node.parent = node.id
node
.
value
=
asset
.
hostname
#
node.value = asset.hostname
queryset
.
append
(
node
)
#
queryset.append(node)
return
queryset
#
return queryset
class
NodeChildrenApi
(
mixins
.
ListModelMixin
,
generics
.
CreateAPIView
):
class
NodeChildrenApi
(
mixins
.
ListModelMixin
,
generics
.
CreateAPIView
):
...
@@ -139,9 +139,9 @@ class NodeChildrenApi(mixins.ListModelMixin, generics.CreateAPIView):
...
@@ -139,9 +139,9 @@ class NodeChildrenApi(mixins.ListModelMixin, generics.CreateAPIView):
for
asset
in
assets
:
for
asset
in
assets
:
node_fake
=
Node
()
node_fake
=
Node
()
node_fake
.
id
=
asset
.
id
node_fake
.
id
=
asset
.
id
node_fake
.
is_node
=
False
node_fake
.
parent
=
node
node_fake
.
parent
=
node
node_fake
.
value
=
asset
.
hostname
node_fake
.
value
=
asset
.
hostname
node_fake
.
is_node
=
False
queryset
.
append
(
node_fake
)
queryset
.
append
(
node_fake
)
queryset
=
sorted
(
queryset
,
key
=
lambda
x
:
x
.
is_node
,
reverse
=
True
)
queryset
=
sorted
(
queryset
,
key
=
lambda
x
:
x
.
is_node
,
reverse
=
True
)
return
queryset
return
queryset
...
@@ -177,9 +177,7 @@ class NodeAddChildrenApi(generics.UpdateAPIView):
...
@@ -177,9 +177,7 @@ class NodeAddChildrenApi(generics.UpdateAPIView):
for
node
in
children
:
for
node
in
children
:
if
not
node
:
if
not
node
:
continue
continue
# node.parent = instance
node
.
parent
=
instance
# node.save()
node
.
set_parent
(
instance
)
return
Response
(
"OK"
)
return
Response
(
"OK"
)
...
...
apps/assets/models/node.py
View file @
7c694c68
...
@@ -40,16 +40,6 @@ class Node(models.Model):
...
@@ -40,16 +40,6 @@ class Node(models.Model):
def
level
(
self
):
def
level
(
self
):
return
len
(
self
.
key
.
split
(
':'
))
return
len
(
self
.
key
.
split
(
':'
))
def
set_parent
(
self
,
instance
):
children
=
self
.
get_all_children
()
old_key
=
self
.
key
with
transaction
.
atomic
():
self
.
parent
=
instance
for
child
in
children
:
child
.
key
=
child
.
key
.
replace
(
old_key
,
self
.
key
,
1
)
child
.
save
()
self
.
save
()
def
get_next_child_key
(
self
):
def
get_next_child_key
(
self
):
mark
=
self
.
child_mark
mark
=
self
.
child_mark
self
.
child_mark
+=
1
self
.
child_mark
+=
1
...
@@ -128,7 +118,17 @@ class Node(models.Model):
...
@@ -128,7 +118,17 @@ class Node(models.Model):
@parent.setter
@parent.setter
def
parent
(
self
,
parent
):
def
parent
(
self
,
parent
):
if
self
.
is_node
:
children
=
self
.
get_all_children
()
old_key
=
self
.
key
with
transaction
.
atomic
():
self
.
key
=
parent
.
get_next_child_key
()
self
.
key
=
parent
.
get_next_child_key
()
for
child
in
children
:
child
.
key
=
child
.
key
.
replace
(
old_key
,
self
.
key
,
1
)
child
.
save
()
self
.
save
()
else
:
self
.
key
=
parent
.
key
+
':fake'
@property
@property
def
ancestor
(
self
):
def
ancestor
(
self
):
...
...
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