diff --git a/api/src/pcapi/core/offers/repository.py b/api/src/pcapi/core/offers/repository.py index 74a51e054e8..b818f16c85c 100644 --- a/api/src/pcapi/core/offers/repository.py +++ b/api/src/pcapi/core/offers/repository.py @@ -250,6 +250,7 @@ def get_offers_details(offer_ids: list[int]) -> BaseQuery: .load_only( models.Product.id, models.Product.description, + models.Product.extraData, models.Product.last_30_days_booking, models.Product.thumbCount, ) diff --git a/api/src/pcapi/routes/native/v1/serialization/offers.py b/api/src/pcapi/routes/native/v1/serialization/offers.py index 3569f1c66df..e4edce4adf0 100644 --- a/api/src/pcapi/routes/native/v1/serialization/offers.py +++ b/api/src/pcapi/routes/native/v1/serialization/offers.py @@ -269,20 +269,16 @@ def get(self, key: str, default: Any = None) -> Any: return [OfferStockResponse.from_orm(stock) for stock in offer.activeStocks] if key == "extraData": - if not offer.extraData: - extraData = OfferExtraDataResponse() # type: ignore[call-arg] - else: - extraData = OfferExtraDataResponse.parse_obj(offer.extraData) + raw_extra_data = product.extraData if product else offer.extraData or {} + extra_data = OfferExtraDataResponse.parse_obj(offer.extraData) - # insert the durationMinutes in the extraData - extraData.durationMinutes = offer.durationMinutes + extra_data.durationMinutes = offer.durationMinutes - # insert the GLT labels in the extraData - gtl_id = offer.extraData.get("gtl_id") if offer.extraData else None + gtl_id = raw_extra_data.get("gtl_id") if gtl_id is not None: - extraData.gtlLabels = get_gtl_labels(gtl_id) + extra_data.gtlLabels = get_gtl_labels(gtl_id) - return extraData + return extra_data return super().get(key, default)