def restize_integrity_error(internal_error): if "unique_allocine_venue_provider_price_rule" in str( internal_error.orig): return [ "global", "Vous ne pouvez avoir qu''un seul prix par catégorie" ] if "check_price_is_not_negative" in str(internal_error.orig): return ["global", "Vous ne pouvez renseigner un prix négatif"] return PcObject.restize_integrity_error(internal_error)
def save(*models: Model) -> None: if not models: return None api_errors = ApiErrors() for model in models: with db.session.no_autoflush: model_api_errors = entity_validator.validate(model) if model_api_errors.errors.keys(): api_errors.errors.update(model_api_errors.errors) else: db.session.add(model) if api_errors.errors.keys(): db.session.rollback() raise api_errors try: db.session.commit() except DataError as data_error: api_errors.add_error(*models[0].restize_data_error(data_error)) db.session.rollback() raise api_errors except IntegrityError as integrity_error: api_errors.add_error(*models[0].restize_integrity_error(integrity_error)) db.session.rollback() raise api_errors except InternalError as internal_error: api_errors.add_error(*models[0].restize_internal_error(internal_error)) db.session.rollback() raise api_errors except TypeError as type_error: api_errors.add_error(*PcObject.restize_type_error(type_error)) db.session.rollback() raise api_errors except ValueError as value_error: api_errors.add_error(*PcObject.restize_value_error(value_error)) db.session.rollback() raise api_errors if api_errors.errors.keys(): raise api_errors return None
def restize_internal_error(ie): if "check_stock" in str(ie.orig): if "quantity_too_low" in str(ie.orig): return ["quantity", "Le stock total ne peut être inférieur au nombre de réservations"] if "bookingLimitDatetime_too_late" in str(ie.orig): return [ "bookingLimitDatetime", "La date limite de réservation pour cette offre est postérieure à la date de début de l'évènement", ] logger.error("Unexpected error in patch stocks: %s", ie) return PcObject.restize_internal_error(ie)
def restize_internal_error(ie: Exception) -> list[str]: if "tooManyBookings" in str(ie.orig): return [ "global", "La quantité disponible pour cette offre est atteinte." ] if "insufficientFunds" in str(ie.orig): return [ "insufficientFunds", "Le solde de votre pass est insuffisant pour réserver cette offre." ] return PcObject.restize_integrity_error(ie)
def restize_data_error(data_error): if "wrong_price" in str(data_error): return ["global", "Le prix doit être un nombre décimal"] return PcObject.restize_integrity_error(data_error)
def restize_integrity_error(internal_error): if "unique_venue_provider" in str(internal_error.orig): return ["global", "Votre lieu est déjà lié à cette source"] return PcObject.restize_integrity_error(internal_error)