def delete_unwanted_existing_product(isbn: str): product_has_at_least_one_booking = (Product.query.filter_by( idAtProviders=isbn).join(Offer).join(Stock).join(Booking).count() > 0) product = find_active_book_product_by_isbn(isbn) if not product: return if product_has_at_least_one_booking: offers = get_offers_by_product_id(product.id) product.isGcuCompatible = False offers = update_is_active_status(offers, False) repository.save(*offers, product) raise ProductWithBookingsException objects_to_delete = [] objects_to_delete.append(product) offers = get_offers_by_product_id(product.id) offer_ids = [offer.id for offer in offers] objects_to_delete = objects_to_delete + offers stocks = offers_repository.get_stocks_for_offers(offer_ids) objects_to_delete = objects_to_delete + stocks mediations = get_mediations_for_offers(offer_ids) objects_to_delete = objects_to_delete + mediations favorites = get_favorites_for_offers(offer_ids) objects_to_delete = objects_to_delete + favorites repository.delete(*objects_to_delete)
def deactivate_venue_offers(venue_id): venue = load_or_404(VenueSQLEntity, venue_id) ensure_current_user_has_rights(RightsType.editor, venue.managingOffererId) offers = venue.offers deactivated_offers = update_is_active_status(offers, False) repository.save(*deactivated_offers) if feature_queries.is_active(FeatureToggle.SYNCHRONIZE_ALGOLIA): redis.add_venue_id(client=app.redis_client, venue_id=venue.id) return jsonify([ as_dict(offer, includes=OFFER_INCLUDES) for offer in deactivated_offers ]), 200
def activate_venue_offers(venue_id): venue = load_or_404(Venue, venue_id) check_user_has_access_to_offerer(current_user, venue.managingOffererId) offers = venue.offers activated_offers = update_is_active_status(offers, True) repository.save(*activated_offers) if feature_queries.is_active(FeatureToggle.SYNCHRONIZE_ALGOLIA): redis.add_venue_id(client=app.redis_client, venue_id=venue.id) return jsonify([ as_dict(offer, includes=OFFER_INCLUDES) for offer in activated_offers ]), 200
def test_deactivate_offer(self, app): # given offerer = create_offerer() venue = create_venue(offerer) offers = [ create_offer_with_event_product(venue, is_active=True), create_offer_with_event_product(venue, is_active=False), ] status = False # when updated_offers = update_is_active_status(offers, status) # then for updated_offer in updated_offers: assert not updated_offer.isActive
def test_deactivate_offer_should_keep_booking_state(self, app): # given user = create_user() offerer = create_offerer() venue = create_venue(offerer) existing_offer = create_offer_with_event_product(venue, is_active=True) stock = create_stock(offer=existing_offer) booking = create_booking(user=user, stock=stock) offers = [existing_offer] status = False # when updated_offers = update_is_active_status(offers, status) # then assert any(not updated_offer.isActive for updated_offer in updated_offers) assert not booking.isCancelled