mirror of https://github.com/jumpserver/jumpserver
perf: 优化创建内置 platform
parent
cff4309b03
commit
faff0cd20a
|
@ -270,7 +270,7 @@ class AllTypes(ChoicesMixin):
|
|||
return data
|
||||
|
||||
@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 中使用
|
||||
from assets.models import Platform
|
||||
if platform_cls is None:
|
||||
|
@ -279,6 +279,7 @@ class AllTypes(ChoicesMixin):
|
|||
automation_data = platform_data.pop('automation', {})
|
||||
protocols_data = platform_data.pop('protocols', [])
|
||||
|
||||
name = platform_data['name']
|
||||
platform, created = platform_cls.objects.update_or_create(
|
||||
defaults=platform_data, name=name
|
||||
)
|
||||
|
@ -294,7 +295,6 @@ class AllTypes(ChoicesMixin):
|
|||
|
||||
platform.protocols.all().delete()
|
||||
for p in protocols_data:
|
||||
p.pop('primary', None)
|
||||
platform.protocols.create(**p)
|
||||
|
||||
@classmethod
|
||||
|
@ -335,7 +335,7 @@ class AllTypes(ChoicesMixin):
|
|||
'automation': {**default_automation, **_automation},
|
||||
'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
|
||||
def update_user_create_platforms(cls, platform_cls):
|
||||
|
@ -350,5 +350,5 @@ class AllTypes(ChoicesMixin):
|
|||
for platform in user_platforms:
|
||||
print("\t- Update platform: {}".format(platform.name))
|
||||
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)
|
||||
|
|
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()
|
||||
|
||||
for platform in platforms:
|
||||
p = platform.protocols.filter(primary=True).first()
|
||||
if p:
|
||||
continue
|
||||
p = platform.protocols.first()
|
||||
if not p:
|
||||
continue
|
||||
|
@ -45,5 +48,4 @@ class Migration(migrations.Migration):
|
|||
),
|
||||
migrations.RunPython(migrate_platform_charset),
|
||||
migrations.RunPython(migrate_platform_protocol_primary),
|
||||
migrations.RunPython(migrate_internal_platforms),
|
||||
]
|
||||
|
|
Loading…
Reference in New Issue