def add_cli(self, username: str, port: str, tree_sent: str, transport): tree_database = database.find_user(username, 'pass') if tree_database is None: logger.info('user {} does not exists'.format(username)) return None ts = tree.Tree(tree_sent) td = tree.Tree(tree_database) cli = Client(username, port, ts, transport) if username not in self.clients: self.clients[username] = [cli] else: self.clients[username].append(cli) logger.debug("new instance of client {}".format(username)) self.transports[transport] = cli tree.Tree.process_subtree(cli, ts.raw_tree, td.raw_tree) # TODO: think about client conflicts + database sync between instances logger.debug('tree has been processed for {}'.format(username)) database.save_new_tree(username, ts.raw_tree) return cli
def FADD(client, args): logger.debug('fadd : {}'.format(args)) tr = json.loads(args.decode()) directory, filename = client.find_in_tree(tr) engine.FADD(directory, 'client', filename, tr, client) logger.info('new user tree has been saved for {}'.format(client.username)) database.save_new_tree(client.username, client.user_tree.raw_tree)