def seller_tool_product_edit(seller,code): T = {"sellername":seller} ret = seller_tool_check_login(seller, T) if ret is not True: return ret if request.method == 'GET': seller_tool_check_new_order(T) key_name = "%s-%s" % (seller, code) product = Product.get_by_key_name("%s-%s" % (seller, code)) stock = ProductStock.get_by_key_name("%s-%s" % (seller, code)) T["product_title"] = product.title T["product_code"] = product.code T["product_price"] = product.price T["product_desc"] = product.desc T["product_stock"] = stock.quantity T["breadcrumbs"] = [{"url":url_for("seller_tool_index",seller=seller), "title":u"ツールトップ"}, {"url":url_for("seller_tool_products",seller=seller), "title":u"商品一覧"}, {"title":u"商品情報編集: %s" % product.code}] return render_template('seller_tool_product_edit.html', T=T) else: try: logging.error(seller) logging.error(code) product = Product.get_by_key_name("%s-%s" % (seller, code)) stock = ProductStock.get_by_key_name("%s-%s" % (seller, code)) product.title = request.form['product_title'] product.desc = request.form['product_desc'] product.price = float(request.form['product_price']) product.put() stock.quantity = int(request.form['product_stock']) stock.put() flash(u'保存しました', category='success') return redirect(url_for('seller_tool_products', seller=seller)) except: logging.error(sys.exc_info()) flash(u'失敗しました', category='warning') return render_template('seller_tool_product_edit.html', T=T)
def seller_tool_product_new(seller): T = {"sellername":seller} ret = seller_tool_check_login(seller, T) if ret is not True: return ret if request.method == 'GET': seller_tool_check_new_order(T) T["breadcrumbs"] = [{"url":url_for("seller_tool_index",seller=seller), "title":u"ツールトップ"}, {"url":url_for("seller_tool_products",seller=seller), "title":u"商品一覧"}, {"title":u"新規商品情報追加"}] return render_template('seller_tool_product_new.html', T=T) else: try: new_product = Product( key_name = "%s-%s" % (seller, request.form['product_code']), seller = seller, code = request.form['product_code'], title = request.form['product_title'], price = float(request.form['product_price']), desc = request.form['product_desc'], ) new_product.put() new_product_stock = ProductStock( key_name = "%s-%s" % (seller, request.form['product_code']), seller = seller, code = request.form['product_code'], quantity = int(request.form['product_stock']), ) new_product_stock.put() flash(u'保存しました', category='success') return redirect(url_for('seller_tool_products', seller=seller)) except: logging.error(sys.exc_info()) flash(u'失敗しました', category='warning') return render_template('seller_tool_product_new.html', T=T)
def cart_finalize(seller): T = {'sellername':seller} helpers.template.get_user(T=T, path=request.path) if not "user" in T: flash(u'ログインしてから再度カートに追加してください', category='warning') return redirect(url_for('cart_index', seller=seller)) # FIXME: ブラウザ2重起動によるセッション情報の変更検知 cart_cache_key = 'C-%s' % (T["user"].user_id()) cart = memcache.get(cart_cache_key) if not cart or not seller in cart: flash(u'カートが空です', category='warning') return redirect(url_for('cart_index', seller=seller)) has_error = None reserved = {} for code, item in cart[seller].items(): stock = ProductStock.get_by_key_name("%s-%s" % (seller, code)) stock.quantity -= item['quantity'] if stock.quantity < 0: has_error = code break stock.put() reserved[code] = item['quantity'] if has_error: for code, quatity in reserved.items(): stock = ProductStock.get_by_key_name("%s-%s" % (seller, code)) stock.quantity += quantity stock.put() flash(u'商品コード %s の在庫がなくなりました' % has_error, category='warning') return redirect(url_for('cart_index', seller=seller)) content = {"cart" : helpers.template.calc_cart(cart[seller]), "buyer": cart["BUYER"]} key_name = "-".join([seller, T["user"].user_id(), datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S'), str(random.randint(0,256))]) order = Order(key_name = key_name, cart = unicode(json.dumps(helpers.template.calc_cart(cart[seller]))), seller = seller, status = 0) order.buyer_mail = cart["BUYER"]["mail"] order.buyer_note = cart["BUYER"]["note"] order.buyer_ship_country = cart["BUYER"]["ship"]['country'] order.buyer_ship_postalcode = cart["BUYER"]["ship"]['postalcode'] order.buyer_ship_pref = cart["BUYER"]["ship"]['pref'] order.buyer_ship_city = cart["BUYER"]["ship"]['city'] order.buyer_ship_addr1 = cart["BUYER"]["ship"]['addr1'] order.buyer_ship_addr2 = cart["BUYER"]["ship"]['addr2'] order.put() del(cart[seller]) memcache.set(cart_cache_key, cart, 86400) return redirect(url_for('cart_finished', seller=seller))