mirror of https://github.com/jumpserver/jumpserver
perf(perms): 优化用户授权树返回org_name字段;添加thread_local属性org_mapper减少查询次数
parent
6d427b9834
commit
c3b09dd800
|
@ -69,6 +69,7 @@ class SerializeToTreeNodeMixin:
|
|||
'ip': asset.ip,
|
||||
'protocols': asset.protocols_as_list,
|
||||
'platform': asset.platform_base,
|
||||
'org_name': asset.org_name
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ from django.core.exceptions import ValidationError
|
|||
from common.utils import get_logger
|
||||
from ..utils import (
|
||||
set_current_org, get_current_org, current_org,
|
||||
filter_org_queryset
|
||||
filter_org_queryset, get_org_name_by_id
|
||||
)
|
||||
from ..models import Organization
|
||||
|
||||
|
@ -76,7 +76,7 @@ class OrgModelMixin(models.Model):
|
|||
|
||||
@property
|
||||
def org_name(self):
|
||||
return self.org.name
|
||||
return get_org_name_by_id(self.org_id)
|
||||
|
||||
@property
|
||||
def fullname(self, attr=None):
|
||||
|
|
|
@ -65,6 +65,38 @@ def get_current_org_id():
|
|||
return org_id
|
||||
|
||||
|
||||
def construct_org_mapper():
|
||||
orgs = Organization.objects.all()
|
||||
org_mapper = {str(org.id): org for org in orgs}
|
||||
default_org = Organization.default()
|
||||
org_mapper.update({
|
||||
'': default_org,
|
||||
Organization.DEFAULT_ID: default_org
|
||||
})
|
||||
return org_mapper
|
||||
|
||||
|
||||
def set_org_mapper(org_mapper):
|
||||
setattr(thread_local, 'org_mapper', org_mapper)
|
||||
|
||||
|
||||
def get_org_mapper():
|
||||
org_mapper = _find('org_mapper')
|
||||
if org_mapper is None:
|
||||
org_mapper = construct_org_mapper()
|
||||
set_org_mapper(org_mapper)
|
||||
return org_mapper
|
||||
|
||||
|
||||
def get_org_name_by_id(org_id):
|
||||
org_id = str(org_id)
|
||||
org_mapper = get_org_mapper()
|
||||
org = org_mapper.get(org_id)
|
||||
if not org:
|
||||
org = Organization.objects.filter(id=org_id).first()
|
||||
return org.name
|
||||
|
||||
|
||||
def get_current_org_id_for_serializer():
|
||||
org_id = get_current_org_id()
|
||||
if org_id == Organization.DEFAULT_ID:
|
||||
|
|
Loading…
Reference in New Issue