def txn_add_booking(session, data): """ Добавить бронь и информацию о ней в билеты """ check_password_to_cancel(data["password_to_cancel"]) book_tickets = add_booking_in_tickets(data, session) booking_id = add_doc_booking(data, book_tickets, session) commit_with_retry(session) return booking_id
def txn_cancel_booking(session, booking_id): """ Удалить бронь и разбронировать билеты """ tickets = MONGO.db.booking.find_one( {"_id": booking_id}, {"tickets._id": 1})["tickets"] for ticket in tickets: cancel_booking_in_ticket(ticket["_id"], session) MONGO.db.booking.delete_one({"_id": booking_id}) commit_with_retry(session) return True
def api_register_user(session, data): """ Добавить нового пользователя""" if not check_login(data["login"]): raise ErrorDataDB("Такой пользователь уже зарегистрирован") try: user = { "login": data["login"], "password": data["password"] } except KeyError as ex: raise ErrorDataDB("Отсутствует ключ {}".format(ex)) MONGO.db.users.insert_one(user, session=session) commit_with_retry(session) return data["login"]
def txn_delete_post(session, post_id): """Удалить публикацию""" MONGO.db.booking.delete_one({"_id": post_id}) commit_with_retry(session) return True
def txn_add_post(session, post): """ Добавить публикацию """ MONGO.db.posts.insert_one(post) commit_with_retry(session) return True