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
8694511d
Commit
8694511d
authored
Mar 06, 2019
by
ibuler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[Update] 完成
parent
58c4a46f
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
25 additions
and
19 deletions
+25
-19
user_permission.py
apps/perms/api/user_permission.py
+20
-14
signals_handler.py
apps/perms/signals_handler.py
+2
-2
utils.py
apps/perms/utils.py
+3
-3
No files found.
apps/perms/api/user_permission.py
View file @
8694511d
...
...
@@ -48,28 +48,34 @@ class UserPermissionMixin:
kwargs
.
get
(
'pk'
)
is
None
:
set_to_root_org
()
def
get_response_from_cache
(
self
,
request
):
if
self
.
cache_policy
in
[
'1'
,
'using'
]:
path_md5
=
md5
(
request
.
get_full_path
()
.
encode
())
.
hexdigest
()
obj
=
self
.
get_object
()
util
=
AssetPermissionUtil
(
obj
,
cache_policy
=
self
.
cache_policy
)
cache_id
=
'{}_{}'
.
format
(
path_md5
,
util
.
cache_meta
.
get
(
'id'
))
response
=
self
.
get_cache_response
(
cache_id
)
return
response
def
get_object
(
self
):
return
None
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
change_org_if_need
(
request
,
kwargs
)
self
.
cache_policy
=
request
.
GET
.
get
(
'cache_policy'
,
'0'
)
path_md5
=
md5
(
request
.
get_full_path
()
.
encode
())
.
hexdigest
()
path_cache_key
=
'{}_{}'
.
format
(
path_md5
,
'*'
)
if
self
.
cache_policy
in
AssetPermissionUtil
.
CACHE_POLICY_MAP
[
0
]:
obj
=
self
.
get_object
()
if
obj
is
None
:
return
super
()
.
get
(
request
,
*
args
,
**
kwargs
)
request_path_md5
=
md5
(
request
.
get_full_path
()
.
encode
())
.
hexdigest
()
obj_id
=
str
(
obj
.
id
)
expire_cache_key
=
'{}_{}'
.
format
(
obj_id
,
'*'
)
if
self
.
CACHE_TIME
<=
0
or
\
self
.
cache_policy
in
AssetPermissionUtil
.
CACHE_POLICY_MAP
[
0
]:
return
super
()
.
get
(
request
,
*
args
,
**
kwargs
)
elif
self
.
cache_policy
in
AssetPermissionUtil
.
CACHE_POLICY_MAP
[
2
]:
self
.
expire_cache_response
(
path
_cache_key
)
obj
=
self
.
get_object
()
self
.
expire_cache_response
(
expire
_cache_key
)
util
=
AssetPermissionUtil
(
obj
,
cache_policy
=
self
.
cache_policy
)
cache_id
=
'{}_{}'
.
format
(
path_md5
,
util
.
cache_meta
.
get
(
'id'
))
meta_cache_id
=
util
.
cache_meta
.
get
(
'id'
)
cache_id
=
'{}_{}_{}'
.
format
(
obj_id
,
request_path_md5
,
meta_cache_id
)
# 没有数据缓冲
if
not
meta_cache_id
:
response
=
super
()
.
get
(
request
,
*
args
,
**
kwargs
)
self
.
set_cache_response
(
cache_id
,
response
)
return
response
# 从响应缓冲里获取响应
response
=
self
.
get_cache_response
(
cache_id
)
if
not
response
:
response
=
super
()
.
get
(
request
,
*
args
,
**
kwargs
)
...
...
apps/perms/signals_handler.py
View file @
8694511d
...
...
@@ -11,12 +11,12 @@ from .models import AssetPermission
logger
=
get_logger
(
__file__
)
@receiver
(
post_save
)
@receiver
(
post_save
,
sender
=
AssetPermission
)
def
on_permission_update
(
sender
,
**
kwargs
):
AssetPermissionUtil
.
expire_all_cache
()
@receiver
(
post_delete
)
@receiver
(
post_delete
,
sender
=
AssetPermission
)
def
on_permission_delete
(
sender
,
**
kwargs
):
AssetPermissionUtil
.
expire_all_cache
()
...
...
apps/perms/utils.py
View file @
8694511d
...
...
@@ -177,7 +177,7 @@ class AssetPermissionUtil:
return
cached
def
get_assets
(
self
):
if
self
.
cache_policy
in
self
.
CACHE_POLICY_MAP
[
1
]:
if
self
.
CACHE_TIME
<=
0
or
self
.
cache_policy
in
self
.
CACHE_POLICY_MAP
[
1
]:
return
self
.
get_assets_from_cache
()
elif
self
.
cache_policy
in
self
.
CACHE_POLICY_MAP
[
2
]:
self
.
expire_cache
()
...
...
@@ -206,7 +206,7 @@ class AssetPermissionUtil:
return
cached
def
get_nodes_with_assets
(
self
):
if
self
.
cache_policy
in
self
.
CACHE_POLICY_MAP
[
1
]:
if
self
.
CACHE_TIME
<=
0
or
self
.
cache_policy
in
self
.
CACHE_POLICY_MAP
[
1
]:
return
self
.
get_nodes_with_assets_from_cache
()
elif
self
.
cache_policy
in
self
.
CACHE_POLICY_MAP
[
2
]:
self
.
expire_cache
()
...
...
@@ -229,7 +229,7 @@ class AssetPermissionUtil:
return
cached
def
get_system_users
(
self
):
if
self
.
cache_policy
in
self
.
CACHE_POLICY_MAP
[
1
]:
if
self
.
CACHE_TIME
<=
0
or
self
.
cache_policy
in
self
.
CACHE_POLICY_MAP
[
1
]:
return
self
.
get_system_user_from_cache
()
elif
self
.
cache_policy
in
self
.
CACHE_POLICY_MAP
[
2
]:
self
.
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