コード例 #1
0
ファイル: server.py プロジェクト: Relrin/Helenae
 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