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,
|
'ip': asset.ip,
|
||||||
'protocols': asset.protocols_as_list,
|
'protocols': asset.protocols_as_list,
|
||||||
'platform': asset.platform_base,
|
'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 common.utils import get_logger
|
||||||
from ..utils import (
|
from ..utils import (
|
||||||
set_current_org, get_current_org, current_org,
|
set_current_org, get_current_org, current_org,
|
||||||
filter_org_queryset
|
filter_org_queryset, get_org_name_by_id
|
||||||
)
|
)
|
||||||
from ..models import Organization
|
from ..models import Organization
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ class OrgModelMixin(models.Model):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def org_name(self):
|
def org_name(self):
|
||||||
return self.org.name
|
return get_org_name_by_id(self.org_id)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def fullname(self, attr=None):
|
def fullname(self, attr=None):
|
||||||
|
|
|
@ -65,6 +65,38 @@ def get_current_org_id():
|
||||||
return 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():
|
def get_current_org_id_for_serializer():
|
||||||
org_id = get_current_org_id()
|
org_id = get_current_org_id()
|
||||||
if org_id == Organization.DEFAULT_ID:
|
if org_id == Organization.DEFAULT_ID:
|
||||||
|
|
Loading…
Reference in New Issue