#!/usr/bin/python
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 Node, Asset
from common.utils import get_object_or_none
from django.db import transaction

src_node = Node.objects.get(key="0:1")
target_node = Node.objects.get(key="2:1")

def sync_node(src, target, cut=False):
    assets = src.get_assets()
	# 同步本节点资产
    for asset in assets:
        if cut:
            src.assets.remove(asset)
            asset.org_id = target.org_id
            asset.save()
            new_asset = asset
        else:
            new_asset = get_object_or_none(Asset, hostname=asset.hostname, org_id=target.org_id)
            if new_asset is None:
                asset.id = None
                asset.org_id = target.org_id
                asset.save()
                new_asset = asset
        target.assets.add(new_asset)
	# 同步子节点资产
    for child in src.get_children():
        node_new = target.create_child(child.value)
        node_new.org_id = target.org_id
        node_new.save()
        sync_node(child, node_new)

if __name__ == '__main__':
    with transaction.atomic():
        sync_node(src_node, target_node)