import os import sys import django if os.path.exists('../apps'): sys.path.insert(0, '../apps') elif os.path.exists('./apps'): sys.path.insert(0, './apps') os.environ.setdefault("DJANGO_SETTINGS_MODULE", "jumpserver.settings") django.setup() from assets.models import Asset as asset_model, Host as host_model, Device as device_model from orgs.models import Organization def clean_host(): root = Organization.root() root.change_to() devices = host_model.objects.filter(platform__category='device') assets = asset_model.objects.filter(id__in=devices.values_list('asset_ptr_id', flat=True)) assets_map = {asset.id: asset for asset in assets} for host in devices: asset = assets_map.get(host.asset_ptr_id) if not asset: continue device = device_model(asset_ptr_id=asset.id) device.__dict__.update(asset.__dict__) device.save() host.delete(keep_parents=True) if __name__ == "__main__": clean_host()