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
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 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)
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)
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)
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)