(src, target, cut=False)
| 19 | target_node = Node.objects.get(key="2:1") |
| 20 | |
| 21 | def sync_node(src, target, cut=False): |
| 22 | assets = src.get_assets() |
| 23 | # 同步本节点资产 |
| 24 | for asset in assets: |
| 25 | if cut: |
| 26 | src.assets.remove(asset) |
| 27 | asset.org_id = target.org_id |
| 28 | asset.save() |
| 29 | new_asset = asset |
| 30 | else: |
| 31 | new_asset = get_object_or_none(Asset, hostname=asset.name, org_id=target.org_id) |
| 32 | if new_asset is None: |
| 33 | asset.id = None |
| 34 | asset.org_id = target.org_id |
| 35 | asset.save() |
| 36 | new_asset = asset |
| 37 | target.assets.add(new_asset) |
| 38 | # 同步子节点资产 |
| 39 | for child in src.get_children(): |
| 40 | node_new = target.create_child(child.value) |
| 41 | node_new.org_id = target.org_id |
| 42 | node_new.save() |
| 43 | sync_node(child, node_new) |
| 44 | |
| 45 | if __name__ == '__main__': |
| 46 | with transaction.atomic(): |
no test coverage detected