diff --git a/apps/assets/api/mixin.py b/apps/assets/api/mixin.py index 4374f399a..54eb91b41 100644 --- a/apps/assets/api/mixin.py +++ b/apps/assets/api/mixin.py @@ -69,6 +69,7 @@ class SerializeToTreeNodeMixin: 'ip': asset.ip, 'protocols': asset.protocols_as_list, 'platform': asset.platform_base, + 'org_name': asset.org_name }, } } diff --git a/apps/orgs/mixins/models.py b/apps/orgs/mixins/models.py index c6c18902d..af3a8a30f 100644 --- a/apps/orgs/mixins/models.py +++ b/apps/orgs/mixins/models.py @@ -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): diff --git a/apps/orgs/utils.py b/apps/orgs/utils.py index 7a4576e23..d86e707c5 100644 --- a/apps/orgs/utils.py +++ b/apps/orgs/utils.py @@ -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: