def get_result_file_response(result, request): matchdict = request.matchdict folder_name = matchdict['folder_name'] if folder_name not in ('x', 'y'): raise HTTPForbidden data_folder = request.data_folder result_folder = result.get_folder(data_folder) file_folder = join(result_folder, folder_name) try: file_path = resolve_relative_path(matchdict['path'], file_folder) except IOError: raise HTTPNotFound if not exists(file_path): raise HTTPNotFound return FileResponse(file_path, request=request)
def show_result_file(request): settings = request.registry.settings data_folder = settings['data.folder'] result_id = request.matchdict['id'] target_folder = join(data_folder, 'results', result_id, 'response') try: result_file_path = resolve_relative_path( request.matchdict['path'], target_folder) except IOError: raise HTTPForbidden if basename(result_file_path) in EXCLUDED_FILE_NAMES: raise HTTPForbidden if not exists(result_file_path): raise HTTPNotFound return FileResponse(result_file_path, request=request)
def get_file_path(self, result_id, folder_name, path): result = Result(id=result_id) result_folder = result.get_folder(self.data_folder) parent_folder = join(result_folder, folder_name) return resolve_relative_path(path, parent_folder)
def get_folder(self, data_folder): parent_folder = self.get_parent_folder(data_folder) return resolve_relative_path(str(self.id), parent_folder)