@receiver(pre_delete, sender=Node, dispatch_uid='<STR_LIT>')<EOL>def delete_external_nodes(sender, **kwargs):
node = kwargs['<STR_LIT>']<EOL>if node.layer.is_external is False or not hasattr(node.layer, '<STR_LIT>') or node.layer.external.synchronizer_path is None:<EOL><INDENT>return False<EOL><DEDENT>if hasattr(node, '<STR_LIT>') and node.external.external_id:<EOL><INDENT>push_changes_to_external_layers.delay(<EOL>node=node.external.external_id,<EOL>external_layer=node.layer.external,<EOL>operation='<STR_LIT>'<EOL>)<EOL><DEDENT>
sync by deleting nodes from external layers when needed