99 parse_request_query_parameters_as ,
1010)
1111from servicelib .aiohttp .typing_extension import Handler
12+ from servicelib .error_codes import create_error_code
1213from servicelib .mimetype_constants import MIMETYPE_APPLICATION_JSON
1314from servicelib .request_keys import RQT_USERID_KEY
1415from servicelib .rest_constants import RESPONSE_MODEL_POLICY
1516
16- from .._constants import RQ_PRODUCT_KEY
17+ from .._constants import FMSG_SERVER_EXCEPTION_LOG , RQ_PRODUCT_KEY
1718from .._meta import API_VTAG
1819from ..login .decorators import login_required
1920from ..security .decorators import permission_required
2021from ..utils_aiohttp import envelope_json_response
2122from . import _api , api
23+ from ._constants import FMSG_MISSING_CONFIG_WITH_OEC
2224from ._schemas import PreUserProfile
23- from .exceptions import AlreadyPreRegisteredError , UserNotFoundError
25+ from .exceptions import (
26+ AlreadyPreRegisteredError ,
27+ MissingGroupExtraPropertiesForProductError ,
28+ UserNotFoundError ,
29+ )
2430from .schemas import ProfileGet , ProfileUpdate
2531
2632_logger = logging .getLogger (__name__ )
@@ -42,6 +48,20 @@ async def wrapper(request: web.Request) -> web.StreamResponse:
4248
4349 except UserNotFoundError as exc :
4450 raise web .HTTPNotFound (reason = f"{ exc } " ) from exc
51+ except MissingGroupExtraPropertiesForProductError as exc :
52+ error_code = create_error_code (exc )
53+ user_msg = FMSG_MISSING_CONFIG_WITH_OEC .format (error_code )
54+ log_msg = FMSG_SERVER_EXCEPTION_LOG .format (
55+ user_msg = user_msg ,
56+ exc = exc ,
57+ ctx = exc .ctx (),
58+ tip = "Row in `groups_extra_properties` for this product is missing." ,
59+ )
60+ _logger .exception (
61+ log_msg ,
62+ extra = {"error_code" : error_code },
63+ )
64+ raise web .HTTPServiceUnavailable (reason = user_msg ) from exc
4565
4666 return wrapper
4767
0 commit comments