def sync(project: str, computer: str, only_from: bool, only_to: bool): _create_computer() computer = computer or socket.gethostname() provider = ComputerProvider(_session) project_provider = ProjectProvider(_session) computer = provider.by_name(computer) computers = provider.all() folders_excluded = [] p = project_provider.by_name(project) assert p, f'Project={project} is not found' ignore = yaml_load(p.ignore_folders) excluded = [] for f in ignore: excluded.append(str(f)) folders_excluded.append([join('data', p.name), excluded]) folders_excluded.append([join('models', p.name), []]) for c in computers: if c.name != computer.name: if not only_from: sync_directed(_session, computer, c, folders_excluded) if not only_to: sync_directed(_session, c, computer, folders_excluded)
def computer_sync_end(): data = request_data() provider = ComputerProvider(_write_session) for computer in provider.all(): if data.get('computer') and data['computer'] != computer.name: continue meta = yaml_load(computer.meta) meta['manual_sync'] = { 'project': data['id'], 'ignore_folders': yaml_load(data['ignore_folders']) } computer.meta = yaml_dump(meta) provider.update()