mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-10-22 16:31:33 +00:00
[Update] 优化sql, or方式改为union (#3682)
* [Update] 优化sql, or方式改为union * [Update] 优化union操作,直接union后,queryset 的一些参数不能使用,如annoate, 如filter assets__isnull=True
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
# coding: utf-8
|
||||
#
|
||||
|
||||
from django.db.models import Q
|
||||
from django.utils.translation import ugettext as _
|
||||
from orgs.utils import set_to_root_org
|
||||
|
||||
from orgs.utils import set_to_root_org
|
||||
from ..models import DatabaseAppPermission
|
||||
from common.utils import union_queryset
|
||||
from common.tree import TreeNode
|
||||
from applications.models import DatabaseApp
|
||||
from assets.models import SystemUser
|
||||
@@ -17,13 +17,15 @@ __all__ = [
|
||||
'parse_database_app_to_tree_node'
|
||||
]
|
||||
|
||||
|
||||
def get_user_database_app_permissions(user, include_group=True):
|
||||
permissions = DatabaseAppPermission.objects.all().valid().filter(users=user)
|
||||
if include_group:
|
||||
groups = user.groups.all()
|
||||
arg = Q(users=user) | Q(user_groups__in=groups)
|
||||
else:
|
||||
arg = Q(users=user)
|
||||
return DatabaseAppPermission.objects.all().valid().filter(arg)
|
||||
groups_permissions = DatabaseAppPermission.objects.all().valid()\
|
||||
.filter(user_groups__in=groups)
|
||||
permissions = union_queryset(permissions, groups_permissions)
|
||||
return permissions
|
||||
|
||||
|
||||
def get_user_group_database_app_permission(user_group):
|
||||
|
||||
Reference in New Issue
Block a user