def write_file(self, data): """ Checking user with DB """ log.msg("[WRTE] User=%s trying to write file..." % data['user']) server = self.balancer.getFileServer(data['cmd'], data['file_hash']) if server is None: msg = "ERROR: Can't write now your file: servers in offline. Try later..." data['cmd'] = 'AUTH' data['error'].append(msg) log.msg(log.msg("[WRTE] %s..." % msg)) else: # get info from DB user_db = Queries.getUser(data['user']) fs = Queries.getFileSpace(user_db.filespace_id) catalog = Queries.getUserCatalogOnFilespace(fs.id) server_ip = str(server[0]) port = int(server[1]) cnt_files = Queries.getCountFiles() + 1 # processing data user_path, original_filename = os.path.split(data['file_path']) if not data['gui']: user_path = u'' filename, type_file = os.path.splitext(original_filename) user_id = 'u' + str(user_db.id).rjust(14, '0') file_id = str(cnt_files).rjust(25-len(type_file), '0') + type_file data['server'] = server data['json'] = ('WRITE_FILE', user_id, file_id, data['file_path']) # write record into DB Queries.createFileRecordOneChunk(original_filename, file_id, data['file_hash'], user_path, data['file_size'], catalog.id, server_ip, port) log.msg(log.msg("[WRTE] Operation with DB and User=%s has complete..." % data['user'])) data['cmd'] = 'COWF' del data['file_path'] del data['file_hash'] del data['file_size'] return data