mirror of https://github.com/jumpserver/jumpserver
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.6 KiB
90 lines
2.6 KiB
from orgs.models import Organization
|
|
|
|
|
|
__all__ = ['SerializeApplicationToTreeNodeMixin']
|
|
|
|
|
|
class SerializeApplicationToTreeNodeMixin:
|
|
|
|
@staticmethod
|
|
def _serialize_db(db):
|
|
return {
|
|
'id': db.id,
|
|
'name': db.name,
|
|
'title': db.name,
|
|
'pId': '',
|
|
'open': False,
|
|
'iconSkin': 'database',
|
|
'meta': {'type': 'database_app'}
|
|
}
|
|
|
|
@staticmethod
|
|
def _serialize_remote_app(remote_app):
|
|
return {
|
|
'id': remote_app.id,
|
|
'name': remote_app.name,
|
|
'title': remote_app.name,
|
|
'pId': '',
|
|
'open': False,
|
|
'isParent': False,
|
|
'iconSkin': 'chrome',
|
|
'meta': {'type': 'remote_app'}
|
|
}
|
|
|
|
@staticmethod
|
|
def _serialize_cloud(cloud):
|
|
return {
|
|
'id': cloud.id,
|
|
'name': cloud.name,
|
|
'title': cloud.name,
|
|
'pId': '',
|
|
'open': False,
|
|
'isParent': False,
|
|
'iconSkin': 'k8s',
|
|
'meta': {'type': 'k8s_app'}
|
|
}
|
|
|
|
def _serialize_application(self, application):
|
|
method_name = f'_serialize_{application.category}'
|
|
data = getattr(self, method_name)(application)
|
|
data.update({
|
|
'pId': application.org.id,
|
|
'org_name': application.org_name
|
|
})
|
|
return data
|
|
|
|
def serialize_applications(self, applications):
|
|
data = [self._serialize_application(application) for application in applications]
|
|
return data
|
|
|
|
@staticmethod
|
|
def _serialize_organization(org):
|
|
return {
|
|
'id': org.id,
|
|
'name': org.name,
|
|
'title': org.name,
|
|
'pId': '',
|
|
'open': True,
|
|
'isParent': True,
|
|
'meta': {
|
|
'type': 'node'
|
|
}
|
|
}
|
|
|
|
def serialize_organizations(self, organizations):
|
|
data = [self._serialize_organization(org) for org in organizations]
|
|
return data
|
|
|
|
@staticmethod
|
|
def filter_organizations(applications):
|
|
organization_ids = set(applications.values_list('org_id', flat=True))
|
|
organizations = [Organization.get_instance(org_id) for org_id in organization_ids]
|
|
return organizations
|
|
|
|
def serialize_applications_with_org(self, applications):
|
|
organizations = self.filter_organizations(applications)
|
|
data_organizations = self.serialize_organizations(organizations)
|
|
data_applications = self.serialize_applications(applications)
|
|
data = data_organizations + data_applications
|
|
return data
|