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
dea007f2
Unverified
Commit
dea007f2
authored
Aug 14, 2018
by
老广
Committed by
GitHub
Aug 14, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1688 from jumpserver/dev
[Update] 支持full value
parents
b1132bfc
cd2b88ca
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
66 additions
and
7 deletions
+66
-7
node.py
apps/assets/models/node.py
+29
-6
signals_handler.py
apps/assets/signals_handler.py
+6
-0
apps.py
apps/orgs/apps.py
+3
-0
hands.py
apps/orgs/hands.py
+4
-0
models.py
apps/orgs/models.py
+1
-1
signals_handler.py
apps/orgs/signals_handler.py
+23
-0
No files found.
apps/assets/models/node.py
View file @
dea007f2
...
...
@@ -5,9 +5,10 @@ import uuid
from
django.db
import
models
,
transaction
from
django.db.models
import
Q
from
django.utils.translation
import
ugettext_lazy
as
_
from
django.core.cache
import
cache
from
orgs.mixins
import
OrgModelMixin
from
orgs.utils
import
current_org
,
set_current_org
,
get_current_org
from
orgs.utils
import
set_current_org
,
get_current_org
from
orgs.models
import
Organization
__all__
=
[
'Node'
]
...
...
@@ -21,10 +22,10 @@ class Node(OrgModelMixin):
date_create
=
models
.
DateTimeField
(
auto_now_add
=
True
)
is_node
=
True
_full_value_cache_key_prefix
=
'_NODE_VALUE_{}'
def
__str__
(
self
):
return
self
.
value
# return self.full_value
return
self
.
full_value
def
__eq__
(
self
,
other
):
return
self
.
key
==
other
.
key
...
...
@@ -47,10 +48,29 @@ class Node(OrgModelMixin):
@property
def
full_value
(
self
):
ancestor
=
[
a
.
value
for
a
in
self
.
get_ancestor
(
with_self
=
True
)]
key
=
self
.
_full_value_cache_key_prefix
.
format
(
self
.
key
)
cached
=
cache
.
get
(
key
)
if
cached
:
return
cached
value
=
self
.
get_full_value
()
self
.
cache_full_value
(
value
)
return
value
def
get_full_value
(
self
):
# ancestor = [a.value for a in self.get_ancestor(with_self=True)]
if
self
.
is_root
():
return
self
.
value
return
' / '
.
join
(
ancestor
)
parent_full_value
=
self
.
parent
.
full_value
value
=
parent_full_value
+
' / '
+
self
.
value
return
value
def
cache_full_value
(
self
,
value
):
key
=
self
.
_full_value_cache_key_prefix
.
format
(
self
.
key
)
cache
.
set
(
key
,
value
,
3600
)
def
expire_full_value
(
self
):
key
=
self
.
_full_value_cache_key_prefix
.
format
(
self
.
key
)
cache
.
delete_pattern
(
key
+
'*'
)
@property
def
level
(
self
):
...
...
@@ -204,6 +224,10 @@ class Node(OrgModelMixin):
defaults
=
{
'value'
:
'Default'
}
return
cls
.
objects
.
get_or_create
(
defaults
=
defaults
,
key
=
'0'
)
@classmethod
def
get_tree_name_ref
(
cls
):
pass
@classmethod
def
generate_fake
(
cls
,
count
=
100
):
import
random
...
...
@@ -212,4 +236,3 @@ class Node(OrgModelMixin):
node
.
create_child
(
'Node {}'
.
format
(
i
))
apps/assets/signals_handler.py
View file @
dea007f2
...
...
@@ -86,3 +86,9 @@ def on_node_assets_changed(sender, instance=None, **kwargs):
system_users
=
SystemUser
.
objects
.
filter
(
nodes
=
instance
)
for
system_user
in
system_users
:
system_user
.
assets
.
add
(
*
tuple
(
assets
))
@receiver
(
post_save
,
sender
=
Node
)
def
on_node_update_or_created
(
sender
,
instance
=
None
,
created
=
False
,
**
kwargs
):
if
instance
and
not
created
:
instance
.
expire_full_value
()
apps/orgs/apps.py
View file @
dea007f2
...
...
@@ -3,3 +3,6 @@ from django.apps import AppConfig
class
OrgsConfig
(
AppConfig
):
name
=
'orgs'
def
ready
(
self
):
from
.
import
signals_handler
apps/orgs/hands.py
0 → 100644
View file @
dea007f2
# -*- coding: utf-8 -*-
#
from
assets.models
import
Node
from
orgs.utils
import
set_current_org
,
current_org
apps/orgs/models.py
View file @
dea007f2
...
...
@@ -27,7 +27,7 @@ class Organization(models.Model):
def
expire_cache
(
self
):
key
=
self
.
CACHE_PREFIX
.
format
(
self
.
id
)
cache
.
set
(
key
,
self
,
0
)
cache
.
set
(
key
,
self
,
1
)
@classmethod
def
get_instance_from_cache
(
cls
,
oid
):
...
...
apps/orgs/signals_handler.py
0 → 100644
View file @
dea007f2
# -*- coding: utf-8 -*-
#
from
django.db.models.signals
import
post_save
from
django.dispatch
import
receiver
from
.models
import
Organization
from
.hands
import
set_current_org
,
current_org
,
Node
@receiver
(
post_save
,
sender
=
Organization
)
def
on_org_create_or_update
(
sender
,
instance
=
None
,
created
=
False
,
**
kwargs
):
if
instance
:
old_org
=
current_org
set_current_org
(
instance
)
node_root
=
Node
.
root
()
if
node_root
.
value
!=
instance
.
name
:
node_root
.
value
=
instance
.
name
node_root
.
save
()
set_current_org
(
old_org
)
if
instance
and
not
created
:
instance
.
expire_cache
()
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