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_product(seller, code): T = {"sellername":seller, "code":code} ret = seller_tool_check_login(seller, T) s = Seller.get_by_key_name('%s' % seller) if not 2: abort(404) p = Product.get_by_key_name('%s-%s' % (seller,code)) if not p: abort(404) T['seller'] = s T['product'] = p host = "http://localhost:5000/" if p.image1: T['imageurl1'] = "%s%s" % (host, get_image_path(seller,code,1,300,300,p.image1)) else: T['imageurl1'] = 'http://placehold.it/300x300' if p.image2: T['imageurl2'] = "%s%s" % (host, get_image_path(seller,code,2,120,120,p.image2)) if p.image3: T['imageurl3'] = "%s%s" % (host, get_image_path(seller,code,3,120,120,p.image3)) T['cart_url'] = url_for('cart_add', seller=seller, code=p.code) return render_template('seller_product.html', T=T)
def seller_tool_product_image(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) T["breadcrumbs"] = [{"url":url_for("seller_tool_index",seller=seller), "title":u"ツールトップ"}, {"title":u"商品一覧", "url":url_for("seller_tool_products",seller=seller)}, {"title":u"商品画像編集"}] key_name = "%s-%s" % (seller, code) product = Product.get_by_key_name("%s-%s" % (seller, code)) T["product_title"] = product.title for x in range(1,4): logging.error(product.__dict__["_image%d" % x]) if 0 < product.__dict__["_image%d" % x]: path = get_image_path(seller, code, x, '300', '300', product.__dict__["_image%d" % x]) host = "http://localhost:5000/" T["product_image%d" % x] = '%s%s' % (host, path) T["upload_url"] = blobstore.create_upload_url(request.base_url) return render_template('seller_tool_product_image.html', T=T) else: try: logging.error(request) imgnum = request.values['product_image_num'] filename = 'product_image%s' % imgnum headers = request.files[filename].headers['Content-Type'] msgtype, params = cgi.parse_header(headers) blob_key = blobstore.BlobKey(params['blob-key']) blob = blobstore.BlobInfo.get(blob_key) logging.error(blob.size) if 524288 < blob.size: raise Exception('size error') logging.error(blob.content_type) if blob.content_type == 'image/jpeg': imgtype = 'jpeg' imgtypenum = 1 elif blob.content_type == 'image/png': imgtype = 'png' imgtypenum = 2 elif blob.content_type == 'image/gif': imgtype = 'gif' imgtypenum = 3 else: raise Exception('invalid image type: %s' % blob.content_type) blob_reader = blobstore.BlobReader(blob_key, buffer_size=524288) imgbody = blob_reader.read() # thumbsize imgsizes = '60x60,120x120,300x300' # API POST url = 'http://localhost:8000/upload/product' query = 'group=%s&name=%s&type=%s&resizes=%s&num=%s' % (seller, code, imgtype, imgsizes, imgnum) req = urllib2.Request('%s?%s' % (url,query), data=imgbody, headers={'Content-type':'image/%s' % imgtype}) req.get_method= lambda: 'PUT' ret = urllib2.urlopen(req) ret.read(1024) product = Product.get_by_key_name("%s-%s" % (seller, code)) product.__dict__["_image%s" % imgnum] = imgtypenum product.put() # cleanup blob.delete() except: logging.error(sys.exc_info()) flash(u'失敗しました', category='warning') return redirect(request.base_url)