Beispiel #1
0
def total_size():
    file1: FileParams = get_params(request, FileParams, NN=True)
    file2: FileParams = get_params(request, FileParams, params.parent_path)
    temp_dict = filter_null_dict(file1)

    if file2.parent_path == "/":                                           # 计算所有
        total_size = FileModel.get_total_size(temp_dict)
    else:
        temp_dict.update(filter_null_dict(file2))
        total_size = FileModel.get_total_size(temp_dict)

    Successful_response(data=total_size)
Beispiel #2
0
def file_list():
    file: FileParams = get_params(request, FileParams, params.parent_path, NN=True)
    c = FileModel.get_file_list(**filter_null_dict(file))
    data = {"items": [
        {params.file_name: i.file_name, params.is_dir: i.is_dir,
         params.update_date: time_format(i.update_date),
         params.size: size_pack(i.size),
         }
        for i in c], params.parent_path: file.parent_path}
    return Successful_response(data=data)
def file_delete():
    file: FileParams = get_params(request,
                                  FileParams,
                                  params.file_name,
                                  params.parent_path,
                                  NN=True)
    disc_is_dir, disc_id = FileModel.delete_file_record(filter_null_dict(file))
    if not disc_is_dir:
        count, disc_name = DiscModel.count_crease(disc_id, is_add=False)
        if count <= 0:
            DiscModel.delete_sql(DiscModel, dict(id=disc_id))
            delete_file(disc_name)
    return Successful_response("删除成功")
def download():
    file: FileParams = get_params(request,
                                  FileParams,
                                  params.file_name,
                                  params.parent_path,
                                  NN=True)
    disc_id = FileModel.get_disc_id(**filter_null_dict(file))
    disc_name = DiscModel.get_disc_name(disc_id)
    disc_full_name = file_exist_in_disc(disc_name)
    return Response(stream_with_context(read_file_chunks(disc_full_name)),
                    headers={
                        'Content-Disposition':
                        f'attachment; filename={file.file_name}'
                    })
Beispiel #5
0
def file_uuid():
    file_u = f"{uuid.uuid1()}{genRandomString(4)}"  # 生成uuid
    print(file_u)
    vaild_date: Share_Anal_Params = get_params(request,
                                               Share_Anal_Params,
                                               params_Ana.file_path,
                                               params_Ana.file_name,
                                               NN=True)
    #pool = redis.ConnectionPool(host='127.0.0.1', port=5000, db=0)  # 设置过期时间
    #r = redis.StrictRedis(connection_pool=pool)
    #redis.expire(vaild_date.file_name, 60)
    vaild_date.file_uuid = file_u
    ShareModel(**filter_null_dict(vaild_date)).add()
    return file_u
def upload():
    file: FileParams = get_params(request,
                                  FileParams,
                                  params.file_name,
                                  params.is_dir,
                                  params.parent_path,
                                  NN=True)
    file.size, file.disc_id = None, None
    # TODO 考虑提取
    if (not file.file_name == None) and (not file.file_name.find("/") == -1):
        Error_response("错误的文件名,文件夹名")

    if (not file.parent_path
            == None) and (not file.parent_path.startswith("/")):
        Error_response("错误的路径")

    if not file.is_dir:
        # 不是目录
        files = request.files  #
        my_file = files.get(params.file)
        if my_file == None:
            Error_response.you_ip_has_been_recorded()
        file.file_name = my_file.filename
        file.md5, file.size = get_file_md5_size(my_file)
        d = DiscModel.find_md5(file.md5)
        if d[0]:
            # 如果数据库中没有这条
            disc_name = generate_disc_name()
            save_file(my_file, disc_name)
            # 增加 返回 id
            # 不值得使用type_params修改,因为要创建一个新的对象,然后去赋值,不如直接赋值
            file.disc_id = DiscModel(md5=file.md5, disc_name=disc_name).id
        else:
            # 如果数据库中有这条
            file.disc_id = d[1]
            DiscModel.count_crease(file.disc_id, is_add=True)
        my_file.close()
    print(file.md5)
    FileModel(**filter_null_dict(file, exclude={params.md5})).add()
    return Successful_response("创建/上传成功")
Beispiel #7
0
def rename():
    file1: FileParams = get_params(request, FileParams, params.file_name, params.parent_path, NN=True)
    file2: FileParams = get_params(request, FileParams, params.new_name)
    FileModel.update_file_name(filter_null_dict(file1), filter_null_dict(file2), params.file_name)
    Successful_response("改名成功")
Beispiel #8
0
def registered():
    user: PersonParams = get_params(request, PersonParams, params.name,
                                    params.passwd)
    user.passwd = generate_password_hash(user.passwd)
    PersonModel(**filter_null_dict(user)).add()
    Successful_response("注册成功")