diff --git a/api/src/pcapi/routes/public/collective/endpoints/categories.py b/api/src/pcapi/routes/public/collective/endpoints/categories.py index ef3a4d628bd..179e79e50bb 100644 --- a/api/src/pcapi/routes/public/collective/endpoints/categories.py +++ b/api/src/pcapi/routes/public/collective/endpoints/categories.py @@ -1,11 +1,9 @@ from collections import defaultdict -from typing import cast from pcapi.core.categories import categories from pcapi.core.categories import subcategories_v2 from pcapi.routes.public import blueprints from pcapi.routes.public.collective.serialization import offers as offers_serialization -from pcapi.routes.serialization import BaseModel from pcapi.serialization.decorator import spectree_serialize from pcapi.serialization.spec_tree import ExtendResponse as SpectreeResponse from pcapi.validation.routes.users_authentifications import api_key_required @@ -16,18 +14,14 @@ api=blueprints.v2_prefixed_public_api_schema, tags=["API offres collectives"], resp=SpectreeResponse( - **( - { - "HTTP_200": ( - offers_serialization.CollectiveOffersListCategoriesResponseModel, - "La liste des catégories éligibles existantes.", - ), - "HTTP_401": ( - cast(BaseModel, offers_serialization.AuthErrorResponseModel), - "Authentification nécessaire", - ), - } - ) + HTTP_200=( + offers_serialization.CollectiveOffersListCategoriesResponseModel, + "La liste des catégories éligibles existantes.", + ), + HTTP_401=( + offers_serialization.AuthErrorResponseModel, + "Authentification nécessaire", + ), ), ) @api_key_required @@ -48,18 +42,14 @@ def list_categories() -> offers_serialization.CollectiveOffersListCategoriesResp api=blueprints.v2_prefixed_public_api_schema, tags=["API offres collectives"], resp=SpectreeResponse( - **( - { - "HTTP_200": ( - offers_serialization.CollectiveOffersListSubCategoriesResponseModel, - "La liste des sous-catégories éligibles existantes.", - ), - "HTTP_401": ( - cast(BaseModel, offers_serialization.AuthErrorResponseModel), - "Authentification nécessaire", - ), - } - ) + HTTP_200=( + offers_serialization.CollectiveOffersListSubCategoriesResponseModel, + "La liste des sous-catégories éligibles existantes.", + ), + HTTP_401=( + offers_serialization.AuthErrorResponseModel, + "Authentification nécessaire", + ), ), ) @api_key_required diff --git a/api/src/pcapi/routes/public/collective/endpoints/domains.py b/api/src/pcapi/routes/public/collective/endpoints/domains.py index e28acf2c853..a17f18a6cfb 100644 --- a/api/src/pcapi/routes/public/collective/endpoints/domains.py +++ b/api/src/pcapi/routes/public/collective/endpoints/domains.py @@ -1,10 +1,7 @@ -from typing import cast - from pcapi.core.educational import repository as educational_repository from pcapi.routes.public import blueprints from pcapi.routes.public.collective.serialization import domains as domains_serialization from pcapi.routes.public.collective.serialization import offers as offers_serialization -from pcapi.routes.serialization import BaseModel from pcapi.serialization.decorator import spectree_serialize from pcapi.serialization.spec_tree import ExtendResponse as SpectreeResponse from pcapi.utils.cache import cached_view @@ -16,18 +13,14 @@ api=blueprints.v2_prefixed_public_api_schema, tags=["API offres collectives"], resp=SpectreeResponse( - **( - { - "HTTP_200": ( - domains_serialization.CollectiveOffersListDomainsResponseModel, - "La liste des domaines d'éducation.", - ), - "HTTP_401": ( - cast(BaseModel, offers_serialization.AuthErrorResponseModel), - "Authentification nécessaire", - ), - } - ) + HTTP_200=( + domains_serialization.CollectiveOffersListDomainsResponseModel, + "La liste des domaines d'éducation.", + ), + HTTP_401=( + offers_serialization.AuthErrorResponseModel, + "Authentification nécessaire", + ), ), ) @api_key_required diff --git a/api/src/pcapi/routes/public/collective/endpoints/educational_institutions.py b/api/src/pcapi/routes/public/collective/endpoints/educational_institutions.py index 14632ed7881..4fb36e76401 100644 --- a/api/src/pcapi/routes/public/collective/endpoints/educational_institutions.py +++ b/api/src/pcapi/routes/public/collective/endpoints/educational_institutions.py @@ -1,10 +1,7 @@ -from typing import cast - from pcapi.core.educational.api.institution import search_educational_institution from pcapi.routes.public import blueprints from pcapi.routes.public.collective.serialization import institutions as institutions_serialization from pcapi.routes.public.collective.serialization import offers as offers_serialization -from pcapi.routes.serialization import BaseModel from pcapi.serialization.decorator import spectree_serialize from pcapi.serialization.spec_tree import ExtendResponse as SpectreeResponse from pcapi.validation.routes.users_authentifications import api_key_required @@ -15,22 +12,18 @@ api=blueprints.v2_prefixed_public_api_schema, tags=["API offres collectives"], resp=SpectreeResponse( - **( - { - "HTTP_200": ( - institutions_serialization.CollectiveOffersListEducationalInstitutionResponseModel, - "La liste des établissement scolaires éligibles.", - ), - "HTTP_400": ( - cast(BaseModel, offers_serialization.ErrorResponseModel), - "Requête malformée", - ), - "HTTP_401": ( - cast(BaseModel, offers_serialization.AuthErrorResponseModel), - "Authentification nécessaire", - ), - } - ) + HTTP_200=( + institutions_serialization.CollectiveOffersListEducationalInstitutionResponseModel, + "La liste des établissement scolaires éligibles.", + ), + HTTP_400=( + offers_serialization.ErrorResponseModel, + "Requête malformée", + ), + HTTP_401=( + offers_serialization.AuthErrorResponseModel, + "Authentification nécessaire", + ), ), ) @api_key_required diff --git a/api/src/pcapi/routes/public/collective/endpoints/offers.py b/api/src/pcapi/routes/public/collective/endpoints/offers.py index 16f3593461c..a3bcda385e5 100644 --- a/api/src/pcapi/routes/public/collective/endpoints/offers.py +++ b/api/src/pcapi/routes/public/collective/endpoints/offers.py @@ -35,15 +35,11 @@ api=blueprints.v2_prefixed_public_api_schema, tags=["API offres collectives"], resp=SpectreeResponse( - **( - BASE_CODE_DESCRIPTIONS - | { - "HTTP_200": ( - offers_serialization.CollectiveOffersListResponseModel, - "L'offre collective existe", - ), - } - ) + **(BASE_CODE_DESCRIPTIONS), + HTTP_200=( + offers_serialization.CollectiveOffersListResponseModel, + "L'offre collective existe", + ), ), ) @api_key_required @@ -76,15 +72,11 @@ def get_collective_offers_public( api=blueprints.v2_prefixed_public_api_schema, tags=["API offres collectives"], resp=SpectreeResponse( - **( - BASE_CODE_DESCRIPTIONS - | { - "HTTP_200": ( - offers_serialization.GetPublicCollectiveOfferResponseModel, - "L'offre collective existe", - ), - } - ) + **(BASE_CODE_DESCRIPTIONS), + HTTP_200=( + offers_serialization.GetPublicCollectiveOfferResponseModel, + "L'offre collective existe", + ), ), ) @api_key_required diff --git a/api/src/pcapi/routes/public/collective/endpoints/students_levels.py b/api/src/pcapi/routes/public/collective/endpoints/students_levels.py index 14a81cd8d92..e5c9c043e69 100644 --- a/api/src/pcapi/routes/public/collective/endpoints/students_levels.py +++ b/api/src/pcapi/routes/public/collective/endpoints/students_levels.py @@ -1,10 +1,7 @@ -from typing import cast - from pcapi.core.educational import models as educational_models from pcapi.routes.public import blueprints from pcapi.routes.public.collective.serialization import offers as offers_serialization from pcapi.routes.public.collective.serialization import students_levels as students_levels_serialization -from pcapi.routes.serialization import BaseModel from pcapi.serialization.decorator import spectree_serialize from pcapi.serialization.spec_tree import ExtendResponse as SpectreeResponse from pcapi.validation.routes.users_authentifications import api_key_required @@ -15,18 +12,14 @@ api=blueprints.v2_prefixed_public_api_schema, tags=["API offres collectives"], resp=SpectreeResponse( - **( - { - "HTTP_200": ( - students_levels_serialization.CollectiveOffersListStudentLevelsResponseModel, - "La liste des domaines d'éducation.", - ), - "HTTP_401": ( - cast(BaseModel, offers_serialization.AuthErrorResponseModel), - "Authentification nécessaire", - ), - } - ) + HTTP_200=( + students_levels_serialization.CollectiveOffersListStudentLevelsResponseModel, + "La liste des domaines d'éducation.", + ), + HTTP_401=( + offers_serialization.AuthErrorResponseModel, + "Authentification nécessaire", + ), ), ) @api_key_required diff --git a/api/src/pcapi/routes/public/collective/endpoints/venues.py b/api/src/pcapi/routes/public/collective/endpoints/venues.py index 1dabf99c8bb..939b18281eb 100644 --- a/api/src/pcapi/routes/public/collective/endpoints/venues.py +++ b/api/src/pcapi/routes/public/collective/endpoints/venues.py @@ -1,12 +1,9 @@ -from typing import cast - from pcapi.core.offerers import repository as offerers_repository from pcapi.core.providers import repository as providers_repository from pcapi.models.feature import FeatureToggle from pcapi.routes.public import blueprints from pcapi.routes.public.collective.serialization import offers as offers_serialization from pcapi.routes.public.collective.serialization import venues as venues_serialization -from pcapi.routes.serialization import BaseModel from pcapi.serialization.decorator import spectree_serialize from pcapi.serialization.spec_tree import ExtendResponse as SpectreeResponse from pcapi.validation.routes.users_authentifications import api_key_required @@ -18,18 +15,14 @@ api=blueprints.v2_prefixed_public_api_schema, tags=["API offres collectives"], resp=SpectreeResponse( - **( - { - "HTTP_200": ( - venues_serialization.CollectiveOffersListVenuesResponseModel, - "La liste des lieux ou vous pouvez créer une offre.", - ), - "HTTP_401": ( - cast(BaseModel, offers_serialization.AuthErrorResponseModel), - "Authentification nécessaire", - ), - } - ) + HTTP_200=( + venues_serialization.CollectiveOffersListVenuesResponseModel, + "La liste des lieux ou vous pouvez créer une offre.", + ), + HTTP_401=( + offers_serialization.AuthErrorResponseModel, + "Authentification nécessaire", + ), ), ) @api_key_required diff --git a/api/src/pcapi/serialization/decorator.py b/api/src/pcapi/serialization/decorator.py index 2a06cae2f39..68dff27f118 100644 --- a/api/src/pcapi/serialization/decorator.py +++ b/api/src/pcapi/serialization/decorator.py @@ -9,13 +9,13 @@ from flask import Response from flask import make_response from flask import request +import spectree from werkzeug.exceptions import BadRequest from pcapi.models.api_errors import ApiErrors from pcapi.routes.apis import api as default_api from pcapi.routes.serialization import BaseModel from pcapi.serialization.spec_tree import ExtendResponse as SpectreeResponse -from pcapi.serialization.spec_tree import ExtendedSpecTree logger = logging.getLogger(__name__) @@ -71,7 +71,7 @@ def spectree_serialize( on_success_status: int = 200, on_empty_status: int | None = None, on_error_statuses: list[int] | None = None, - api: ExtendedSpecTree = default_api, + api: spectree.SpecTree = default_api, json_format: bool = True, response_headers: dict[str, str] | None = None, resp: SpectreeResponse | None = None,