Example #1
0
	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)
Example #2
0
	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')
Example #3
0
	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')