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})
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"
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 []