def today(request, restaurant_id = 0, page = 1): """ get today's order """ today = datetime.datetime(1, 1, 1).today() restaurants = Order.get_today_restaurants() try: restaurant = Restaurant.objects.get(id = restaurant_id) except Exception, e: logging.warn("restaurant %d not exist" % restaurant_id) restaurant = None
def export_today_orders(request): """ export orders of today """ today = datetime.datetime(1, 1, 1).today().strftime("%Y%m%d") orders = Order.get_today_orders() retv = [] retv.append([]) retv.append([u"日期", u"编号", u"餐厅", u"部门", u"订餐人", u"菜品", u"价格"]) total_price = 0 for order in orders: retv.append([today, order.today_id, order.restaurant.name, order.get_department(), order.get_owners_string(), order.get_menus_string(), order.price]) retv.insert(0, [u"总费用", total_price]) return "%s.csv" % today, retv
def ready(request, page = 1): """ ready to complete order """ if request.user.is_authenticated() is False: return redirect("/login/") menus = Menu.objects.filter(id__in = request.session.get("menus", [])) paginator = Paginator(menus, 20) try: menus_page = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. menus_page = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. menus_page = paginator.page(paginator.num_pages) restaurant = None # sum total price total_price = 0 if menus: restaurant = menus[0].restaurant for menu in menus: total_price += menu.price # init and check form if request.method == "POST": form = CommitOrderForm(request.POST) if form.is_valid(): receivers = [] receiver_names = form.cleaned_data["receivers"].split(" ") config = Config.get_default() # check fee is validate if _is_fee_sufficient(request, config, len(receiver_names), total_price) is False: return render_template("order_ready.html", {"menus_page": menus_page, "restaurant": restaurant, "total_price": total_price, "form": form}, request = request) if _is_order_shutdown(request, config) is True: return render_template("order_ready.html", {"menus_page": menus_page, "restaurant": restaurant, "total_price": total_price, "form": form}, request = request) if _is_restaurant_full(request, restaurant, len(receiver_names)) is True: form.set_custom_error(u"餐厅已满") return render_template("order_ready.html", {"menus_page": menus_page, "restaurant": restaurant, "total_price": total_price, "form": form}, request = request) # begin to order now order = Order(sponsor = request.user, restaurant = restaurant, price = total_price) order.save() for name in receiver_names: user = DjangoUser.objects.filter(username = name)[0] user.get_profile().order_meal(order) user.get_profile().save() receivers.append(user) order.owners = receivers order.menus = menus order.save() # update restaurant infomation restaurant.add_order_number(len(receiver_names)) restaurant.save() # update menu information for menu in menus: menu.order_number += len(receiver_names) menu.last_order_datetime = datetime.datetime(1, 1, 1).today() menu.save() # clear session request.session["menus"] = set() return redirect("/order/%d/" % order.id) else: form = CommitOrderForm({"receivers": request.user.username}) return render_template("order_ready.html", {"menus_page": menus_page, "restaurant": restaurant, "total_price": total_price, "form": form}, request = request)
raise Http404 return render_template("order_info.html", {"order": order}, request) def today(request, restaurant_id = 0, page = 1): """ get today's order """ today = datetime.datetime(1, 1, 1).today() restaurants = Order.get_today_restaurants() try: restaurant = Restaurant.objects.get(id = restaurant_id) except Exception, e: logging.warn("restaurant %d not exist" % restaurant_id) restaurant = None if not restaurant: orders = Order.get_today_orders() prefix = "/order/today" else: orders = Order.get_today_orders(restaurant) prefix = "/order/today/%d" % restaurant.id total_price = 0 for order in orders: total_price += order.price paginator = Paginator(orders, 50) try: orders_page = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. orders_page = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results.