Esempio n. 1
0
 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
Esempio n. 2
0
 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)
Esempio n. 3
0
 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