Example #1
0
def getMenu(day, dayIndex, availableMenuItems):
	dishCategories=getDishCategories()
	menu=[]
	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=[]
		items.append(getDaysItemsForCategory(categoryKey, day, 0, availableMenuItems))
		actualCategoryObject["days"]=items
		menu.append(actualCategoryObject)
	return menu
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)
Example #3
0
	def get(self):
		if not isUserCook(self):
			self.session[LOGIN_NEXT_PAGE_KEY] = self.URL
			self.redirect("/")
			return
		dishKey=self.request.get('dishKey')
		if ((dishKey != None) and (dishKey != "")):
		# A single dish with editable ingredient list
			dish=getDish(dishKey)
			#Check if category exists
			ingredients = dish['ingredients']
			dish['energy'] = 0
			for ingredient in ingredients:
				dish['energy'] = dish['energy'] + ingredient['quantity'] * ingredient['energy'] / 100.0
			gotIngredients = getIngredients()
			availableIngredients = sorted(gotIngredients, key=lambda ingredient:ingredient['name'])
			gotCategories = getDishCategories()
			availableCategories = sorted(gotCategories, key=lambda category:category['name'])
			template_values = {
				'dish': dish,
				'availableCategories':availableCategories,
				'availableIngredients':availableIngredients,
				'add_url':"/addIngredientToDish",
				'delete_url':"/deleteIngredientFromDish"
			}
			template = jinja_environment.get_template('templates/dish.html')
			self.printPage(dish['title'], template.render(template_values), False, False)
		else:
		# All the dishes
			unprocessedDishes = Dish.gql("ORDER BY title")
			dishes = []
			for dish in unprocessedDishes:
				try:
					dish.category
				except ReferencePropertyResolveError:
					dish.category = None
				dishes.append(dish)
			availableCategories = DishCategory.gql("WHERE isMenu = False ORDER BY index")
			template_values = {
			  'dishes': dishes,
			  'availableCategories': availableCategories
			}
			template = jinja_environment.get_template('templates/dish_list.html')
			self.printPage("Receptek", template.render(template_values), False, False)
Example #4
0
	def get(self):
		if not isUserCook(self):
			self.redirect("/")
			return
		dishCategoryKey=self.request.get("dishCategoryKey")
		if ((dishCategoryKey != None) and (dishCategoryKey != "")):
		# List every ingredient in the category
			dishCategory = getCategoryWithDishes(dishCategoryKey);
			template_values = {
				'dishCategory': dishCategory,
				'add_url':DISH_CATEGORY_ADD_URL,
				'delete_url':DISH_CATEGORY_DELETE_URL
			}
			template = jinja_environment.get_template('templates/dishCategory/dish_category.html')
			self.printPage(dishCategory['name'], template.render(template_values), False, False)
		else:
		# All categories
			dishCategories=getDishCategories()
			template_values = {
				'dishCategories': dishCategories,
				'delete_url':DISH_CATEGORY_DELETE_URL
			}
			template = jinja_environment.get_template('templates/dishCategory/dish_category_list.html')
			self.printPage("Etel kategoriak", template.render(template_values), False, False)
Example #5
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 #6
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)
	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)