def post(self): namespace = self.request.get('namespace') period_type = self.request.get('period_type') period_types = self.request.get('period_types').replace(" ", "") period = self.request.get('period') name = self.request.get('counter_name') delta = self.request.get('delta') type = self.request.get('type') if type == "Increment Counter": counter.load_and_increment_counter(name=name, period=period, period_types=period_types.split(","), namespace=namespace, delta=long(delta)) elif type == "Decrement Counter": counter.load_and_decrement_counter(name=name, period=period, period_types=period_types.split(","), namespace=namespace, delta=long(delta)) logging.info("Redirecting to: /livecount/counter_admin?namespace=" + namespace + "&period_type=" + period_type + "&period_types=" + period_types + "&period=" + period + "&counter_name=" + name + "&delta=" + delta) self.redirect("/livecount/counter_admin?namespace=" + namespace + "&period_type=" + period_type + "&period_types=" + period_types + "&period=" + period + "&counter_name=" + name + "&delta=" + delta)
def doWork(self, productModel): """ This is a common function for both Methods GET and POST """ best_price = None qnt = self.request.get('q', 1) try: quantity = int(qnt) except: logging.error('Error, QNT supplied in request URI was not an integer: QNT = %s' % str(qnt)) raise Exception('Error, QNT supplied in request URI was not an integer: QNT = %s' % str(qnt)) try: ######################################################################## ################# ######## Send to bestPrice script ################# ######################################################################## try: best_price = bestPrice.getBestPrice(productModel.key.urlsafe(), int(quantity)) except Exception as e: logging.error('Error finding Product and/or Price in function getProduct of ProductRequestHandler : %s' % e) message = _('We could not find a Price result for your Product Request. Please try again later.') self.add_message(message, 'error') try: self.redirect(self.request.referer) except: self.redirect_to('home') ######################################################################## ################# ######## Check Results for None's ################# ######################################################################## if best_price == None or best_price <= 0.0: raise Exception('We could not find a Price result for your Product Request. Please try again later.') ## This is an error and we Need a Price to show the User logging.error("Best Price returned as None in function getProduct of ProductRequestHandler.") message = _('We could not find a Price result for your Product Request. Please try again later.') self.add_message(message, 'error') try: self.redirect(self.request.referer) except: self.redirect_to('home') ######################################################################## ##: Add this product to the last products viewed memcache ######################################################################## try: lpv = memcache.get('%s:lastProductsViewed' % str(self.request.remote_addr)) if lpv == None: lpv = [] if productModel in lpv: lpv.remove(productModel) if len(lpv)>10: lastItem = lpv.pop() lpv.insert(0,productModel) memcache.set('%s:lastProductsViewed' % str(self.request.remote_addr),lpv) except Exception as e: logging.error('Error setting Memcache for lastProductsViewed in class ProductRequestHandler : %s' % e) ######################################################################## ##: This is the analytics counter for an idividual product ######################################################################## try: counter.load_and_increment_counter(name=productModel.key.urlsafe(), period_types=[counter.PeriodType.ALL,counter.PeriodType.YEAR], namespace="products") except Exception as e: logging.error('Error setting LiveCount for product in class ProductRequestHandler : %s' % e) params = { 'product': productModel, 'best_price': utils.dollar_float(float(best_price)), 'requested_quantity': int(quantity), 'total_cost': utils.dollar_float(float(best_price)*float(quantity)) } self.bournee_template('product.html', **params) except Exception as e: logging.error('Error finding Product and/or Price in function doWork of ProductRequestHandler : %s' % e) message = _('We could not find a Price result for your Product Request. Please try again later.') self.add_message(message, 'error') try: self.redirect(self.request.referer) except: self.redirect_to('home')
def do_work(self, cart): try: cartOwner = False if self.user: if cart.uk == self.user_key: cartOwner = True ##: Very important to have a User for Private Carts (Shopping Carts) ##: and if a user than the user_key must match the cart's user_key if not cart.public: if not cartOwner: raise Exception('User doing request does not match the \ owner of the cart, this is a must for Private Carts') productOrders = shoppingModels.Order.get_for_cart(cart.key) createCart = self.request.get('create', None) ##: The create flag for showing the add Product Form at the top of the page a = self.request.get('a', None) ##: Address urlsafe Key defaultAddress = None if a and self.user: deferred.defer( \ userModels.set_default_address, \ a, ##: a = Address urlsafe key \ self.user_key \ ) if a: defaultAddress = ndb.Key(urlsafe=a).get() elif self.user: defaultAddress = userModels.Address.query( \ userModels.Address.is_default == True, \ ancestor=self.user_key).get() else: defaultAddress = None if cart.n: self.forkCart_form.name.data = cart.n if cart.d: self.cartDetails_form.description.data = cart.d self.forkCart_form.description.data = cart.d if cart.cat: self.cartDetails_form.category.data = cart.cat self.forkCart_form.category.data = cart.cat ######################################################################## ##: This is the analytics counter for an idividual carts ######################################################################## try: counter.load_and_increment_counter(name=cart.key.urlsafe(), \ namespace="allCarts") if cart.public: counter.load_and_increment_counter(name=cart.key.urlsafe(), \ period_types=[counter.PeriodType.ALL,counter.PeriodType.YEAR], \ namespace="publicCarts") except Exception as e: logging.error('Error setting LiveCount for product in class ProductRequestHandler : %s' % e) params = { "productOrders" : productOrders, \ "urlsafeCartKey" : cart.key.urlsafe(), \ "createCart" : createCart, \ "cart" : cart, \ "cartOwner" : cartOwner, \ "cartDetailsForm" : self.cartDetails_form, \ "forkCartForm" : self.forkCart_form, \ "addressForm" : self.addAddress_form, \ "addProductForm" : self.addProduct_form, \ "address" : defaultAddress, \ "userAddresses" : self.userAddresses, \ } self.bournee_template('fullCart.html', **params) except Exception as e: logging.error('Error in handler <do_work> in class - \ FullPageCartHandler : -- {}'.format(e)) message = _('We are having difficulties displaying the \ Full Cart Page. Please try again later.') self.add_message(message, 'error') self.redirect_to('home')