mirror of https://github.com/jumpserver/jumpserver
perf: 优化创建内置 platform
parent
cff4309b03
commit
faff0cd20a
|
@ -270,7 +270,7 @@ class AllTypes(ChoicesMixin):
|
||||||
return data
|
return data
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_or_update_by_platform_data(cls, name, platform_data, platform_cls=None):
|
def create_or_update_by_platform_data(cls, platform_data, platform_cls=None):
|
||||||
# 不直接用 Platform 是因为可能在 migrations 中使用
|
# 不直接用 Platform 是因为可能在 migrations 中使用
|
||||||
from assets.models import Platform
|
from assets.models import Platform
|
||||||
if platform_cls is None:
|
if platform_cls is None:
|
||||||
|
@ -279,6 +279,7 @@ class AllTypes(ChoicesMixin):
|
||||||
automation_data = platform_data.pop('automation', {})
|
automation_data = platform_data.pop('automation', {})
|
||||||
protocols_data = platform_data.pop('protocols', [])
|
protocols_data = platform_data.pop('protocols', [])
|
||||||
|
|
||||||
|
name = platform_data['name']
|
||||||
platform, created = platform_cls.objects.update_or_create(
|
platform, created = platform_cls.objects.update_or_create(
|
||||||
defaults=platform_data, name=name
|
defaults=platform_data, name=name
|
||||||
)
|
)
|
||||||
|
@ -294,7 +295,6 @@ class AllTypes(ChoicesMixin):
|
||||||
|
|
||||||
platform.protocols.all().delete()
|
platform.protocols.all().delete()
|
||||||
for p in protocols_data:
|
for p in protocols_data:
|
||||||
p.pop('primary', None)
|
|
||||||
platform.protocols.create(**p)
|
platform.protocols.create(**p)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -335,7 +335,7 @@ class AllTypes(ChoicesMixin):
|
||||||
'automation': {**default_automation, **_automation},
|
'automation': {**default_automation, **_automation},
|
||||||
'protocols': protocols_data
|
'protocols': protocols_data
|
||||||
}
|
}
|
||||||
cls.create_or_update_by_platform_data(name, platform_data, platform_cls=platform_cls)
|
cls.create_or_update_by_platform_data(platform_data, platform_cls=platform_cls)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def update_user_create_platforms(cls, platform_cls):
|
def update_user_create_platforms(cls, platform_cls):
|
||||||
|
@ -350,5 +350,5 @@ class AllTypes(ChoicesMixin):
|
||||||
for platform in user_platforms:
|
for platform in user_platforms:
|
||||||
print("\t- Update platform: {}".format(platform.name))
|
print("\t- Update platform: {}".format(platform.name))
|
||||||
platform_data = cls.get_type_default_platform(platform.category, platform.type)
|
platform_data = cls.get_type_default_platform(platform.category, platform.type)
|
||||||
cls.create_or_update_by_platform_data(platform.name, platform_data, platform_cls=platform_cls)
|
cls.create_or_update_by_platform_data(platform_data, platform_cls=platform_cls)
|
||||||
user_platforms.update(internal=False)
|
user_platforms.update(internal=False)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -15,6 +15,9 @@ def migrate_platform_protocol_primary(apps, schema_editor):
|
||||||
platforms = platform_model.objects.all()
|
platforms = platform_model.objects.all()
|
||||||
|
|
||||||
for platform in platforms:
|
for platform in platforms:
|
||||||
|
p = platform.protocols.filter(primary=True).first()
|
||||||
|
if p:
|
||||||
|
continue
|
||||||
p = platform.protocols.first()
|
p = platform.protocols.first()
|
||||||
if not p:
|
if not p:
|
||||||
continue
|
continue
|
||||||
|
@ -45,5 +48,4 @@ class Migration(migrations.Migration):
|
||||||
),
|
),
|
||||||
migrations.RunPython(migrate_platform_charset),
|
migrations.RunPython(migrate_platform_charset),
|
||||||
migrations.RunPython(migrate_platform_protocol_primary),
|
migrations.RunPython(migrate_platform_protocol_primary),
|
||||||
migrations.RunPython(migrate_internal_platforms),
|
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in New Issue