Skip to content

Commit 7421db2

Browse files
committed
comments rest
1 parent 6e22a17 commit 7421db2

File tree

2 files changed

+17
-31
lines changed

2 files changed

+17
-31
lines changed

services/web/server/src/simcore_service_webserver/projects/_comments_handlers.py

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
33
"""
44

5-
import functools
65
import logging
76
from typing import Any
87

@@ -22,7 +21,6 @@
2221
parse_request_path_parameters_as,
2322
parse_request_query_parameters_as,
2423
)
25-
from servicelib.aiohttp.typing_extension import Handler
2624
from servicelib.mimetype_constants import MIMETYPE_APPLICATION_JSON
2725
from servicelib.rest_constants import RESPONSE_MODEL_POLICY
2826

@@ -31,26 +29,11 @@
3129
from ..security.decorators import permission_required
3230
from ..utils_aiohttp import envelope_json_response
3331
from . import _comments_api, projects_service
32+
from ._common.exceptions_handlers import handle_plugin_requests_exceptions
3433
from ._common.models import RequestContext
35-
from .exceptions import ProjectInvalidRightsError, ProjectNotFoundError
3634

3735
_logger = logging.getLogger(__name__)
3836

39-
40-
def _handle_project_comments_exceptions(handler: Handler):
41-
@functools.wraps(handler)
42-
async def wrapper(request: web.Request) -> web.StreamResponse:
43-
try:
44-
return await handler(request)
45-
46-
except ProjectNotFoundError as exc:
47-
raise web.HTTPNotFound(reason=f"{exc}") from exc
48-
except ProjectInvalidRightsError as exc:
49-
raise web.HTTPForbidden(reason=f"{exc}") from exc
50-
51-
return wrapper
52-
53-
5437
#
5538
# projects/*/comments COLLECTION -------------------------
5639
#
@@ -79,7 +62,7 @@ class _ProjectCommentsBodyParams(BaseModel):
7962
)
8063
@login_required
8164
@permission_required("project.read")
82-
@_handle_project_comments_exceptions
65+
@handle_plugin_requests_exceptions
8366
async def create_project_comment(request: web.Request):
8467
req_ctx = RequestContext.model_validate(request)
8568
path_params = parse_request_path_parameters_as(_ProjectCommentsPathParams, request)
@@ -119,7 +102,7 @@ class _ListProjectCommentsQueryParams(BaseModel):
119102
@routes.get(f"/{VTAG}/projects/{{project_uuid}}/comments", name="list_project_comments")
120103
@login_required
121104
@permission_required("project.read")
122-
@_handle_project_comments_exceptions
105+
@handle_plugin_requests_exceptions
123106
async def list_project_comments(request: web.Request):
124107
req_ctx = RequestContext.model_validate(request)
125108
path_params = parse_request_path_parameters_as(_ProjectCommentsPathParams, request)
@@ -168,6 +151,7 @@ async def list_project_comments(request: web.Request):
168151
)
169152
@login_required
170153
@permission_required("project.read")
154+
@handle_plugin_requests_exceptions
171155
async def update_project_comment(request: web.Request):
172156
req_ctx = RequestContext.model_validate(request)
173157
path_params = parse_request_path_parameters_as(
@@ -183,12 +167,13 @@ async def update_project_comment(request: web.Request):
183167
include_state=False,
184168
)
185169

186-
return await _comments_api.update_project_comment(
170+
updated_comment = await _comments_api.update_project_comment(
187171
request=request,
188172
comment_id=path_params.comment_id,
189173
project_uuid=path_params.project_uuid,
190174
contents=body_params.contents,
191175
)
176+
return envelope_json_response(updated_comment)
192177

193178

194179
@routes.delete(
@@ -197,7 +182,7 @@ async def update_project_comment(request: web.Request):
197182
)
198183
@login_required
199184
@permission_required("project.read")
200-
@_handle_project_comments_exceptions
185+
@handle_plugin_requests_exceptions
201186
async def delete_project_comment(request: web.Request):
202187
req_ctx = RequestContext.model_validate(request)
203188
path_params = parse_request_path_parameters_as(
@@ -225,7 +210,7 @@ async def delete_project_comment(request: web.Request):
225210
)
226211
@login_required
227212
@permission_required("project.read")
228-
@_handle_project_comments_exceptions
213+
@handle_plugin_requests_exceptions
229214
async def get_project_comment(request: web.Request):
230215
req_ctx = RequestContext.model_validate(request)
231216
path_params = parse_request_path_parameters_as(
@@ -240,7 +225,8 @@ async def get_project_comment(request: web.Request):
240225
include_state=False,
241226
)
242227

243-
return await _comments_api.get_project_comment(
228+
comment = await _comments_api.get_project_comment(
244229
request=request,
245230
comment_id=path_params.comment_id,
246231
)
232+
return envelope_json_response(comment)

services/web/server/src/simcore_service_webserver/projects/_common/exceptions_handlers.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
_logger = logging.getLogger(__name__)
3838

39-
# Folder errors
39+
4040
_FOLDER_ERRORS: ExceptionToHttpErrorMap = {
4141
FolderAccessForbiddenError: HttpErrorInfo(
4242
status.HTTP_403_FORBIDDEN,
@@ -48,7 +48,7 @@
4848
),
4949
}
5050

51-
# Node errors
51+
5252
_NODE_ERRORS: ExceptionToHttpErrorMap = {
5353
NodeNotFoundError: HttpErrorInfo(
5454
status.HTTP_404_NOT_FOUND,
@@ -64,7 +64,7 @@
6464
),
6565
}
6666

67-
# Project errors
67+
6868
_PROJECT_ERRORS: ExceptionToHttpErrorMap = {
6969
ProjectDeleteError: HttpErrorInfo(
7070
status.HTTP_409_CONFLICT,
@@ -116,7 +116,7 @@
116116
),
117117
}
118118

119-
# Workspace errors
119+
120120
_WORKSPACE_ERRORS: ExceptionToHttpErrorMap = {
121121
WorkspaceAccessForbiddenError: HttpErrorInfo(
122122
status.HTTP_403_FORBIDDEN,
@@ -128,7 +128,7 @@
128128
),
129129
}
130130

131-
# Wallet errors
131+
132132
_WALLET_ERRORS: ExceptionToHttpErrorMap = {
133133
UserDefaultWalletNotFoundError: HttpErrorInfo(
134134
status.HTTP_404_NOT_FOUND,
@@ -144,7 +144,7 @@
144144
),
145145
}
146146

147-
# Pricing errors
147+
148148
_PRICING_ERRORS: ExceptionToHttpErrorMap = {
149149
DefaultPricingPlanNotFoundError: HttpErrorInfo(
150150
status.HTTP_404_NOT_FOUND,
@@ -156,7 +156,7 @@
156156
),
157157
}
158158

159-
# Other errors
159+
160160
_OTHER_ERRORS: ExceptionToHttpErrorMap = {
161161
ClustersKeeperNotAvailableError: HttpErrorInfo(
162162
status.HTTP_503_SERVICE_UNAVAILABLE,

0 commit comments

Comments
 (0)