def guest_upload_file(self, context, request: TracimRequest, hapic_data=None) -> None: """ upload files as guest """ # TODO - G.M - 2019-08-14 - replace UploadFiles Object hack to proper hapic support # see upload_files = UploadFiles(request, prefix_pattern="file_") # INFO - G.M - 2019-09-03 - check validation of file here, because hapic can't # handle them. verify if almost one file as been given. if len(upload_files.files) < 1: raise NoFileValidationError( "No files given at input, validation failed.") app_config = request.registry.settings["CFG"] # type: CFG api = UploadPermissionLib(current_user=None, session=request.dbsession, config=app_config) upload_permission = api.get_upload_permission_by_token( upload_permission_token=hapic_data.path.upload_permission_token ) # type: UploadPermission # TODO - G.M - 2019-08-01 - verify in access to upload_permission can be granted # we should considered do these check at decorator level workspace_api = WorkspaceApi(current_user=None, session=request.dbsession, config=app_config) workspace = workspace_api.get_one(upload_permission.workspace_id) workspace_api.check_public_upload_enabled(workspace) api.check_password(upload_permission, password=hapic_data.forms.password) content_api = ContentApi(current_user=None, session=request.dbsession, config=app_config) content_api.check_workspace_size_limitation( content_length=request.content_length, workspace=workspace) content_api.check_owner_size_limitation( content_length=request.content_length, workspace=workspace) api.upload_files( upload_permission=upload_permission, uploader_username=hapic_data.forms.username, message=hapic_data.forms.message, files=upload_files.files, do_notify=app_config.EMAIL__NOTIFICATION__ACTIVATED, ) return
def guest_upload_info(self, context, request: TracimRequest, hapic_data=None) -> UploadPermissionInContext: """ get somes informations about upload permission """ app_config = request.registry.settings["CFG"] # type: CFG api = UploadPermissionLib(current_user=None, session=request.dbsession, config=app_config) upload_permission = api.get_upload_permission_by_token( upload_permission_token=hapic_data.path.upload_permission_token ) # type: UploadPermission workspace_api = WorkspaceApi(current_user=None, session=request.dbsession, config=app_config) workspace = workspace_api.get_one(upload_permission.workspace_id) workspace_api.check_public_upload_enabled(workspace) return api.get_upload_permission_in_context(upload_permission)
def guest_upload_check(self, context, request: TracimRequest, hapic_data=None) -> None: """ check upload password and token validity """ app_config = request.registry.settings["CFG"] # type: CFG api = UploadPermissionLib(current_user=None, session=request.dbsession, config=app_config) upload_permission = api.get_upload_permission_by_token( upload_permission_token=hapic_data.path.upload_permission_token ) # type: UploadPermission # TODO - G.M - 2019-08-01 - verify in access to upload_permission can be granted # we should considered do these check at decorator level workspace_api = WorkspaceApi(current_user=None, session=request.dbsession, config=app_config) workspace = workspace_api.get_one(upload_permission.workspace_id) workspace_api.check_public_upload_enabled(workspace) api.check_password(upload_permission, password=hapic_data.body.password) return