def upload_file(current_path, byte_data, file_type_select_id,
                 file_size_in_kb, name, username):
     user_space_controller = UserSpaceController(username=username)
     if user_space_controller.if_full(file_size_in_kb):
         raise HasNoRemainFullSpaceError()
     current_path = os.path.sep.join(current_path.split('/'))
     storage_file = StorageFile(current_path=current_path,
                                database_name=name,
                                username=username)
     storage_file.create(file_type_select_id=file_type_select_id,
                         byte_data=byte_data,
                         new_add_space_in_kb=file_size_in_kb)
 def get_share_file(token):
     # 搜索分享链接
     expired_period = ModelShareLink.objects.get(token=token).valid_period
     create_time = ModelShareLink.objects.get(token=token).create_time
     # 检测是否过期
     expired_time = create_time + dt.timedelta(days=expired_period)
     if datetime.now().timestamp() > expired_time.timestamp():
         raise ShareLinkExpiredError()
     model_link_target_file = ModelShareLink.objects.get(
         token=token).target_file
     storage_file = StorageFile(
         current_path=model_link_target_file.current_path,
         real_name=model_link_target_file.real_name,
         username=model_link_target_file.user.username)
     return storage_file.get(), storage_file.database_name
 def get_share_link_using_token(token):
     # 根据token获得链接对象
     model = ModelShareLink.objects.get(token=token)
     return ShareLink(model.token,
                      StorageFile(
                          current_path=model.target_file.current_path,
                          real_name=model.target_file.real_name,
                          username=model.user.username),
                      create_time=model.create_time,
                      valid_period=model.valid_period,
                      username=model.user.username)
 def move_file(current_path, real_name, target_real_name, username):
     current_path = os.sep.join(current_path.split('/'))
     storage_file = StorageFile(current_path=current_path,
                                real_name=real_name,
                                username=username)
     storage_file.copy(target_dir_real_name=target_real_name)
     storage_file.delete()
 def get_all_share_list(self):
     # 读取所有的分享链接
     model_list = ModelShareLink.objects.filter(
         user__username=self.username)
     all_share_link_list = []
     for model in model_list:
         all_share_link_list.append(
             ShareLink(model.token,
                       StorageFile(
                           current_path=model.target_file.current_path,
                           real_name=model.target_file.real_name,
                           username=model.user.username),
                       create_time=model.create_time,
                       valid_period=model.valid_period,
                       username=self.username))
     return all_share_link_list
 def create_share_link(current_path, real_name, valid_period, username):
     current_path = os.path.sep.join(current_path.split('/'))
     file = StorageFile(current_path=current_path,
                        real_name=real_name,
                        username=username)
     new_link = ShareLink(None,
                          file=file,
                          create_time=datetime.now(),
                          valid_period=valid_period,
                          username=username)
     new_link.gen_new_token()
     # 存入数据库
     # 搜索目标文件
     target_file = ModelFile.objects.get(real_name=file.real_name)
     user = ModelUser.objects.get(username=username)
     model_new_link = ModelShareLink(create_time=datetime.now(),
                                     token=new_link.token,
                                     valid_period=valid_period,
                                     target_file=target_file,
                                     user=user)
     model_new_link.save()
 def recover_file(current_path, real_name, username):
     current_path = os.sep.join(current_path.split('/'))
     storage_file = StorageFile(current_path=current_path,
                                real_name=real_name,
                                username=username)
     storage_file.recover()
 def rename_file(current_path, real_name, new_name, username):
     current_path = os.path.sep.join(current_path.split('/'))
     storage_file = StorageFile(current_path=current_path,
                                real_name=real_name,
                                username=username)
     storage_file.rename(new_name=new_name)
 def delete_file(current_path, real_name, username):
     current_path = os.path.sep.join(current_path.split('/'))
     storage_file = StorageFile(current_path=current_path,
                                real_name=real_name,
                                username=username)
     storage_file.delete()
 def download_file(current_path, real_name, username):
     current_path = os.path.sep.join(current_path.split('/'))
     storage_file = StorageFile(current_path=current_path,
                                real_name=real_name,
                                username=username)
     return storage_file.get(), storage_file.database_name