Exemplo n.º 1
0
def document(order_id: ObjectId, user: dict):
    """fetch indiviual order info or cancel it"""
    if request.method == "GET":
        with_logs = request.args.get("with_logs",
                                     default=False,
                                     type=string_to_bool)
        order = Orders.get_with_tasks(order_id, with_logs=with_logs)
        if order is None:
            raise errors.NotFound()

        return jsonify(order)

    if request.method == "PATCH":
        order = Orders.get_with_tasks(order_id)
        if order is None:
            raise errors.NotFound()

        request_json = request.get_json()
        Orders().add_shipment(order_id, request_json.get("shipment_details"))

        send_order_shipped_email(order_id)

        return jsonify(order)

    if request.method == "DELETE":
        # should prepare email message with infos from order here
        deleted_count = Orders().delete_one({"_id": order_id}).deleted_count
        if deleted_count == 0:
            raise errors.NotFound()

        # send email about deletion

        return jsonify({"_id": order_id})
Exemplo n.º 2
0
def get_email_for(order_id, kind, formatted=True):
    def _fmt(name, email):
        return "{name} <{email}>".format(name=name, email=email)

    if kind not in ("client", "recipient", "operator", "error-manager"):
        return None, "en"

    if kind == "error-manager" and FAILED_ORDER_EMAIL:
        return _fmt("Cardshop Error Manager", FAILED_ORDER_EMAIL), "en"

    order = Orders.get_with_tasks(order_id, {"logs": 0})
    if kind == "client":
        return (
            _fmt(order["client"]["name"], order["client"]["email"]),
            order["client"]["language"],
        )

    if kind == "recipient":
        return (
            _fmt(order["recipient"]["name"], order["recipient"]["email"]),
            order["recipient"]["language"],
        )

    if kind == "operator":
        worker = Users().by_username(order["tasks"]["download"]["worker"])
        return worker["email"], "en"
    return None, "en"
Exemplo n.º 3
0
def get_email_for(order_id, kind, formatted=True):
    def _fmt(name, email):
        return "{name} <{email}>".format(name=name, email=email)

    if kind not in ("client", "recipient", "operator"):
        return []

    order = Orders.get_with_tasks(order_id, {"logs": 0})
    if kind == "client":
        return _fmt(order["client"]["name"], order["client"]["email"])

    if kind == "recipient":
        return _fmt(order["recipient"]["name"], order["recipient"]["email"])

    if kind == "operator":
        worker = Users().by_username(order["tasks"]["download"]["worker"])
        return worker["email"]
    return []