def test_returns_object_if_found(self, app): with pytest.raises(ApiErrors) as error: load_or_raise_error(Venue, humanize(1)) assert error.value.errors["global"] == [ "Aucun objet ne correspond à cet identifiant dans notre base de données" ] assert error.value.status_code == 404
def test_raises_api_error_if_no_object(self, app): # Given offerer = create_offerer() venue = create_venue(offerer) repository.save(venue) # Then the following should not raise load_or_raise_error(VenueSQLEntity, humanize(venue.id))
def create_offer(offer_data: PostOfferBodyModel, user: User) -> Offer: venue = load_or_raise_error(Venue, offer_data.venue_id) check_user_has_access_to_offerer(user, offerer_id=venue.managingOffererId) if offer_data.product_id: product = load_or_raise_error(Product, offer_data.product_id) offer = Offer( product=product, type=product.type, name=product.name, description=product.description, url=product.url, mediaUrls=product.mediaUrls, conditions=product.conditions, ageMin=product.ageMin, ageMax=product.ageMax, durationMinutes=product.durationMinutes, isNational=product.isNational, extraData=product.extraData, ) else: if offer_data.type == str(EventType.ACTIVATION): validation.check_user_can_create_activation_event(user) data = offer_data.dict(by_alias=True) product = Product() if data.get("url"): data["isNational"] = True product.populate_from_dict(data) offer = Offer() offer.populate_from_dict(data) offer.product = product offer.product.owningOfferer = venue.managingOfferer offer.venue = venue offer.bookingEmail = offer_data.booking_email offer.externalTicketOfficeUrl = offer_data.external_ticket_office_url offer.audioDisabilityCompliant = offer_data.audio_disability_compliant offer.mentalDisabilityCompliant = offer_data.mental_disability_compliant offer.motorDisabilityCompliant = offer_data.motor_disability_compliant offer.visualDisabilityCompliant = offer_data.visual_disability_compliant repository.save(offer) admin_emails.send_offer_creation_notification_to_administration( offer, user) return offer
def create_offer(offer_data: PostOfferBodyModel, user: User) -> models.Offer: venue = load_or_raise_error(VenueSQLEntity, offer_data.venue_id) ensure_current_user_has_rights(rights=RightsType.editor, offerer_id=venue.managingOffererId, user=user) if offer_data.product_id: product = load_or_raise_error(Product, offer_data.product_id) offer = models.Offer( product=product, type=product.type, name=product.name, description=product.description, url=product.url, mediaUrls=product.mediaUrls, conditions=product.conditions, ageMin=product.ageMin, ageMax=product.ageMax, durationMinutes=product.durationMinutes, isNational=product.isNational, extraData=product.extraData, ) else: if offer_data.type == str(EventType.ACTIVATION): validation.check_user_can_create_activation_event(user) data = offer_data.dict(by_alias=True) product = Product() if data.get("url"): data["isNational"] = True product.populate_from_dict(data) offer = Offer() offer.populate_from_dict(data) offer.product = product offer.product.owningOfferer = venue.managingOfferer offer.venue = venue offer.bookingEmail = offer_data.booking_email repository.save(offer) admin_emails.send_offer_creation_notification_to_administration(offer, user, mailing.send_raw_email) return offer
def create_offer(offer_data: PostOfferBodyModel, user: User) -> Offer: subcategory = subcategories.ALL_SUBCATEGORIES_DICT.get( offer_data.subcategory_id) venue = load_or_raise_error(Venue, offer_data.venue_id) check_user_has_access_to_offerer(user, offerer_id=venue.managingOffererId) _check_offer_data_is_valid(offer_data) if _is_able_to_create_book_offer_from_isbn(subcategory): offer = _initialize_book_offer_from_template(offer_data) else: offer = _initialize_offer_with_new_data(offer_data, subcategory, venue) _complete_common_offer_fields(offer, offer_data, venue) repository.save(offer) logger.info("Offer has been created", extra={ "offer": offer.id, "venue": venue.id, "product": offer.productId }) return offer
def test_raises_api_error_if_no_object(self, app): venue = offers_factories.VenueFactory() load_or_raise_error(Venue, humanize(venue.id)) # should not raise