Exemplo n.º 1
0
def update_order(order_id: UUID, order: Dict) -> Dict:
    with db_session() as session:
        order_update = Query(Order,
                             session=session).filter_by(id=order_id).first()
        if not order_update:
            raise OrderNotFoundException()
        order_update_dict = order_update.to_dict()
        delete_customizations_by_order_id(order_id)

        customizations = []
        for customization_code in order["customizations"]:
            customization = get_customization_by_code(customization_code.value)
            customizations.append(customization)
            if not customization:
                raise CustomizationNotFoundException()

            session.add(
                OrderCustomization(order_id=order_id,
                                   customization_id=customization["id"]))
        size = get_size_by_id(order_update_dict["size_id"])
        flavor = get_flavor_by_id(order_update_dict["flavor_id"])
        order_update = Query(Order,
                             session=session).filter_by(id=order_id).first()
        order_update.setup_time = utils.calculate_time(size, flavor,
                                                       customizations)
        order_update.amount = utils.calculate_amount(size, customizations)
        session.commit()

    return get_order(order_id)