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