mirror of https://github.com/jumpserver/jumpserver
perf: 其他 asset model
parent
44d192cbe7
commit
0a2b2ad127
|
@ -1,2 +1,6 @@
|
||||||
from .common import *
|
from .common import *
|
||||||
from .host import *
|
from .host import *
|
||||||
|
from .database import *
|
||||||
|
from .network import *
|
||||||
|
from .remote_app import *
|
||||||
|
from .cloud import *
|
||||||
|
|
|
@ -186,7 +186,7 @@ class Asset(AbsConnectivity, ProtocolsMixin, NodesRelationMixin, OrgModelMixin):
|
||||||
|
|
||||||
@lazyproperty
|
@lazyproperty
|
||||||
def platform_base(self):
|
def platform_base(self):
|
||||||
return self.platform.base
|
return self.platform.type
|
||||||
|
|
||||||
@lazyproperty
|
@lazyproperty
|
||||||
def admin_user_username(self):
|
def admin_user_username(self):
|
||||||
|
@ -302,6 +302,11 @@ class Asset(AbsConnectivity, ProtocolsMixin, NodesRelationMixin, OrgModelMixin):
|
||||||
system_users = SystemUser.objects.filter(id__in=system_user_ids)
|
system_users = SystemUser.objects.filter(id__in=system_user_ids)
|
||||||
return system_users
|
return system_users
|
||||||
|
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
self.type = self.platform.type
|
||||||
|
self.category = self.platform.category
|
||||||
|
return super().save(*args, **kwargs)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
unique_together = [('org_id', 'hostname')]
|
unique_together = [('org_id', 'hostname')]
|
||||||
verbose_name = _("Asset")
|
verbose_name = _("Asset")
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from .common import Asset
|
from .common import Asset
|
||||||
|
|
||||||
|
|
||||||
class Database(Asset):
|
class Database(Asset):
|
||||||
database = models.CharField(max_length=1024, verbose_name=_("Database"), blank=True)
|
db_name = models.CharField(max_length=1024, verbose_name=_("Database"), blank=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = _("Database")
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
from django.db import models
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
|
||||||
|
|
||||||
from .common import Asset
|
from .common import Asset
|
||||||
from .device_info import DeviceInfo
|
|
||||||
|
|
||||||
|
|
||||||
class Network(Asset):
|
class Network(Asset):
|
||||||
device_info = models.ForeignKey(DeviceInfo, on_delete=models.SET_NULL,
|
pass
|
||||||
null=True, verbose_name=_("Device info"))
|
|
||||||
|
|
|
@ -1,9 +1,16 @@
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
|
from orgs.mixins.models import OrgModelMixin
|
||||||
|
from common.mixins.models import CommonModelMixin
|
||||||
from .common import Asset
|
from .common import Asset
|
||||||
|
|
||||||
|
|
||||||
|
class RemoteAppHost(CommonModelMixin, OrgModelMixin):
|
||||||
|
host = models.ForeignKey('assets.Host', verbose_name=_("Host"))
|
||||||
|
system_user = models.ForeignKey('assets.SystemUser', verbose_name=_("System user"))
|
||||||
|
|
||||||
|
|
||||||
class RemoteApp(Asset):
|
class RemoteApp(Asset):
|
||||||
app_path = models.CharField(max_length=1024, verbose_name=_("App path"))
|
app_path = models.CharField(max_length=1024, verbose_name=_("App path"))
|
||||||
attrs = models.JSONField(default=dict, verbose_name=_('Attrs'))
|
attrs = models.JSONField(default=dict, verbose_name=_('Attrs'))
|
||||||
|
|
|
@ -11,4 +11,5 @@ from .cmd_filter import *
|
||||||
from .gathered_user import *
|
from .gathered_user import *
|
||||||
from .favorite_asset import *
|
from .favorite_asset import *
|
||||||
from .account import *
|
from .account import *
|
||||||
|
from .platform import *
|
||||||
from .backup import *
|
from .backup import *
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from django.core.validators import RegexValidator
|
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from orgs.mixins.serializers import BulkOrgResourceModelSerializer
|
from orgs.mixins.serializers import BulkOrgResourceModelSerializer
|
||||||
|
@ -9,7 +8,6 @@ from ...models import Asset, Node, Platform, SystemUser
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'AssetSerializer', 'AssetSimpleSerializer', 'MiniAssetSerializer',
|
'AssetSerializer', 'AssetSimpleSerializer', 'MiniAssetSerializer',
|
||||||
'ProtocolsField', 'PlatformSerializer',
|
|
||||||
'AssetTaskSerializer', 'AssetsTaskSerializer', 'ProtocolsField',
|
'AssetTaskSerializer', 'AssetsTaskSerializer', 'ProtocolsField',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -95,6 +93,7 @@ class AssetSerializer(BulkOrgResourceModelSerializer):
|
||||||
]
|
]
|
||||||
read_only_fields = [
|
read_only_fields = [
|
||||||
'connectivity', 'date_verified', 'created_by', 'date_created',
|
'connectivity', 'date_verified', 'created_by', 'date_created',
|
||||||
|
'category', 'type'
|
||||||
]
|
]
|
||||||
fields = fields_small + fields_fk + fields_m2m + read_only_fields
|
fields = fields_small + fields_fk + fields_m2m + read_only_fields
|
||||||
extra_kwargs = {
|
extra_kwargs = {
|
||||||
|
@ -112,6 +111,13 @@ class AssetSerializer(BulkOrgResourceModelSerializer):
|
||||||
admin_user_field.queryset = SystemUser.objects.filter(type=SystemUser.Type.admin)
|
admin_user_field.queryset = SystemUser.objects.filter(type=SystemUser.Type.admin)
|
||||||
return fields
|
return fields
|
||||||
|
|
||||||
|
def validate_type(self, value):
|
||||||
|
print(self.initial_data)
|
||||||
|
return value
|
||||||
|
|
||||||
|
def validate_category(self, value):
|
||||||
|
return value
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setup_eager_loading(cls, queryset):
|
def setup_eager_loading(cls, queryset):
|
||||||
""" Perform necessary eager loading of data. """
|
""" Perform necessary eager loading of data. """
|
||||||
|
@ -168,25 +174,6 @@ class MiniAssetSerializer(serializers.ModelSerializer):
|
||||||
fields = AssetSerializer.Meta.fields_mini
|
fields = AssetSerializer.Meta.fields_mini
|
||||||
|
|
||||||
|
|
||||||
class PlatformSerializer(serializers.ModelSerializer):
|
|
||||||
meta = serializers.DictField(required=False, allow_null=True, label=_('Meta'))
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
|
|
||||||
# TODO 修复 drf SlugField RegexValidator bug,之后记得删除
|
|
||||||
validators = self.fields['name'].validators
|
|
||||||
if isinstance(validators[-1], RegexValidator):
|
|
||||||
validators.pop()
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = Platform
|
|
||||||
fields = [
|
|
||||||
'id', 'name', 'category', 'type', 'charset',
|
|
||||||
'internal', 'meta', 'comment'
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
class AssetSimpleSerializer(serializers.ModelSerializer):
|
class AssetSimpleSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Asset
|
model = Asset
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
from rest_framework import serializers
|
||||||
|
from django.core.validators import RegexValidator
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
from assets.models import Platform
|
||||||
|
|
||||||
|
__all__ = ['PlatformSerializer']
|
||||||
|
|
||||||
|
|
||||||
|
class PlatformSerializer(serializers.ModelSerializer):
|
||||||
|
category_display = serializers.ReadOnlyField(source='get_category_display', label=_("Category display"))
|
||||||
|
type_display = serializers.ReadOnlyField(source='get_type_display', label=_("Type display"))
|
||||||
|
meta = serializers.DictField(required=False, allow_null=True, label=_('Meta'))
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
# TODO 修复 drf SlugField RegexValidator bug,之后记得删除
|
||||||
|
validators = self.fields['name'].validators
|
||||||
|
if isinstance(validators[-1], RegexValidator):
|
||||||
|
validators.pop()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Platform
|
||||||
|
fields = [
|
||||||
|
'id', 'name', 'category', 'category_display',
|
||||||
|
'type', 'type_display', 'charset',
|
||||||
|
'internal', 'meta', 'comment'
|
||||||
|
]
|
Loading…
Reference in New Issue