def reNameFile(self, target_file_node, new_name): # node 是要重命名的结点 print('0') try: # 修改文件名 print('1') old_actual_filename = generate_file_name( target_file_node.parent_id, target_file_node.filename) # 结合 UPLOAD_FOLDER 得到最终文件的存储路径 target_file = os.path.join(os.path.expanduser(UPLOAD_FOLDER), old_actual_filename) print('2') new_actual_filename = generate_file_name( target_file_node.parent_id, new_name) new_target_file = os.path.join(os.path.expanduser(UPLOAD_FOLDER), new_actual_filename) # 本地文件重命名 print(target_file) if os.path.exists(target_file): print('3') os.rename(target_file, new_target_file) # 修改数据库中的文件名 target_file_node.filename = new_name # 修改当前文件的名字 print('4') db.session.commit() response = make_response(jsonify(code=0, message='OK')) return response except: response = make_response(jsonify(code=20, message='file error')) return response
def download_photo(self, urls, preferred_file_name): """Use this method to download the photo(s) for the given URLs list.""" files = [] for url in urls: file_name = generate_file_name(preferred_file_name, self.download_dir) if url: request.urlretrieve(url, os.path.join(self.download_dir, file_name)) files.append(file_name) return files
def run(in_path, out_path, n_results): values_ro_record = DictValuesToTfRecord() writer = tf.python_io.TFRecordWriter( os.path.join(out_path, generate_file_name(0))) description = [('image', 'bytes'), ('label', 'int')] mat = scipy.io.loadmat(in_path) for i, (image, label) in enumerate( zip(np.transpose(mat['X'], (3, 0, 1, 2)), np.mod(mat['y'], 10))): if i >= n_results >= 0: break buffer = io.BytesIO() Image.fromarray(image).save(buffer, 'png') values = [[buffer.getvalue()], [label]] writer.write( values_ro_record.run(description=description, values=values)) writer.close()
def run(images, labels, size, path, n_results): values_ro_record = DictValuesToTfRecord() writer = tf.python_io.TFRecordWriter( os.path.join(path, generate_file_name(0))) description = [('image', 'bytes'), ('label', 'int')] for i, (image, label) in enumerate(zip(images, labels)): if i >= n_results >= 0: break buffer = io.BytesIO() image = np.stack((image, np.zeros_like(image), np.zeros_like(image)), axis=2) Image.fromarray(image).resize( (size, size), resample=Image.BILINEAR).save(buffer, 'png') values = [[buffer.getvalue()], [label]] writer.write( values_ro_record.run(description=description, values=values)) writer.close()
def get(self, url): parse = reqparse.RequestParser() parse.add_argument('share_token', type=str, default='') args = parse.parse_args() # 获取当前文件夹id share_token = args.get('share_token') shareobj = ShareTable.query.filter_by(share_url=url).first() if shareobj is None: response = make_response( jsonify(code=11, message='node not exist, query fail')) return response file_node = FileNode.query.filter_by(id=shareobj.file_id).first() if file_node is None: response = make_response( jsonify(code=11, message='node not exist, query fail')) return response if shareobj.share_token == '' or share_token == shareobj.share_token: if shareobj.share_end_time < int(time.time()): print(shareobj.share_end_time) print(int(time.time())) response = make_response( jsonify(code=42, message='out of date')) return response parent_id = file_node.parent_id filename = file_node.filename # 生成文件名的 hash actual_filename = generate_file_name(parent_id, filename) # 结合 UPLOAD_FOLDER 得到最终文件的存储路径 target_file = os.path.join(os.path.expanduser(UPLOAD_FOLDER), actual_filename) if os.path.exists(target_file): return send_file(target_file, as_attachment=True, attachment_filename=filename, cache_timeout=3600) else: response = make_response( jsonify(code=22, message='file not exist')) return response else: response = make_response( jsonify(code=41, message='wrong share_token')) return response
def _run(self): with tf.Session() as session: self.components['initializer'].run(session) while True: step = session.run(self.global_step) if step == self.n_steps: break session.run(self.global_step_increment) if self.training_step: training_metrics, training_summaries = self.components['optimizer'].run( session=session, metrics=self.training_metric_tensors ) for summary in training_summaries: self.writer.add_summary(summary, global_step=step) index = step % self.log_step self.training_metrics[:, index] = training_metrics string = self._make_string(self.training_metrics[:, index], self.training_metric_names) self.verbose(f' training: step {step}/{self.n_steps}: {string}') if self.validation_step and step % self.validation_step == self.validation_step - 1: validation_metrics, validation_summaries = self.components['validator'].run( session=session, metrics=self.validation_metric_tensors ) for summary in validation_summaries: self.writer.add_summary(summary, global_step=step) index = step // self.validation_step % self.validation_length self.validation_metrics[:, index] = validation_metrics string = self._make_string(self.validation_metrics[:, index], self.validation_metric_names) self.verbose(f'validation: step {step}/{self.n_steps}: {string}') if self.log_step and step % self.log_step == self.log_step - 1: if self.training_step: training_metric_mean = np.mean(self.training_metrics, axis=1) self.log(f'step: {step}/{self.n_steps}') string = self._make_string(training_metric_mean, self.training_metric_names) self.log(f'training: {string}') if self.validation_step: validation_metric_mean = np.mean(self.validation_metrics, axis=1) string = self._make_string(validation_metric_mean, self.validation_metric_names) self.log(f'validation: {string}') if self.save_step and step % self.save_step == self.save_step - 1: model_path = os.path.join(self.model_path, generate_file_name(0)[:-16]) self.saver.save(session, model_path) self.log(f'save: {model_path}')
def deleteFile(self, target_file_node): try: filename = target_file_node.filename parent_id = target_file_node.parent_id actual_filename = generate_file_name(parent_id, filename) # 结合 UPLOAD_FOLDER 得到最终文件的存储路径 target_file = os.path.join(os.path.expanduser(UPLOAD_FOLDER), actual_filename) # 本地删除 if os.path.exists(target_file): os.remove(target_file) # 修改数据库中的文件名 db.session.delete(target_file_node) db.session.commit() response = make_response(jsonify(code=0, message='OK')) return response except: response = make_response(jsonify(code=20, message='file error')) return response
def get(self): parse = reqparse.RequestParser() parse.add_argument('id', type=int, help='错误的id', default='0') args = parse.parse_args() # 获取当前文件夹id file_id = args.get('id') try: file_node = FileNode.query.get(file_id) except: response = make_response( jsonify(code=11, message='node not exist, query fail')) return response # 无访问权限 if file_node.user_id != current_user.uid: response = make_response( jsonify(code=25, message='can not access this file')) return response parent_id = file_node.parent_id filename = file_node.filename # 生成文件名的 hash actual_filename = generate_file_name(parent_id, filename) # 结合 UPLOAD_FOLDER 得到最终文件的存储路径 target_file = os.path.join(os.path.expanduser(UPLOAD_FOLDER), actual_filename) if os.path.exists(target_file): # print(filename) # print(target_file) return send_file(target_file, as_attachment=True, attachment_filename=filename, cache_timeout=3600) # return send_from_directory(UPLOAD_FOLDER,actual_filename,as_attachment=True) # response = Response(stream_with_context(self.generate(target_file)),content_type='application/octet-stream') # response.headers["Content-disposition"] = "attachment; filename={}".format(filename.encode().decode('latin-1')) # return response else: response = make_response( jsonify(code='22', message='file not exist')) return response
def check_screen(screen, folder, gender, buffer, channels=4): params = AudioParams() params.channels = channels background = PGBackground(CHECK_BACKGROUND_PATH) button_yes = PGEmptyButton(CHECK_OK_BUTTON_RECT, absolute=False) button_no = PGEmptyButton(CHECK_KO_BUTTON_RECT, absolute=False) button_replay = PGEmptyButton(CHECK_REPLAY_BUTTON_RECT, absolute=False) elements = [background, button_yes, button_no, button_replay] drawElements(screen, elements) play_audio(buffer, params) while True: events = pygame.event.get() if button_yes.event_check(events) is PGAction.CLICKED: save_audio( params, os.path.join(folder, generate_file_name(folder, gender)), buffer) return True if button_no.event_check(events) is PGAction.CLICKED: return False if button_replay.event_check(events) is PGAction.CLICKED: play_audio(buffer, params) for event in events: if event.type == pygame.KEYUP: if event.key in [pygame.K_ESCAPE, pygame.K_n, pygame.K_RIGHT]: return False if event.key in [ pygame.K_RETURN, pygame.K_SPACE, pygame.K_o, pygame.K_LEFT ]: return True if event.key in [pygame.K_r, pygame.K_UP]: play_audio(buffer, params) pygame.time.wait(40)
def create_file(length_name, extension, content, letter, digit): """Create files on your server with certain extension. If file have existed the will raise FileExistsError Args: length_name (srt): Define length of the file extension (str): Define the extension of of the file letter (bool): Define do it use the letters in the name of the file digit (bool): Define do it use the digits in the name of the file """ try: file_name = utils.generate_file_name(length_name=length_name, letter=letter, digit=digit, extension=extension) with open(os.path.join(config.Configuration.UPLOAD_FOLDER, file_name), 'x') as file: file.write(content) logger.info(f'File was created with name {file_name}') return file_name except FileExistsError: logger.error("File wasn't created because you had tried" " to create file with the existing name")
def test_generate_file_name(mock_generate_file_name): mock_generate_file_name.return_value = 'file.txt' assert utils.generate_file_name(4, '.txt', True, True) == 'file.txt'
def test_extension_file(extension): assert utils.generate_file_name(5, extension, True, True).endswith(extension)
def test_zero_length_file_name(): assert len(utils.generate_file_name(5, '.py', True, True)) == 8
def get(self, url): parse = reqparse.RequestParser() parse.add_argument('width', type=int, help='wrong width', default=300) parse.add_argument('height', type=int, help='wrong height', default=300) parse.add_argument('share_token', type=str, default='') args = parse.parse_args() # 获取当前文件夹id width = args.get('width') height = args.get('height') share_token = args.get('share_token') shareobj = ShareTable.query.filter_by(share_url=url).first() if shareobj is None: response = make_response( jsonify(code=11, message='node not exist, query fail')) return response file_node = FileNode.query.filter_by(id=shareobj.file_id).first() if file_node is None: response = make_response( jsonify(code=11, message='node not exist, query fail')) return response if shareobj.share_token == '' or share_token == shareobj.share_token: if shareobj.share_end_time < int(time.time()): response = make_response( jsonify(code=42, message='out of date')) return response if file_node.type_of_node in config['IMG_TYPE']: parent_id = file_node.parent_id filename = file_node.filename node_type = file_node.type_of_node # 生成文件名的 hash actual_filename = generate_file_name(parent_id, filename) # 结合 UPLOAD_FOLDER 得到最终文件的存储路径 target_file = os.path.join(os.path.expanduser(UPLOAD_FOLDER), actual_filename) if os.path.exists(target_file): try: with Image.open(target_file, mode='r') as img_data: # img_data = Image.open(target_file) img_data.thumbnail((width, height)) fp = io.BytesIO() format = Image.registered_extensions()['.' + node_type] img_data.save(fp, format) response = make_response(fp.getvalue()) response.headers[ 'Content-Type'] = 'image/' + node_type return response except: response = make_response( jsonify(code=24, message='preview not allowed')) return response else: response = make_response( jsonify(code=22, message='file not exist')) return response else: response = make_response( jsonify(code=24, message='preview not allowed')) return response else: response = make_response( jsonify(code=41, message='wrong share_token')) return response
def get(self): parse = reqparse.RequestParser() parse.add_argument('id', type=int, help='错误的id', default='0') parse.add_argument('width', type=int, help='wrong width', default=300) parse.add_argument('height', type=int, help='wrong height', default=300) parse.add_argument('token', type=str, help='wrong token') args = parse.parse_args() # 获取当前文件夹id file_id = args.get('id') width = args.get('width') height = args.get('height') token = args.get('token') try: user = verify_token(token) except: response = make_response(jsonify(code=38, message='wrong token')) return response try: file_node = FileNode.query.get(file_id) except: response = make_response( jsonify(code=11, message='node not exist, query fail')) return response if file_node.user_id != user.uid: response = make_response(jsonify(code=38, message='wrong token')) return response if file_node == None: response = make_response( jsonify(code=11, message='node not exist, query fail')) return response if file_node.type_of_node in config['IMG_TYPE']: parent_id = file_node.parent_id filename = file_node.filename node_type = file_node.type_of_node # 生成文件名的 hash actual_filename = generate_file_name(parent_id, filename) # 结合 UPLOAD_FOLDER 得到最终文件的存储路径 target_file = os.path.join(os.path.expanduser(UPLOAD_FOLDER), actual_filename) if os.path.exists(target_file): try: with Image.open(target_file, mode='r') as img_data: # img_data = Image.open(target_file) img_data.thumbnail((width, height)) fp = io.BytesIO() format = Image.registered_extensions()['.' + node_type] img_data.save(fp, format) response = make_response(fp.getvalue()) response.headers['Content-Type'] = 'image/' + node_type return response except: response = make_response( jsonify(code=24, message='preview not allowed')) return response else: response = make_response( jsonify(code=22, message='file not exist')) return response else: response = make_response( jsonify(code=24, message='preview not allowed')) return response
def post(self): # print(UPLOAD_FOLDER) parse = reqparse.RequestParser() parse.add_argument('curId', type=int, help='错误的curId', default='0') parse.add_argument('file', type=FileStorage, location='files') args = parse.parse_args() # 获取当前文件夹id cur_file_id = args.get('curId') f = args['file'] # f.close() if "/" in f.filename: response = make_response( jsonify(code=23, message='filename should not has separator')) return response try: cur_file_node = FileNode.query.get(cur_file_id) except: response = make_response( jsonify(code=11, message='illegal filename')) return response cur_file_path_root = cur_file_node.path_root cur_filename = cur_file_node.filename if f: filename = f.filename # print('\"' in filename) # print('"' in filename) # print(filename[:-1]) if '\"' in filename: filename = filename[:-1] new_path_root = cur_file_path_root + cur_filename + '/' d_time = int(time.time()) # 生成文件名的 hash actual_filename = generate_file_name(cur_file_id, filename) # 结合 UPLOAD_FOLDER 得到最终文件的存储路径 target_file = os.path.join(os.path.expanduser(UPLOAD_FOLDER), actual_filename) if os.path.exists(target_file): response = make_response( jsonify(code=21, message='file already exist, save fail')) return response try: # 保存文件 f.save(target_file) # print(filename + ' saved') fsize = os.path.getsize(target_file) filenode = FileNode( filename=filename, path_root=new_path_root, parent_id=cur_file_id, size=fsize, type_of_node=filename.split('.')[-1].lower(), upload_time=d_time, user_id=current_user.uid) db.session.add(filenode) # print('db added filenode') db.session.commit() response = make_response( jsonify(code=0, message='OK', data={'file': filenode.to_json()})) return response except: response = make_response( jsonify(code=12, message='node already exist , add fail')) return response