[Update] 优化sql, or方式改为union (#3682)

* [Update] 优化sql, or方式改为union

* [Update] 优化union操作,直接union后,queryset 的一些参数不能使用,如annoate, 如filter assets__isnull=True
This commit is contained in:
老广
2020-02-05 15:56:28 +08:00
committed by GitHub
parent aa2255a87e
commit 3c69860b24
7 changed files with 53 additions and 34 deletions

View File

@@ -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):