コード例 #1
0
ファイル: cart.py プロジェクト: mistub70/ftw.shop
    def _add_item(self,
                  skuCode=None,
                  quantity=1,
                  var1choice=None,
                  var2choice=None):
        """ Add item to cart
        """
        context = aq_inner(self.context)
        varConf = IVariationConfig(self.context)

        # get current items in cart
        session = self.request.SESSION
        cart_items = session.get(CART_KEY, {})
        variation_code = varConf.variation_code(var1choice, var2choice)

        # We got no skuCode, so look it up by variation key
        if not skuCode:
            skuCode = varConf.sku_code(var1choice, var2choice)

        item_key = varConf.key(var1choice, var2choice)
        item = cart_items.get(item_key, None)

        item_title = context.Title()
        quantity = int(quantity)
        vat_rate = Decimal(context.getField('vat').get(context))

        supplier_name, supplier_email = self._get_supplier_info(context)

        has_variations = varConf.hasVariations()
        if has_variations:
            variation_dict = varConf.getVariationDict()
            if not variation_dict[variation_code]['active']:
                # Item is disabled
                return False

            variation_pretty_name = varConf.getPrettyName(variation_code)
            item_title = '%s - %s' % (context.Title(), variation_pretty_name)
            price = Decimal(variation_dict[variation_code]['price'])
            # add item to cart
            if item is None:

                item = {
                    'title': item_title,
                    'description': context.Description(),
                    'skucode': skuCode,
                    'quantity': quantity,
                    'price': str(price),
                    'show_price': context.showPrice,
                    'total': str(price * quantity),
                    'url': context.absolute_url(),
                    'supplier_name': supplier_name,
                    'supplier_email': supplier_email,
                    'variation_code': variation_code,
                    'vat_rate': vat_rate,
                    'vat_amount': str(calc_vat(vat_rate, price))
                }
            # item already in cart, update quantity
            else:
                item['quantity'] = item.get('quantity', 0) + quantity
                item['total'] = str(item['quantity'] * price)
                item['vat_amount'] = str(calc_vat(vat_rate, price, quantity))

        else:
            price = Decimal(context.Schema().getField('price').get(context))
            # add item to cart
            if item is None:

                item = {
                    'title': item_title,
                    'description': context.Description(),
                    'skucode': skuCode,
                    'quantity': quantity,
                    'price': str(price),
                    'show_price': context.showPrice,
                    'total': str(price * quantity),
                    'url': context.absolute_url(),
                    'supplier_name': supplier_name,
                    'supplier_email': supplier_email,
                    'vat_rate': vat_rate,
                    'vat_amount': str(calc_vat(vat_rate, price))
                }
            # item already in cart, update quantitiy
            else:
                item['quantity'] = item.get('quantity', 0) + quantity
                item['total'] = str(item['quantity'] * price)
                item['vat_amount'] = str(calc_vat(vat_rate, price, quantity))

        # store cart in session
        cart_items[item_key] = item
        session[CART_KEY] = cart_items
        return True
コード例 #2
0
ファイル: cart.py プロジェクト: jianaijun/ftw.shop
    def _add_item(self, skuCode=None, quantity=1,
                   var1choice=None, var2choice=None):
        """ Add item to cart
        """
        context = aq_inner(self.context)
        varConf = IVariationConfig(self.context)

        # get current items in cart
        session = self.request.SESSION
        cart_items = session.get(CART_KEY, {})
        variation_code = varConf.variation_code(var1choice, var2choice)

        # We got no skuCode, so look it up by variation key
        if not skuCode:
            skuCode = varConf.sku_code(var1choice, var2choice)

        item_key = varConf.key(var1choice, var2choice)
        item = cart_items.get(item_key, None)

        item_title = context.Title()
        quantity = int(quantity)
        vat_rate = Decimal(context.getField('vat').get(context))

        supplier_name, supplier_email = self._get_supplier_info(context)

        has_variations = varConf.hasVariations()
        if has_variations:
            variation_dict = varConf.getVariationDict()
            if not variation_dict[variation_code]['active']:
                # Item is disabled
                return False

            variation_pretty_name = varConf.getPrettyName(variation_code)
            item_title = '%s - %s' % (context.Title(), variation_pretty_name)
            price = Decimal(variation_dict[variation_code]['price'])
            # add item to cart
            if item is None:

                item = {'title': item_title,
                        'description': context.Description(),
                        'skucode': skuCode,
                        'quantity': quantity,
                        'price': str(price),
                        'show_price': context.showPrice,
                        'total': str(price * quantity),
                        'url': context.absolute_url(),
                        'supplier_name': supplier_name,
                        'supplier_email': supplier_email,
                        'variation_code': variation_code,
                        'vat_rate': vat_rate,
                        'vat_amount': str(calc_vat(vat_rate, price))
                }
            # item already in cart, update quantity
            else:
                item['quantity'] = item.get('quantity', 0) + quantity
                item['total'] = str(item['quantity'] * price)
                item['vat_amount'] = str(calc_vat(vat_rate, price, quantity))

        else:
            price = Decimal(context.Schema().getField('price').get(context))
            # add item to cart
            if item is None:

                item = {'title': item_title,
                        'description': context.Description(),
                        'skucode': skuCode,
                        'quantity': quantity,
                        'price': str(price),
                        'show_price': context.showPrice,
                        'total': str(price * quantity),
                        'url': context.absolute_url(),
                        'supplier_name': supplier_name,
                        'supplier_email': supplier_email,
                        'vat_rate': vat_rate,
                        'vat_amount': str(calc_vat(vat_rate, price))
                }
            # item already in cart, update quantitiy
            else:
                item['quantity'] = item.get('quantity', 0) + quantity
                item['total'] = str(item['quantity'] * price)
                item['vat_amount'] = str(calc_vat(vat_rate, price, quantity))

        # store cart in session
        cart_items[item_key] = item
        session[CART_KEY] = cart_items
        return True