def action(self, order): """""" url = '%s/' % (self.context.absolute_url()) props = getToolByName(self.context, 'portal_properties').pcommerce_properties props_paypal = getToolByName(self.context, 'portal_properties').paypal_properties portal_state = getMultiAdapter((self.context, self.context.REQUEST), name=u'plone_portal_state') lang = self.context.REQUEST.get('LANGUAGE', portal_state.default_language()) price = CurrencyAware(order.totalincl) interface = self.get_paypal_interface_obj() cart = IShoppingCart(self.context) cart_products = cart.getProducts() product_titles = [] for product in cart_products: product_titles.append(product['title'] + ' ' ) button_params = { 'BUTTONCODE': 'ENCRYPTED', 'BUTTONTYPE': 'BUYNOW', 'BUTTONSUBTYPE': 'SERVICES', 'BUYNOWTEXT': 'PAYNOW', 'L_BUTTONVAR0': 'notify_url=%s' % props_paypal.ipn_notify_url, 'L_BUTTONVAR1': 'amount=%.2f' % float(price.getRoundedValue()), 'L_BUTTONVAR2': 'item_name=%s' % "".join(product_titles), 'L_BUTTONVAR3': 'item_number=%s' % order.orderid, 'L_BUTTONVAR4': 'return=%s' % url + 'payment.success', 'L_BUTTONVAR5': 'cancel_return=%s' % url + 'payment.cancel', 'L_BUTTONVAR6': 'no_shipping=1', 'L_BUTTONVAR7': 'no_note=1', 'L_BUTTONVAR8': 'rm=1', 'L_BUTTONVAR11': 'currency_code=EUR' } response = interface.bm_create_button(**button_params) return response.EMAILLINK
class Cart(BrowserView): """view of the shopping cart """ template = ViewPageTemplateFile('cart.pt') def __call__(self): self.request.set('disable_border', 1) self.cart = IShoppingCart(self.context) return self.template() @property @memoize def size(self): return self.cart.amount() @property @memoize def products(self): return self.cart.getProducts() @property @memoize def checkout(self): return getToolByName(self.context, 'portal_membership').checkPermission( CheckOut, self.context) @property @memoize def price(self): return CurrencyAware(self.cart.getPrice()) @property @memoize def taxincl(self): taxes = ITaxes(self.context) return {'tax': taxes.taxincl[0], 'taxname': taxes.taxincl[1]}
class Cart(BrowserView): """view of the shopping cart """ template = ViewPageTemplateFile('cart.pt') def __call__(self): self.request.set('disable_border', 1) self.cart = IShoppingCart(self.context) return self.template() @property @memoize def size(self): return self.cart.amount() @property @memoize def products(self): return self.cart.getProducts() @property @memoize def checkout(self): return getToolByName(self.context, 'portal_membership').checkPermission(CheckOut, self.context) @property @memoize def price(self): return CurrencyAware(self.cart.getPrice()) @property @memoize def taxincl(self): taxes = ITaxes(self.context) return {'tax': taxes.taxincl[0], 'taxname': taxes.taxincl[1]}
def action(self, order): """""" url = '%s/' % (self.context.absolute_url()) props = getToolByName(self.context, 'portal_properties').pcommerce_properties props_paypal = getToolByName(self.context, 'portal_properties').paypal_properties portal_state = getMultiAdapter((self.context, self.context.REQUEST), name=u'plone_portal_state') lang = self.context.REQUEST.get('LANGUAGE', portal_state.default_language()) price = CurrencyAware(order.totalincl) interface = self.get_paypal_interface_obj() cart = IShoppingCart(self.context) cart_products = cart.getProducts() product_titles = [] for product in cart_products: product_titles.append(product['title'] + ' ') button_params = { 'BUTTONCODE': 'ENCRYPTED', 'BUTTONTYPE': 'BUYNOW', 'BUTTONSUBTYPE': 'SERVICES', 'BUYNOWTEXT': 'PAYNOW', 'L_BUTTONVAR0': 'notify_url=%s' % props_paypal.ipn_notify_url, 'L_BUTTONVAR1': 'amount=%.2f' % float(price.getRoundedValue()), 'L_BUTTONVAR2': 'item_name=%s' % "".join(product_titles), 'L_BUTTONVAR3': 'item_number=%s' % order.orderid, 'L_BUTTONVAR4': 'return=%s' % url + 'payment.success', 'L_BUTTONVAR5': 'cancel_return=%s' % url + 'payment.cancel', 'L_BUTTONVAR6': 'no_shipping=1', 'L_BUTTONVAR7': 'no_note=1', 'L_BUTTONVAR8': 'rm=1', 'L_BUTTONVAR11': 'currency_code=EUR' } response = interface.bm_create_button(**button_params) return response.EMAILLINK
class Cart(BaseCart): """view of the shopping cart """ template = ViewPageTemplateFile('cart.pt') @property @memoize def products(self): if not hasattr(self, 'cart'): self.cart = IShoppingCart(self.context) order = None if self.request.SESSION.get(ORDER_SESSION_KEY, None) is not None: registry = IOrderRegistry(self.context) order = registry.getOrder(self.request.SESSION.get(ORDER_SESSION_KEY, 0)) if order is not None: increaseStockFromOrder(registry, order) products = self.cart.getProducts() uid_catalog = getToolByName(self.context, 'uid_catalog') for product in products: provider = IStock(uid_catalog(UID=product['uid'])[0].getObject()) if not len(product['variations']): product['stock'] = provider.stock() else: product['stock'] = provider.variationStock([uid_catalog(UID=v['uid'])[0].getObject() for v in product['variations']]) product['outofstock'] = product['amount'] > product['stock'] product['checkout_allowed'] = not product['outofstock'] or provider.outOfStockCheckoutAllowed() if order is not None: decreaseStockFromOrder(registry, order) return products @property @memoize def outofstock(self): for product in self.products: if not product['checkout_allowed']: return True