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
460fa8e8
Commit
460fa8e8
authored
Jan 30, 2018
by
ibuler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[Feature] tree
parent
9e09a962
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
60 additions
and
0 deletions
+60
-0
__init__.py
apps/assets/models/__init__.py
+1
-0
asset.py
apps/assets/models/asset.py
+1
-0
tree.py
apps/assets/models/tree.py
+58
-0
No files found.
apps/assets/models/__init__.py
View file @
460fa8e8
...
@@ -5,5 +5,6 @@ from .user import AdminUser, SystemUser
...
@@ -5,5 +5,6 @@ from .user import AdminUser, SystemUser
from
.label
import
Label
from
.label
import
Label
from
.cluster
import
*
from
.cluster
import
*
from
.group
import
*
from
.group
import
*
from
.tree
import
*
from
.asset
import
*
from
.asset
import
*
from
.utils
import
*
from
.utils
import
*
apps/assets/models/asset.py
View file @
460fa8e8
...
@@ -36,6 +36,7 @@ class Asset(models.Model):
...
@@ -36,6 +36,7 @@ class Asset(models.Model):
port
=
models
.
IntegerField
(
default
=
22
,
verbose_name
=
_
(
'Port'
))
port
=
models
.
IntegerField
(
default
=
22
,
verbose_name
=
_
(
'Port'
))
groups
=
models
.
ManyToManyField
(
AssetGroup
,
blank
=
True
,
related_name
=
'assets'
,
verbose_name
=
_
(
'Asset groups'
))
groups
=
models
.
ManyToManyField
(
AssetGroup
,
blank
=
True
,
related_name
=
'assets'
,
verbose_name
=
_
(
'Asset groups'
))
cluster
=
models
.
ForeignKey
(
Cluster
,
related_name
=
'assets'
,
default
=
default_cluster
,
on_delete
=
models
.
SET_DEFAULT
,
verbose_name
=
_
(
'Cluster'
))
cluster
=
models
.
ForeignKey
(
Cluster
,
related_name
=
'assets'
,
default
=
default_cluster
,
on_delete
=
models
.
SET_DEFAULT
,
verbose_name
=
_
(
'Cluster'
))
nodes
=
models
.
ManyToManyField
(
'assets.Node'
,
blank
=
True
,
related_name
=
'assets'
,
verbose_name
=
_
(
"Nodes"
))
is_active
=
models
.
BooleanField
(
default
=
True
,
verbose_name
=
_
(
'Is active'
))
is_active
=
models
.
BooleanField
(
default
=
True
,
verbose_name
=
_
(
'Is active'
))
# Auth
# Auth
...
...
apps/assets/models/tree.py
0 → 100644
View file @
460fa8e8
# -*- coding: utf-8 -*-
#
from
django.db
import
models
from
django.utils.translation
import
ugettext_lazy
as
_
__all__
=
[
'Node'
]
class
Node
(
models
.
Model
):
id
=
models
.
CharField
(
primary_key
=
True
,
max_length
=
64
)
# '1:1:1:1'
name
=
models
.
CharField
(
max_length
=
128
,
verbose_name
=
_
(
"Name"
))
child_mark
=
models
.
IntegerField
(
default
=
0
)
date_create
=
models
.
DateTimeField
(
auto_now_add
=
True
)
def
__str__
(
self
):
return
self
.
name
@property
def
level
(
self
):
return
len
(
self
.
id
.
split
(
':'
))
def
get_next_child_id
(
self
):
mark
=
self
.
child_mark
self
.
child_mark
+=
1
self
.
save
()
return
"{}:{}"
.
format
(
self
.
id
,
mark
)
def
create_child
(
self
,
name
):
child_id
=
self
.
get_next_child_id
()
child
=
self
.
__class__
.
objects
.
create
(
id
=
child_id
,
name
=
name
)
return
child
def
get_children
(
self
):
return
self
.
__class__
.
objects
.
filter
(
id__regex
=
r'{}:[0-9]+$'
.
format
(
self
.
id
))
def
get_all_children
(
self
):
return
self
.
__class__
.
objects
.
filter
(
id__startswith
=
'{}:'
.
format
(
self
.
id
))
def
get_assets
(
self
):
from
.asset
import
Asset
children
=
self
.
get_children
()
assets
=
Asset
.
objects
.
filter
(
nodes__in
=
children
)
return
assets
def
get_all_assets
(
self
):
from
.asset
import
Asset
children
=
self
.
get_all_children
()
assets
=
Asset
.
objects
.
filter
(
nodes__in
=
children
)
return
assets
@classmethod
def
root
(
cls
):
obj
,
created
=
cls
.
objects
.
get_or_create
(
id
=
'0'
,
defaults
=
{
"id"
:
'0'
,
'name'
:
"ROOT"
}
)
return
obj
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