Example #1
0
	def get(self):
		if(not isUserAdmin(self)):
			self.session[LOGIN_NEXT_PAGE_KEY] = self.URL
			self.redirect("/")
			return
		monday = getMonday(getFormDate(self))
		prevMonday=monday + datetime.timedelta(days=-7)
		nextMonday=monday + datetime.timedelta(days=7)
		days=[]
		books = Books.all().filter("monday = ", monday);
		weeklyIncome = books.get()
		if weeklyIncome == None:
			weeklyIncome = Books()
		for i in range(0,5):
			actualDayObject={}
			actualDate=monday+datetime.timedelta(days=i)
			actualDayObject["day"] = dayNames[i]
			actualDayObject["index"] = i
			actualDayObject["date"] = actualDate
			days.append(actualDayObject)
		days[0]['total'] = weeklyIncome.mondayIncome
		days[1]['total'] = weeklyIncome.tuesdayIncome
		days[2]['total'] = weeklyIncome.wednesdayIncome
		days[3]['total'] = weeklyIncome.thursdayIncome
		days[4]['total'] = weeklyIncome.fridayIncome
		template_values={
			'days': days,
			'monday':monday,
			'prev':prevMonday,
			'next':nextMonday
		}
		template = jinja_environment.get_template('templates/admin/weeklyFacebookVisits.html')
		self.printPage("Facebook", template.render(template_values), False, False)
Example #2
0
	def get(self):
		if not isUserCook(self):
			self.redirect("/")
			return
		day = getBaseDate(self)
		#Organize into days
		menu=[]
		dishCategories=getDishCategories()
		monday = getMonday(day)
		days=[]
		for i in range(0,5):
			actualDay=monday+datetime.timedelta(days=i)
			days.append(getDay(actualDay, i, getDaysAvailableMenuItems(actualDay)))
		for category in dishCategories:
			if not category['canBeTopLevel']:
				continue
			actualCategoryObject={}
			actualCategoryObject['category']=category
			categoryKey=category['key']
			dishes = getCategoryWithDishes(category['key'])['dishes']
			availableDishes=sorted(dishes, key=lambda dish: dish['title'])
			actualCategoryObject['availableDishes']=availableDishes
			items=[]
			for i in range(0,5):
				actualDay=monday+datetime.timedelta(days=i)
				items.append(getDaysItemsForCategory(categoryKey, actualDay, i, days[i]["availableMenuItems"]))
			actualCategoryObject["days"]=items
			menu.append(actualCategoryObject)
		# A single dish with editable ingredient list
		prevMonday=monday+datetime.timedelta(days = -7)
		nextMonday=monday+datetime.timedelta(days = 7)
		today=datetime.date.today()
		actualMonday = getMonday(today)
		allDishes=getDishes()
		template_values = {
			'days':days,
			'prev':prevMonday,
			'next':nextMonday,
			'actual':actualMonday,
			'menu':menu,
			'allDishes':allDishes
		}
		template = jinja_environment.get_template('templates/menuEdit.html')
		self.printPage(str(day), template.render(template_values), False, False)
	def get(self):
		if not isUserDelivery(self):
			self.session[LOGIN_NEXT_PAGE_KEY] = self.URL
			self.redirect("/")
			return
		day=getBaseDate(self)
		calendar=day.isocalendar()
		#Organize into days
		dayTotal = 0
		dayCount = 0
		dayQuantity = 0
		dayObject={}
		dayObject["day"]=dayNames[calendar[2]-1]
		dayObject["date"]=day
		prevDay=day+datetime.timedelta(days=-1)
		nextDay=day+datetime.timedelta(days=1)
		today=datetime.date.today()
		monday = getMonday(day)
		weeks = UserWeekOrder.all().filter('monday = ', monday)
		deliveries = []
		for week in weeks:
			dailyUserTotal = 0
			items = getOrderedItemsFromWeekData([week], day)
			if len(items) > 0:
				for item in items:
					dayTotal = dayTotal + item['orderedQuantity'] * item['price']
					dailyUserTotal = dailyUserTotal + item['orderedQuantity'] * item['price']
				orderAddress = getOrderAddress(week, day)
				if orderAddress == None:
					orderAddress = week.user.addresses.get(0)
				orderAddress.comment = getOrderComment(week, day)
				orderAddress.orderedItems = items
				orderAddress.week = week
				orderAddress.dailyUserTotal = dailyUserTotal
				orderAddress.dailyUserDelivery = getZipBasedDeliveryCost(orderAddress.zipNumCode, dailyUserTotal)
				orderAddress.todayPaid = getPaid(week, day)
				orderAddress.weeklyPaid = getWeeklyPaid(week)
				orderAddress.weeklyTotal = getOrderTotal([week])
				orderAddress.weeklyDelivery = getWeeklyDelivery(week)
				deliveries.append(orderAddress)
		sortedDeliveries = sorted(deliveries, key=lambda item:item.zipNumCode)
		template_values = {
			'next':nextDay,
			'actual':today,
			'orders':sortedDeliveries,
			'day':dayObject,
			'dayTotal': dayTotal,
		}
		template_values['prev'] = prevDay
		template = jinja_environment.get_template('templates/deliveryReviewOrders.html')
		self.printPage(str(day), template.render(template_values), False, False)
Example #4
0
	def post(self):
		monday = getMonday(getFormDate(self))
		books = Books.all().filter("monday = ", monday);
		weeklyIncome = books.get()
		if weeklyIncome == None:
			weeklyIncome = Books()
		weeklyIncome.monday = monday
		weeklyIncome.mondayIncome = int(self.request.get("value_0"))
		weeklyIncome.tuesdayIncome = int(self.request.get("value_1"))
		weeklyIncome.wednesdayIncome = int(self.request.get("value_2"))
		weeklyIncome.thursdayIncome = int(self.request.get("value_3"))
		weeklyIncome.fridayIncome = int(self.request.get("value_4"))
		weeklyIncome.put()
		self.redirect(self.URL +"?" + FORM_DAY +"=" + str(monday))
Example #5
0
	def get(self):
		
		if not isUserAdmin(self):
			self.session[LOGIN_NEXT_PAGE_KEY] = self.URL
			self.redirect("/")
			return
		users = getUsers()
		allUsers = []
		today=datetime.date.today()
		monday = getMonday(today)
		maxWeeks = 20
		weekTotals = []
		for i in range(0, maxWeeks):
			weekTotalITem = {
					'total' : 0,
					'monday' : monday + datetime.timedelta(days = (i - maxWeeks + 2) * 7)
				}
			weekTotals.append(weekTotalITem)
		for user in users:
			orderTotal = 0
			computedWeeks = []
			for i in range(0, maxWeeks):
				actualMonday = monday + datetime.timedelta(days = (i - maxWeeks + 2) * 7)
				week = getUserWeekForDay(user['key'], actualMonday)
				if week != None:
					weekTotals[i]['total'] = weekTotals[i]['total'] + week['weekTotal']
					computedWeek = {
						'itemPrice': week['weekTotal'],
						'userKey':user['key'],
						'monday': actualMonday,
					}
					orderTotal = orderTotal + week['weekTotal']
				else:
					computedWeek = {'itemPrice': 0}
				computedWeeks.append(computedWeek)
			user['computedWeeks'] = computedWeeks
			user['orderTotal'] = orderTotal
			allUsers.append(user)
		orderedUsers = sorted(allUsers, key=lambda item:item['orderTotal'], reverse=True)
		template_values = {
			'users':orderedUsers,
			'weekTotals':weekTotals
		}
		template = jinja_environment.get_template('templates/admin/users.html')
		self.printPage("Rendelések", template.render(template_values), False, False)
Example #6
0
	def get(self):
		if not isUserAdmin(self):
			self.session[LOGIN_NEXT_PAGE_KEY] = self.URL
			self.redirect("/")
			return
		users = User.all()
		allUsers = []
		today=datetime.date.today()
		monday = getMonday(today)
		maxWeeks = 20
		weekTotals = []
		for i in range(0, maxWeeks):
			weekTotalITem = {
					'total' : 0,
					'monday' : monday + datetime.timedelta(days = (i - maxWeeks + 1) * 7)
				}
			weekTotals.append(weekTotalITem)
		for user in users:
			orderTotal = 0
			computedWeeks = []
			for i in range(0, maxWeeks):
				actualMonday = monday + datetime.timedelta(days = (i - maxWeeks + 1) * 7)
				weeks = user.weeks.filter("monday = ", actualMonday)
				if (weeks.count() > 0):
					weekTotal = getOrderTotal(weeks)
					weekTotals[i]['total'] = weekTotals[i]['total'] + weekTotal
					computedWeek = {
						'itemPrice': weekTotal,
						'userKey':user.key(),
						'monday': actualMonday,
					}
					orderTotal = orderTotal + weekTotal
				else:
					computedWeek = {'itemPrice': 0}
				computedWeeks.append(computedWeek)
			user.computedWeeks = computedWeeks
			user.orderTotal = orderTotal
			allUsers.append(user)
		orderedUsers = sorted(allUsers, key=lambda item:item.orderTotal, reverse=True)
		template_values = {
			'users':orderedUsers,
			'weekTotals':weekTotals
		}
		template = jinja_environment.get_template('templates/admin/everyUsersOrder.html')
		self.printPage("Rendelések", template.render(template_values), False, False)
Example #7
0
	def post(self):
		if(not isUserLoggedIn(self)):
			self.redirect("/registration")
			return
		userKey = self.session.get(USER_KEY,None)
		user=None
		if (userKey != None):
			user = User.get(userKey)
		addresses = user.addresses.filter("active = ", True)
		if addresses.count()==0:
			template = jinja_environment.get_template('templates/no_address.html')
			self.printPage('Rendelesek', template.render(), True)
			return
		actualOrder = self.session.get(ACTUAL_ORDER,{})
		firstOrderableDay = getFirstOrderableDate(self)
		orderTotal = 0
		orderedItems = []
		if (len(actualOrder) > 0):
			# Organize actual order into weeks
			ordersInWeeks = {} # A map holding ordered items with ordered quantiy
			for orderKey in actualOrder.keys():
				orderItemCount = int(actualOrder[orderKey])
				if (orderItemCount != 0):
					item = db.get(orderKey)
					day = item.day
					if day < firstOrderableDay:
						continue
					monday = getMonday(day)
					if ordersInWeeks.has_key(monday):
						weekHolder = ordersInWeeks.get(monday)
					else:
						weekHolder = []
					orderItem = {
						'key' : orderKey,
						'quantity' : orderItemCount
					}
					weekHolder.append(orderItem)
					ordersInWeeks[monday] = weekHolder
			# Go through order week by week
			if len(ordersInWeeks) > 0:
				orderedItemsForMail = {}
				for monday in ordersInWeeks.keys():
					weekHolder = ordersInWeeks.get(monday)
					alreadyOrdered = getUserOrdersForWeek(user, monday)
					# Merge orders for the week
					for item in weekHolder:
						orderedQuantity = item['quantity']
						orderItemKey = item['key']
						# Order should not remove more items than already ordered
						if alreadyOrdered.has_key(orderItemKey):
							alreadyOrderedQuantity = alreadyOrdered.get(orderItemKey)
							if alreadyOrderedQuantity + orderedQuantity < 0:
								orderedQuantity = 0 - alreadyOrderedQuantity
						if isMenuItem(orderItemKey):
							menuItem = getMenuItem(orderItemKey)
							day = menuItem['day']
							menuItem['quantity'] = orderedQuantity
							menuItem['totalPrice'] = orderedQuantity * menuItem['price']
							menuItem['isMenuItem'] = True
							orderTotal = orderTotal + orderedQuantity * menuItem['price']
							orderedItems.append(str(day) + " " + str(orderItemKey) + " " + str(orderedQuantity) + " " + str(menuItem['price']))
							if orderedItemsForMail.has_key(day):
								daysItems = orderedItemsForMail.get(day)
								daysItems.append(menuItem)
							else:
								daysItems = []
								daysItems.append(menuItem)
							orderedItemsForMail[day] = daysItems
						else:
							composit = getComposit(orderItemKey)
							day = composit['day']
							composit['quantity'] = orderedQuantity
							composit['totalPrice'] = orderedQuantity * composit['price']
							composit['isMenuItem'] = False
							orderTotal = orderTotal + orderedQuantity * composit['price']
							orderedItems.append(str(day) + " " + str(orderItemKey) + " " + str(orderedQuantity) + " " + str(composit['price']))
							if orderedItemsForMail.has_key(day):
								daysItems = orderedItemsForMail.get(day)
								daysItems.append(composit)
							else:
								daysItems = []
								daysItems.append(composit)
							orderedItemsForMail[day] = daysItems
						if alreadyOrdered.has_key(orderItemKey):
							orderedQuantity = orderedQuantity + alreadyOrdered.get(orderItemKey)
						if (orderedQuantity > 0):
							alreadyOrdered[orderItemKey] = orderedQuantity
						else:
							alreadyOrdered.pop(orderItemKey, 0)
					# Add stuff to the first week the user created
					daysForMail = orderedItemsForMail.keys()
					sortedDays = sorted(daysForMail)
					sortedItemsForMail = []
					for day in sortedDays:
						sortedItemsForMail.append(
							{'day':day,
							'orders':orderedItemsForMail.get(day)}
						)
					weeks = user.weeks.filter("monday = ", monday)
					if (weeks.count() > 0):
						week = weeks.get()
					else:
						week = UserWeekOrder()
						week = UserWeekOrder()
						week.user = user
						week.monday = monday
						# Add address for every day
						defaultAddress = user.addresses.filter("active = ", True).get()
						week.mondayAddress = defaultAddress
						week.tuesdayAddress = defaultAddress
						week.wednesdayAddress = defaultAddress
						week.thursdayAddress = defaultAddress
						week.fridayAddress = defaultAddress
						week.saturdayAddress = defaultAddress
						week.sundayAddress = defaultAddress
					
					orderedMenuItems = []
					orderedComposits = []
					for itemKey in alreadyOrdered.keys():
							newItem = str(alreadyOrdered.get(itemKey)) + " " + itemKey
							if isMenuItem(itemKey):
								orderedMenuItems.append(newItem)
							else:
								orderedComposits.append(newItem)
					week.orderedMenuItems = orderedMenuItems
					week.orderedComposits = orderedComposits
					week.put()
					user.lastOrder = datetime.datetime.now(timeZone).date()
					user.lastOrderFlag = True
					user.put()
				updateUser(user)
				template_values = {
					"user":user,
					'userOrder':sortedItemsForMail,
				}
				logInfo(self, self.URL, "ORDER_POSTED")
				event = UserOrderEvent()
				event.orderDate = datetime.datetime.now(timeZone)
				event.user = user
				event.price = orderTotal
				event.orderedItems = orderedItems
				event.put()
				# Send email notification to the user
				messageTxtTemplate = jinja_environment.get_template('templates/orderNotificationMail.txt')
				messageHtmlTemplate = jinja_environment.get_template('templates/orderNotificationMail.html')
				message = mail.EmailMessage(sender="Diet Futar <*****@*****.**>")
				message.subject="Diet-futar, rendeles visszaigazolasa"
				message.to = user.email
				message.bcc = "*****@*****.**"
				message.body = messageTxtTemplate.render(template_values)
				message.html = messageHtmlTemplate.render(template_values)
				message.send()


				self.session[ACTUAL_ORDER]={}
				#self.response.out.write(messageTemplate.render(template_values));
				self.redirect("/personalMenu")
			else:
				print "Error #100: Can't process orders."
		else:
				print "Error #100: Can't process orders."
Example #8
0
	def post(self):
		# Get addresses and comments and save them to the proper day
		# Works only for a singe week view
		if(not isUserLoggedIn(self)):
			self.redirect("/")
			return
		firstOrderableDay=getFirstOrderableDate(self);
		week = None
		for field in self.request.arguments():
			if ((field[:8]=="address_") or (field[:8]=="comment_")):
				day=datetime.datetime.strptime(field[8:], "%Y-%m-%d").date()
				if day < firstOrderableDay:
					continue
				if week == None:
					user = getUser(self)
					monday = getMonday(day)
					weeks = user.weeks.filter("monday = ", monday)
					if weeks.count() == 1:
						week = weeks.get()
				# If no week was determined, continue, nothing to save here
				if week == None:
					continue
				if field[:8]=="address_":
					address=Address.get(self.request.get(field))
					if day.weekday() == 0:
						week.mondayAddress = address
					elif day.weekday() == 1:
						week.tuesdayAddress = address
					elif day.weekday() == 2:
						week.wednesdayAddress = address
					elif day.weekday() == 3:
						week.thursdayAddress = address
					elif day.weekday() == 4:
						week.fridayAddress = address
					elif day.weekday() == 5:
						week.saturdayAddress = address
					elif day.weekday() == 6:
						week.sundayAddress = address
	
				if (field[:8]=="comment_"):
					comment = self.request.get(field)
					if day.weekday() == 0:
						week.mondayComment = comment
					elif day.weekday() == 1:
						week.tuesdayComment = comment
					elif day.weekday() == 2:
						week.wednesdayComment = comment
					elif day.weekday() == 3:
						week.thursdayComment = comment
					elif day.weekday() == 4:
						week.fridayComment = comment
					elif day.weekday() == 5:
						week.saturdayComment = comment
					elif day.weekday() == 6:
						week.sundayComment = comment

		if week != None:
			week.put()

		logInfo(self, self.URL, "MODIFY_ADDRESS_ON_PERSONAL_MENU")
		self.redirect("/personalMenu")
Example #9
0
	def get(self):
		if(not isUserLoggedIn(self)):
			self.redirect("/")
			return
		day = getOrderBaseDate(self)
		monday = getMonday(day)
		firstOrderableDay = getFirstOrderableDate(self);
		user = getUser(self)
		weeks = user.weeks.filter("monday = ", monday)
		days=[]
		for i in range(0,5):
			actualDayObject={}
			orderedPrice = 0
			actualDay=monday+datetime.timedelta(days=i)
			if actualDay < firstOrderableDay:
				actualDayObject["changable"] = False
			else:
				actualDayObject["changable"] = True
			daysOrderItems = getOrderedItemsFromWeekData(weeks, actualDay)
			actualDayObject['orderedItems'] = daysOrderItems
			for orderedItem in daysOrderItems:
				try:
					orderedPrice = orderedPrice + orderedItem['price'] * orderedItem['orderedQuantity']
				except:
					pass
			actualDayObject['day']=dayNames[i]
			actualDayObject['date'] = actualDay
			actualDayObject["orderedPrice"] = orderedPrice
			if daysOrderItems != None and len(daysOrderItems)>0:
				if (weeks.count() > 0):
					week = weeks.get()
				else:
					week = UserWeekOrder()
				address = getOrderAddress(week, actualDay)
				comment = getOrderComment(week, actualDay)
				if address == None:
					address = user.addresses.get()
				actualDayObject['address'] = address
				actualDayObject['comment'] = comment
				actualDayObject["deliveryCost"] = getZipBasedDeliveryCost(address.zipNumCode, orderedPrice)
			days.append(actualDayObject)
		# A single dish with editable ingredient list
		prevMonday=monday + datetime.timedelta(days=-7)
		nextMonday=monday + datetime.timedelta(days=7)
		today=datetime.date.today()
		actualMonday = getMonday(today)
		availableAddresses = []
		for address in user.addresses:
			address.deliveryCost = getZipBasedDeliveryCost(address.zipNumCode, 0)
			address.deliveryLimit = getZipBasedDeliveryLimit(address.zipNumCode)
			availableAddresses.append(address)
		template_values = {
			'days':days,
			'addresses':availableAddresses,
		}
		if nextMonday <= actualMonday + datetime.timedelta(days=FURTHEST_DAY_DISPLAYED):
			template_values['next'] = nextMonday
		if prevMonday >= actualMonday:
			template_values['prev'] = prevMonday
		# A single dish with editable ingredient list
		template = jinja_environment.get_template('templates/reviewOrderedMenu.html')
		logInfo(self, self.URL, "REVIEW_PERSONAL_MENU")
		self.printPage(str(day), template.render(template_values), False, True)
Example #10
0
	def get(self):
		#Determine the week
		day = getOrderBaseDate(self)
		firstOrderableDay = getFirstOrderableDate(self)
		monday = getMonday(day)
		#Organize into days
		menu=[] #Contains menu items
		actualOrder=self.session.get(ACTUAL_ORDER,[])
		logInfo(self, self.URL, "DAY " + str(day))
		logInfo(self, self.URL, "First orderable day " + str(firstOrderableDay))
		logInfo(self, self.URL, "LOADED_ORDERS " + str(len(actualOrder)))
		dishCategories=getDishCategories()
		orderedPrice = [0,0,0,0,0]
		basketPrice = [0,0,0,0,0]
		userKey = self.session.get(USER_KEY,None)
		userOrders={}
		if (userKey != None):
			user = User.get(userKey)
			userOrders = getUserOrdersForWeek(user, monday)
		for category in dishCategories:
			actualCategoryObject={}
			actualCategoryObject['category']=category
			categoryKey=category['key']
			items=[]
			itemsInRows=0
			for i in range(0,5):
				actualDay=monday+datetime.timedelta(days=i)
				actualDayObject={}
				actualDayObject["day"]=dayNames[i]
				actualDayObject["date"]=actualDay
				menuItems = getDaysMenuItems(actualDay, categoryKey)
				composits=getDaysComposits(actualDay, categoryKey)
				#Filter menu items
				actualMenuItems=[]
				actualComposits=[]
				for menuItem in menuItems:
					itemKeyStr=menuItem['key']
					try:
						if (actualOrder!=None) and (itemKeyStr in actualOrder):
							menuItem['inCurrentOrder']=actualOrder[itemKeyStr]
							try:
								basketPrice[i] = basketPrice[i] + menuItem['price'] * int(actualOrder[itemKeyStr])
							except:
								pass
						else:
							menuItem['inCurrentOrder']=0
						try:
							menuItem['orderedQuantity'] = userOrders[itemKeyStr]
							try:
								orderedPrice[i] = orderedPrice[i] + menuItem['price'] * int(userOrders[itemKeyStr])
							except:
								pass
						except KeyError:
							menuItem['orderedQuantity'] = 0
						if actualDay < firstOrderableDay or (menuItem['active'] == False):
							menuItem['orderable']=False
						else:
							menuItem['orderable']=True
						#if (menuItem.orderable or menuItem.orderedQuantity > 0):
						actualMenuItems.append(menuItem)
						itemsInRows=itemsInRows+1
					except ReferencePropertyResolveError:
						continue
				for composit in composits:
					if (actualOrder!=None) and (composit['key'] in actualOrder):
						composit['inCurrentOrder']=actualOrder[composit['key']]
						try:
							basketPrice[i] = basketPrice[i] + composit['price'] * int(actualOrder[composit['key']])
						except:
							pass
					else:
						composit['inCurrentOrder']=0
					try:
						composit['orderedQuantity'] = userOrders[composit['key']]
						try:
							orderedPrice[i] = orderedPrice[i] +  composit['price'] * int(userOrders[composit['key']])
						except:
							pass
					except KeyError:
						composit['orderedQuantity'] = 0
					if composit['day'] < firstOrderableDay or (composit['active'] == False):
						composit['orderable']=False
					else:
						composit['orderable']=True
					actualComposits.append(composit)
					itemsInRows=itemsInRows + 1
				actualDayObject["menuItems"]=actualMenuItems
				actualDayObject["composits"]=actualComposits
				items.append(actualDayObject)
			actualCategoryObject["days"]=items
			if (itemsInRows > 0):
				menu.append(actualCategoryObject)
		days=[]
		for i in range(0,5):
			actualDayObject={}
			actualDayObject["orderedPrice"] = orderedPrice[i]
			actualDayObject["basketPrice"] = basketPrice[i]
			actualDayObject["totalPrice"] = orderedPrice[i] + basketPrice[i]
			actualDayObject["day"]=dayNames[i]
			actualDayObject["date"]=monday+datetime.timedelta(days=i)
			days.append(actualDayObject)
		# A single dish with editable ingredient list
		prevMonday=monday + datetime.timedelta(days=-7)
		nextMonday=monday + datetime.timedelta(days=7)
		today=datetime.date.today()
		actualMonday = getMonday(today)
		template_values = {
			'days':days,
			'menu':menu
		}
		if nextMonday <= actualMonday + datetime.timedelta(days=FURTHEST_DAY_DISPLAYED):
			template_values['next'] = nextMonday
		if prevMonday >= actualMonday:
			template_values['prev'] = prevMonday
		# A single dish with editable ingredient list
		template = jinja_environment.get_template('templates/menuOrder.html')
		logInfo(self, self.URL, "DISPLAY_MENU")
		self.printPage(str(day), template.render(template_values), True)
Example #11
0
	def get(self):
		actualOrder=self.session.get(ACTUAL_ORDER,{})
		day=getBasketBaseDate(actualOrder, self)
		monday = getMonday(day)
		if (len(actualOrder) > 0):
			orderedMenuItemKeys=[]
			for key in actualOrder.keys():
				orderedMenuItemKeys.append(key)
			mayBeNullOrderedItems=db.get(orderedMenuItemKeys)
			orderedItems=[]
			composits=[]
			for item in mayBeNullOrderedItems:
				if item != None:
					if type(item) == MenuItem:
						orderedItems.append(item)
					else:
						composits.append(item)
			userOrders={}
			userKey = self.session.get(USER_KEY,None)
			if (userKey != None):
				user = User.get(userKey)
			#Organize into days
			menu=[]
			actualOrder=self.session.get(ACTUAL_ORDER,[])
			dishCategories=getDishCategories()
			dayTotal = [0,0,0,0,0]
			menuItems=sorted(orderedItems, key=lambda item:item.dish.title)
			for category in dishCategories:
				actualCategoryObject={}
				actualCategoryObject['category']=category
				items=[]
				orderedPrice=[0,0,0,0,0,0,0]
				itemsInRows=0
				for i in range(0,5):
					actualDay=monday+datetime.timedelta(days=i)
					actualDayObject={}
					actualDayObject["day"]=dayNames[i]
					actualDayObject["date"]=actualDay
					#Filter menu items
					actualMenuItems=[]
					actualComposits=[]
					for menuItem in menuItems:
						try:
							menuItem.dish.category
						except ReferencePropertyResolveError:
							continue
						if str(menuItem.dish.category.key())==category['key'] and menuItem.day==actualDay:
							try:
								if (actualOrder!=None) and (str(menuItem.key()) in actualOrder) and int(actualOrder[str(menuItem.key())]) != 0:
									# Create an object to append to the UI
									menuItemObject = getMenuItem(str(menuItem.key()))
									menuItemObject['inCurrentOrder']=actualOrder[menuItemObject['key']]
									try:
										menuItemObject['basketprice'] = int(menuItemObject['inCurrentOrder']) * menuItemObject['price']
									except TypeError:
										menuItemObject['basketprice'] = 0
									try:
										menuItemObject['orderedQuantity'] = userOrders[menuItemObject['key']]
										try:
											orderedPrice[i] = orderedPrice[i] + menuItem['price'] * int(userOrders[menuItemObject['key']])
										except:
											pass
									except:
										menuItemObject['orderedQuantity'] = 0
									dayTotal[i] = dayTotal[i] + menuItemObject['basketprice']
									menuItemObject['orderable']=True
									actualMenuItems.append(menuItemObject)
									itemsInRows=itemsInRows+1
							except ValueError:
								pass	
					for composit in composits:
						if str(composit.category.key())==category['key'] and composit.day==actualDay:
							try:
								if (actualOrder!=None) and (str(composit.key()) in actualOrder) and int(actualOrder[str(composit.key())]) != 0:
									# Create an object to append to the UI
									compositObject = getComposit(str(composit.key()))
									compositObject['inCurrentOrder']=actualOrder[compositObject['key']]
									try:
										compositObject['basketprice'] = int(compositObject['inCurrentOrder']) * compositObject['price']
									except TypeError:
										compositObject['basketprice'] = 0
									dayTotal[i] = dayTotal[i] + compositObject['basketprice']
									compositObject['orderable']=True
									try:
										compositObject['orderedQuantity'] = userOrders[compositObject['key']]
										try:
											orderedPrice[i] = orderedPrice[i] + menuItem['price'] * int(userOrders[compositObject['key']])
										except:
											pass
									except:
										compositObject['orderedQuantity'] = 0
									
									actualComposits.append(compositObject)
									itemsInRows=itemsInRows+1
							except ValueError:
								pass
					actualDayObject["menuItems"]=actualMenuItems
					actualDayObject["composits"]=actualComposits
					items.append(actualDayObject)
				actualCategoryObject["days"]=items
				if (itemsInRows > 0):
					menu.append(actualCategoryObject)
			days=[]
			# Adds header information
			user = getUser(self)
			for i in range(0,5):
				actualDayObject={}
				actualDate=monday+datetime.timedelta(days=i)
				actualDayObject["day"] = dayNames[i]
				actualDayObject["date"] = actualDate
				actualDayObject["total"] = dayTotal[i]
				days.append(actualDayObject)
			# Add addresses
			
			# A single dish with editable ingredient list
			prevMonday=monday + datetime.timedelta(days=-7)
			nextMonday=monday + datetime.timedelta(days=7)
			today=datetime.date.today()
			actualMonday = getMonday(today)
			template_values = {
				'days':days,
				'user':user,
				'menu':menu
			}
			if nextMonday <= actualMonday + datetime.timedelta(days=FURTHEST_DAY_DISPLAYED):
				template_values['next'] = nextMonday
			if prevMonday >= actualMonday:
				template_values['prev'] = prevMonday
			# A single dish with editable ingredient list
			template = jinja_environment.get_template('templates/reviewPendingOrder.html')
			self.printPage(str(day), template.render(template_values), True)
		else:
			template = jinja_environment.get_template('templates/noOrder.html')
			logInfo(self, self.URL, "DISPLAY_BASKET")
			self.printPage(None, template.render(), True)
Example #12
0
	def get(self):
		if not isUserCook(self):
			self.session[LOGIN_NEXT_PAGE_KEY] = self.URL
			self.redirect("/")
			return
		day=getBaseDate(self)
		
		monday = getMonday(day)
		menu=[] #Contains menu items
		dishCategories=getDishCategories()
		orderedPrice = [0,0,0,0,0]
		orders = getOrdersForWeek(monday)
		for category in dishCategories:
			actualCategoryObject={}
			actualCategoryObject['category']=category
			categoryKey=category['key']
			items=[]
			for i in range(0,5):
				actualDay=monday+datetime.timedelta(days=i)
				actualDayObject={}
				actualDayObject["day"]=dayNames[i]
				actualDayObject["date"]=actualDay
				menuItems = getDaysMenuItems(actualDay, categoryKey)
				composits=getDaysComposits(actualDay, categoryKey)
				#Filter menu items
				actualMenuItems=[]
				actualComposits=[]
				for menuItem in menuItems:
					itemKeyStr=menuItem['key']
					if not orders.has_key(itemKeyStr):
						continue
					menuItem['orderedQuantity'] = orders[itemKeyStr]
					orderedPrice[i] = orderedPrice[i] + menuItem['price'] * int(orders[itemKeyStr])
					actualMenuItems.append(menuItem)
				for composit in composits:
					itemKeyStr=composit['key']
					if not orders.has_key(itemKeyStr):
						continue
					composit['orderedQuantity'] = orders[itemKeyStr]
					orderedPrice[i] = orderedPrice[i] + composit['price'] * int(orders[itemKeyStr])
					actualComposits.append(composit)
				actualDayObject["menuItems"]=actualMenuItems
				actualDayObject["composits"]=actualComposits
				items.append(actualDayObject)
			actualCategoryObject["days"]=items
			menu.append(actualCategoryObject)
		days=[]
		totalPrice = 0
		for i in range(0,5):
			actualDayObject={}
			actualDayObject["orderedPrice"] = orderedPrice[i]
			totalPrice = totalPrice + orderedPrice[i]
			actualDayObject["day"]=dayNames[i]
			actualDayObject["date"]=monday+datetime.timedelta(days=i)
			days.append(actualDayObject)
		# A single dish with editable ingredient list
		prevMonday=monday + datetime.timedelta(days=-7)
		nextMonday=monday + datetime.timedelta(days=7)
		template_values = {
			'days':days,
			'menu':menu,
			'totalPrice':totalPrice
		}
		template_values['next'] = nextMonday
		template_values['prev'] = prevMonday
		# A single dish with editable ingredient list
		template = jinja_environment.get_template('templates/chefReviewOrders.html')
		self.printPage(str(day), template.render(template_values), True)
Example #13
0
	def get(self):
		if not isUserAdmin(self):
			self.session[LOGIN_NEXT_PAGE_KEY] = self.URL
			self.redirect("/")
			return
		today=datetime.date.today()
		monday = getMonday(today)
		maxWeeks = 20
		weekTotals = []
		daysOfWeek = [
			{'name':dayNames[0], 'dailyTotals':[]},
			{'name':dayNames[1], 'dailyTotals':[]},
			{'name':dayNames[2], 'dailyTotals':[]},
			{'name':dayNames[3], 'dailyTotals':[]},
			{'name':dayNames[4], 'dailyTotals':[]},
		]
		for i in range(0, maxWeeks):
			weekTotal = 0
			actualMonday = monday + datetime.timedelta(days = (i - maxWeeks + 2) * 7)
			books = Books.all().filter("monday = ", actualMonday)
			weeklyIncome = books.get()
			if weeklyIncome == None:
				weeklyIncome = Books()
			daysOfWeek[0]['dailyTotals'].append(weeklyIncome.mondayIncome)
			weekTotal = weekTotal + weeklyIncome.mondayIncome
			daysOfWeek[1]['dailyTotals'].append(weeklyIncome.tuesdayIncome)
			weekTotal = weekTotal + weeklyIncome.tuesdayIncome
			daysOfWeek[2]['dailyTotals'].append(weeklyIncome.wednesdayIncome)
			weekTotal = weekTotal + weeklyIncome.wednesdayIncome
			daysOfWeek[3]['dailyTotals'].append(weeklyIncome.thursdayIncome)
			weekTotal = weekTotal + weeklyIncome.thursdayIncome
			daysOfWeek[4]['dailyTotals'].append(weeklyIncome.fridayIncome)
			weekTotal = weekTotal + weeklyIncome.fridayIncome
			weekTotalITem = {
				'total' : weekTotal,
				'monday' : actualMonday
			}
			weekTotals.append(weekTotalITem)
		template_values = {
			'weekTotals':weekTotals,
			'daysOfWeek' : daysOfWeek
		}
		template = jinja_environment.get_template('templates/admin/weeklyFacebookVisitsOverview.html')
		self.printPage("Facebook", template.render(template_values), False, False)