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