def product_about(self): """ 图文介绍 :return: """ if request.method == "GET": p_id = request.args.get("id", 0, type=int) is_edit = request.args.get("ed") category_id = request.args.get("category_id", 0, type=int) query_kwargs = {"id": p_id, "is_edit": is_edit, "category_id": category_id} result = products.get_detail(whats="id, image_text, image_text_pad", _id=p_id) return self.render( template=u"product/product_about.html", data=result, query_kwargs=query_kwargs ) else: req_data = self.gen_arguments _id = req_data.get("id") # 货品ID editor_content = req_data.get("editorValue", "") editor_content_pad = req_data.get("editorValue_pad", "") is_edit = req_data.get("is_edit", 0, type=int) _update_value = dict(image_text=editor_content, image_text_pad=editor_content_pad) if not is_edit: _update_value["validity"] = 1 else: validity = products.get_detail(whats=u"validity", _id=_id).validity _update_value["validity"] = 1 if validity == 2 else validity result = products.update(_id=_id, **_update_value) redirect_url = self.reverse_url(".list_view") return self.make_write(result_code=0, result_data=redirect_url)
def detail_view(self): _id = request.args.get("id", 0, type=int) version = int(request.args.get("v", 1)) return_url_str = request.args.get("return_url", "") if version == 1: result = products.get_detail(_id=_id) first_category_id = result.first_category second_category_id = result.second_category third_category_id = result.third_category category_ids = (first_category_id, second_category_id, third_category_id) category_result = category.get_category_by_id(*category_ids) category_name = u"{} / {} / {}".format( category_result.get(first_category_id, ""), category_result.get(second_category_id, ""), category_result.get(third_category_id, "") ) result["category_name"] = category_name supplier_detail = suppliers.get_detail(whats="fullname", _id=result.supplier_id) result["supplier_name"] = supplier_detail.fullname template_name = u"product/detail_basic.html" elif version == 2: result = list(products.query_goods_list( whats=u"sku, price, created_time, updated_time, stock, is_default, property_names", product_id=_id, filter_del=0 )) for g in result: property_name_list = g.property_names.split("^") property_name = " ".join(property_name_list) g["property_name"] = property_name g["price"] = float(g.price) / 100.0 template_name = u"product/detail_goods.html" elif version == 3: result = products.query_pictures_list(whats=u"id, label, image", product_id=_id) template_name = u"product/detail_pictures.html" elif version == 4: result = products.get_detail(whats="image_text, image_text_pad", _id=_id) template_name = u"product/detail_about.html" return self.render( template=template_name, return_url_str=return_url_str, data=result, product_id=_id, return_url=self.decode_return_url(return_url_str) )
def check_view(self): """ 检查数据 :return: """ spu = request.date.get("spu", "") spu_info = products.get_detail(whats="id", spu=spu) result_code = 102 if spu_info else 0 return self.make_write(result_code=result_code)
def edit_view(self): if request.method == "GET": p_id = request.args.get("id", 0, type=int) query_kwargs = { "id": p_id, "is_edit": 1, "brands": flow_tools.gen_brands(), "suppliers": flow_tools.gen_suppliers(query_type=-1) } result = products.get_detail(_id=p_id) category_list = category.gen_full_category(result.third_category) result["category_list"] = category_list supplier_detail = suppliers.get_detail(whats="fullname", _id=result.supplier_id) result["supplier_name"] = supplier_detail.fullname return self.render( template=u"product/edit_basic.html", data=result, query_kwargs=query_kwargs ) else: req_data = self.gen_arguments _id = int(req_data.get("id")) full_name = req_data.get("full_name") title = req_data.get("title") short_name = req_data.get("short_name") sales_volume = int(req_data.get("sales_volume", 0)) limits = int(req_data.get("limits", 0)) market_text = req_data.get("market_text") about_text = req_data.get("about_text") out_way = int(req_data.get("out_way")) update_values = dict( full_name=full_name, title=title, short_name=short_name, sales_volume=sales_volume, limits=limits, market_text=market_text, about_text=about_text, out_way=out_way ) result = products.update(_id=_id, **update_values) redirect_url = u"{url}?id={id}&ed={is_edit}&category_id={category_id}".format( url=self.reverse_url(".product_attributes_view"), id=_id, is_edit=1, category_id=req_data("category_id", 0) ) return self.make_write(result_code=0, result_data=redirect_url)
def product_attributes_view(self): if request.method == "GET": p_id = request.args.get("id", 0, type=int) is_edit = request.args.get("ed") category_id = int(request.args.get("category_id", 0)) query_kwargs = { "id": p_id, "is_edit": is_edit, "category_id": category_id, "attributes": flow_tools.gen_product_properties(category_id) } attr_items = set() product_properties = None if is_edit == "1": goods_list = products.query_goods_list( whats=u"id, price, stock, is_default, properties", product_id=p_id, filter_del=0 ) _properties = {} for g in goods_list: property_list = [p.split(":")[-1] for p in g.properties.split("^")] property_list.sort() attr_items.update(property_list) key = "".join(property_list) _properties[key] = { "property_id": g.id, "price": float(g.price) / 100.0, "is_default": g.is_default, "stock": g.stock } product_properties = _properties result = { "product_attr_items": attr_items, "product_properties": product_properties } return self.render( template=u"product/goods.html", data=result, query_kwargs=query_kwargs ) else: req_data = self.gen_arguments _id = req_data.get("id") # 货品ID # 属性ID与属性选项ID组合,即12:1216^16:1626^18:1864 properties_list = req_data.getlist("properties") # 属性名与属性选项名组合,即性别:女^颜色:白^尺寸:X property_names_list = req_data.getlist("property_names") price_list = req_data.getlist("price") # 商品价格 stock_list = req_data.getlist("stock") # 商品库存 is_default_index = req_data.get("is_default") # 默认作为货品第一款数据下标 property_id_list = req_data.getlist("property_id") # 商品ID product_detail = products.get_detail(whats="id, third_category, supplier_id", _id=_id) prefix = u"1{supplier_id:0>2}{category_id:0>2}{p_id:0>4}".format( supplier_id=str(product_detail.supplier_id)[:2], category_id=str(product_detail.third_category)[:2], p_id=str(_id)[:4] ) insert_values = [] update_values = [] for index, v in enumerate(zip(properties_list, property_names_list, price_list, stock_list, property_id_list)): attr_id = v[0].split("^")[-1].split(":")[-1] temp = { "price": int(float(v[2]) * 100), "stock": v[3], "product_id": _id, "property_names": v[1], "properties": v[0], "is_default": 1 if index == int(is_default_index) else 0 } if v[4] == "0": sku = self.gen_sku(prefix, attr_id) temp["sku"] = sku temp["created_time"] = datetime.datetime.now() insert_values.append(temp) else: temp["id"] = v[4] update_values.append(temp) if insert_values or update_values: _ids, update_count = products.save_goods(_id, insert_values, update_values) redirect_url = u"{url}?id={id}&ed={is_edit}&category_id={category_id}".format( url=self.reverse_url(".product_pictures"), id=_id, is_edit=req_data.get("is_edit", 0), category_id=req_data.get("category_id", 0) ) return self.make_write(result_code=0, result_data=redirect_url)
def create_view(self): """ 基本信息 :return: """ if request.method == "GET": result = { "id": 0, "brands": flow_tools.gen_brands(), "suppliers": flow_tools.gen_suppliers(query_type=-1) } return self.render(template=u"product/create_basic.html", data=result) else: req_data = self.gen_arguments spu = req_data.get("spu") detail = products.get_detail(whats="id", spu=spu) if detail: return self.make_write(result_code=4000) first_category = int(req_data.get("first_category")) second_category = int(req_data.get("second_category")) third_category = int(req_data.get("third_category")) attributes = flow_tools.gen_product_properties(third_category) # 校验分类是否添加属性 if not attributes: return self.make_write(result_code=2003) product_type = int(req_data.get("product_type")) full_name = req_data.get("full_name") title = req_data.get("title") short_name = req_data.get("short_name") brand_name = req_data.get("brand_name") supplier_id = int(req_data.get("supplier_id")) sales_volume = int(req_data.get("sales_volume", 0)) limits = int(req_data.get("limits", 0)) market_text = req_data.get("market_text") about_text = req_data.get("about_text") out_way = int(req_data.get("out_way")) save_values = dict( first_category=first_category, second_category=second_category, third_category=third_category, product_type=product_type, spu=spu, full_name=full_name, title=title, short_name=short_name, brand_name=brand_name, supplier_id=supplier_id, sales_volume=sales_volume, limits=limits, market_text=market_text, about_text=about_text, out_way=out_way, image_text="", validity=1 ) _id = products.save(**save_values) redirect_url = u"{url}?id={id}&ed={is_edit}&category_id={category_id}".format( url=self.reverse_url(".product_attributes_view"), id=_id, is_edit=0, category_id=third_category ) return self.make_write(result_code=0, result_data=redirect_url)
def content_handle(self): """ 处理除分类之外内容 :return: """ req_data = self.gen_arguments group_id = req_data.get("group_id") group_template_id = req_data.get("group_template_id") _id = req_data.get("id") content_code = req_data.get("content_code") content_type = req_data.get("content_type") ordering = req_data.get("ordering", 0) custom_title = req_data.get("custom_title", "") remark = req_data.get("remark", "") custom_image = req_data.get("custom_image", "") custom_image_size = req_data.get("custom_image_size", "") corner_mark_image = req_data.get("corner_mark_image", "") # 发布方式 1立即 0定时 send_time_type = req_data.get("time", 1) if send_time_type == "0": start_time = req_data.get("start_time") end_time = req_data.get("end_time") else: start_time = None end_time = None if content_type == "0": if not custom_image: product_img_info = products.query_pictures_list( product_id=content_code, whats="image", label=0) for p in product_img_info: custom_image = p.image break if not custom_title: product_info = products.get_detail(whats=u"short_name", _id=content_code) custom_title = product_info.short_name _values = dict(group_template_id=group_template_id, content_type=content_type, content_code=content_code, custom_title=custom_title, remark=remark, custom_image=custom_image, custom_image_size=custom_image_size, corner_mark_image=corner_mark_image if corner_mark_image != "0" else "", start_time=start_time if start_time else None, end_time=end_time if end_time else None, ordering=ordering, group_id=group_id) if corner_mark_image == "": _values["corner_mark_image"] = None if _id == "0": result = groups.save_template_content_detail(**_values) else: result = groups.update_template_content_detail(_id=_id, **_values) return result