def doOrderShipping(self, request): logger.debug( str(currentframe().f_lineno) + ":" + inspect.stack()[0][3] + "()") assert isinstance(request.args.get("uid"), str) assert isinstance(request.args.get("rid"), str) user_id = request.args.get("uid") fb_page_id = request.args.get("rid") m_db = mod_database.Mdb() client_rec = m_db.findClientByFbPageId(fb_page_id) wc_rec = client_rec["woocommerce"] wc_url = wc_rec["url"] wc_con_key = wc_rec["consumer_key"] wc_con_sec = wc_rec["consumer_secret"] m_wc = mod_woocommerce.Wc(wc_url, wc_con_key, wc_con_sec) m_cart = mod_shopcart.ShoppingCart(user_id, fb_page_id) m_cart.loadFromDatabase() cart_rec = m_cart.getRecord() cart_str = mod_misc.dictToJsonStr(cart_rec) wcorder = m_cart.createWcOrder(wc_url, wc_con_key, wc_con_sec) wcorder = mod_misc.delKeysInDict(wcorder, ["_links"]) order_pool = m_db.saveOrderToPool(user_id, fb_page_id, wcorder) m_cart.saveOrderPool(order_pool) # direct pass the wcorder as Json string wcorder_str = mod_misc.dictToJsonStr(wcorder) wcshippings = m_wc.getShippingSettings() self.delWcOrderShipping(wcshippings) wcshipping_str = mod_misc.dictToJsonStr(wcshippings) return render_template("orderShipping.html", jsOrigin=js_origin, userId=user_id, recipientId=fb_page_id, orderId=order_pool["id"], shopcart=cart_str, wcorder=wcorder_str, wcshipping=wcshipping_str)
def doOrderReview(self, request): logger.debug( str(currentframe().f_lineno) + ":" + inspect.stack()[0][3] + "()") assert isinstance(request.args.get("uid"), str) assert isinstance(request.args.get("rid"), str) assert isinstance(request.args.get("oid"), str) user_id = request.args.get("uid") fb_page_id = request.args.get("rid") order_id = request.args.get("oid") m_db = mod_database.Mdb() client_rec = m_db.findClientByFbPageId(fb_page_id) wc_rec = client_rec["woocommerce"] m_wc = mod_woocommerce.Wc(wc_rec["url"], wc_rec["consumer_key"], wc_rec["consumer_secret"]) m_cart = mod_shopcart.ShoppingCart(user_id, fb_page_id) m_cart.loadFromDatabase() cart_rec = m_cart.getRecord() cart_str = json.dumps(cart_rec, separators=(",", ":")) orderpool_rec = m_db.findOrderPoolById(order_id)["doc"] wcorder = m_wc.getOrder(orderpool_rec["order_id"]) wcorder_str = mod_misc.dictToJsonStr(wcorder) return render_template("orderReview.html", jsOrigin=js_origin, userId=user_id, recipientId=fb_page_id, orderId=order_id, shopcart=cart_str, wcorder=wcorder_str)
def doShoppingCart(self, request): logger.debug( str(currentframe().f_lineno) + ":" + inspect.stack()[0][3] + "()") assert isinstance(request.args.get("uid"), str) assert isinstance(request.args.get("rid"), str) user_id = request.args.get("uid") fb_page_id = request.args.get("rid") order_id = request.args.get("oid") if order_id is None: order_id = "" # prefetch server settings mDb = mod_database.Mdb() client_rec = mDb.findClientByFbPageId(fb_page_id) wc_rec = client_rec["woocommerce"] m_wc = mod_woocommerce.Wc(wc_rec["url"], wc_rec["consumer_key"], wc_rec["consumer_secret"]) json_gs = m_wc.getGeneralSetting() settingCountry = mod_misc.wcGeneralSettingLookup( json_gs, "woocommerce_default_country") settingCurrency = mod_misc.wcGeneralSettingLookup( json_gs, "woocommerce_currency") settingCurPos = mod_misc.wcGeneralSettingLookup( json_gs, "woocommerce_currency_pos") thouSep = mod_misc.wcGeneralSettingLookup( json_gs, "woocommerce_price_thousand_sep") decSep = mod_misc.wcGeneralSettingLookup( json_gs, "woocommerce_price_decimal_sep") numDec = mod_misc.wcGeneralSettingLookup( json_gs, "woocommerce_price_num_decimals") # Remove some useless properties del settingCountry["_links"] del settingCountry["description"] del settingCountry["tip"] del settingCurrency["description"] del settingCurrency["type"] del settingCurrency["default"] del settingCurrency["tip"] del settingCurrency["_links"] settingCurrency["symbolPos"] = settingCurPos[ "value"] # but add currency pos in there. Values maybe left, right, left_space, right_space settingCurrency["thousandSep"] = thouSep["value"] settingCurrency["decimalSep"] = decSep["value"] settingCurrency["numDecimal"] = numDec["value"] cart = mod_shopcart.ShoppingCart(user_id, fb_page_id, order_id=order_id) cart.loadFromDatabase() cart.saveServerSettings( { # Append server setting to shopping cart record "country": settingCountry, "currency": settingCurrency }) cart_str = mod_misc.dictToJsonStr(cart.getRecord()) return render_template("shoppingCart.html", jsOrigin=js_origin, userId=user_id, recipientId=fb_page_id, orderId=order_id, cart=cart_str)
def genPaymentScreen(self, user_id, fb_page_id, order_id): logger.debug( str(currentframe().f_lineno) + ":" + inspect.stack()[0][3] + "()") assert request is not None assert isinstance(user_id, str) assert isinstance(fb_page_id, str) assert isinstance(order_id, str) m_db = mod_database.Mdb() client_rec = m_db.findClientByFbPageId(fb_page_id) wc_rec = client_rec["woocommerce"] m_wc = mod_woocommerce.Wc(wc_rec["url"], wc_rec["consumer_key"], wc_rec["consumer_secret"]) m_cart = mod_shopcart.ShoppingCart(user_id, fb_page_id) m_cart.loadFromDatabase() cart_rec = m_cart.getRecord() cart_str = mod_misc.dictToJsonStr(cart_rec) orderpool_rec = m_db.findOrderPoolById(order_id)["doc"] wcorder = m_wc.getOrder(orderpool_rec["order_id"]) wcorder_str = mod_misc.dictToJsonStr(wcorder) m_pg = mod_payment.Paygate() m_pg.initPaymentGateways(m_wc) wcpaygates = m_pg.getRawPaymentGateways( ) # Get processed of all gateways wcpaygates = mod_misc.delKeysInDict( wcpaygates, ["tip", "_links", "method_description", "method_title", "label"]) wcpaygates_str = mod_misc.dictToJsonStr(wcpaygates) braintree_rst = m_pg.createBraintreeClientToken() braintree_mode = "" braintree_token = "" if braintree_rst is not None: braintree_mode = braintree_rst["mode"] braintree_token = braintree_rst["clientToken"] stripkey = m_pg.getStripePublishKey() return render_template("orderPayment.html", jsOrigin=js_origin, userId=user_id, recipientId=fb_page_id, orderId=order_id, stripePublishKey=stripkey, braintreeClientToken=braintree_token, braintreeMode=braintree_mode, shopcart=cart_str, wcorder=wcorder_str, wcpaygates=wcpaygates_str)
def renderOrderReceivedHtml(self, request, paymenttxn, shopcart, wcorder): logger.debug( str(currentframe().f_lineno) + ":" + inspect.stack()[0][3] + "()") assert isinstance(request.args.get("pid"), str) assert paymenttxn is not None assert shopcart is not None assert wcorder is not None user_id = paymenttxn["user_id"] fb_page_id = paymenttxn["fb_page_id"] cart_str = mod_misc.dictToJsonStr(shopcart) paymenttxn_str = mod_misc.dictToJsonStr(paymenttxn) wcorder_str = mod_misc.dictToJsonStr(wcorder) return render_template("orderReceived.html", jsOrigin=js_origin, userId=user_id, recipientId=fb_page_id, shopcart=cart_str, paymenttxn=paymenttxn_str, wcorder=wcorder_str)
def doOrderInfoInput(self, request): logger.debug( str(currentframe().f_lineno) + ":" + inspect.stack()[0][3] + "()") assert isinstance(request.args.get("uid"), str) assert isinstance(request.args.get("rid"), str) user_id = request.args.get("uid") fb_page_id = request.args.get("rid") order_id = request.args.get("oid") m_db = mod_database.Mdb() if order_id is None: order_id = "" m_cart = mod_shopcart.ShoppingCart(user_id, fb_page_id) m_cart.loadFromDatabase() cart_rec = m_cart.getRecord() cart_str = mod_misc.dictToJsonStr(cart_rec) return render_template("orderInfoInput.html", jsOrigin=js_origin, userId=user_id, recipientId=fb_page_id, orderId=order_id, cart=cart_str)