コード例 #1
0
    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)
コード例 #2
0
    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)
        )
コード例 #3
0
    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)
コード例 #4
0
    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)
コード例 #5
0
    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)
コード例 #6
0
    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)
コード例 #7
0
    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