コード例 #1
0
 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
コード例 #2
0
    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
コード例 #3
0
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()
コード例 #4
0
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()
コード例 #5
0
    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
コード例 #6
0
    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}')
コード例 #7
0
 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
コード例 #8
0
    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
コード例 #9
0
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)
コード例 #10
0
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")
コード例 #11
0
ファイル: test.py プロジェクト: IlyaTroshchynskyi/fileserver
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'
コード例 #12
0
ファイル: test.py プロジェクト: IlyaTroshchynskyi/fileserver
def test_extension_file(extension):
    assert utils.generate_file_name(5, extension, True,
                                    True).endswith(extension)
コード例 #13
0
ファイル: test.py プロジェクト: IlyaTroshchynskyi/fileserver
def test_zero_length_file_name():
    assert len(utils.generate_file_name(5, '.py', True, True)) == 8
コード例 #14
0
    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
コード例 #15
0
    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
コード例 #16
0
    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