示例#1
0
    def GET(self):
        shopping_basket = web.ctx.session.shoppingbasket
        shopping_cost = web.ctx.session.shoppingcost
        shopping_discount = web.ctx.session.shoppingdiscount

        user_info = web.ctx.session.userinfo
        route_id = web.ctx.session.routeid
        menu_calendar = web.ctx.session.menucalendar
        menu_date = web.ctx.session.menudate
        ot_flag = 0

        ot_ts  = int(time.mktime(time.strptime(str(menu_date)+" 10:32:00", "%Y-%m-%d %H:%M:%S")))
        cur_ts = int(time.time())
        if cur_ts > ot_ts:
            ot_flag = 1

        i = web.input()
        param = i.get("param")
        if param:
            order_info = {}
            order_list = param.split("|")
            for order in order_list:
                if order:
                    id,cnt = order.split("_")
                    order_info[id] = cnt
            lunches = list(model.get_menu(int(route_id), menu_date))

            _count = 0
            _price0 = 0
            _price2 = 5.0

            if menu_date != str(datetime.date.today()):
                shopping_discount[menu_date] = 1 #早鸟计划

            for lunch in lunches:
                if order_info.has_key(lunch.ID):
                    cnt = order_info[lunch.ID]
                    if not shopping_basket.has_key(menu_date):
                        shopping_basket[menu_date] = {}
                    if not shopping_basket[menu_date].has_key(lunch.ID):
                        shopping_basket[menu_date][lunch.ID] = {}
                    shopping_basket[menu_date][lunch.ID]["Count"] = cnt
                    shopping_basket[menu_date][lunch.ID]["Price"] = lunch.Price
                    shopping_basket[menu_date][lunch.ID]["Name"] = lunch.Meal
                    _price0 += float(lunch.Price) * float(cnt)
                    _count += int(cnt)
                else:
                    if shopping_basket.has_key(menu_date) and shopping_basket[menu_date].has_key(lunch.ID):
                        del shopping_basket[menu_date][lunch.ID]

            if not shopping_cost.has_key(menu_date):
                shopping_cost[menu_date] = {}
            shopping_cost[menu_date]["price0"] = _price0
            shopping_cost[menu_date]["price1"] = 0
            shopping_cost[menu_date]["price2"] = _price2
            shopping_cost[menu_date]["price"] = _price0 + _price2
            shopping_cost[menu_date]["count"] = _count

            web.ctx.session.shoppingbasket = shopping_basket
            web.ctx.session.shoppingcost = shopping_cost
            web.ctx.session.shoppingdiscount = shopping_discount

        web.ctx.session.webpage = "bill"

        logging.info("[bill][uid:%s]", web.ctx.session.openid)
        if user_info.has_key("ID"):
            return render.bill(user_info, shopping_basket, menu_calendar, shopping_cost, ot_flag, shopping_discount)
        else:
            web.seeother('/delivery')
	'''
示例#2
0
    def GET(self):

        # 2016/04/29 guard code.
        if web.ctx.session.webpage == "bill":
            web.ctx.session.webpage = "menus"
            return web.seeother("menus")

        i = web.input()
        office_id = i.get("officeid")
        menu_date = i.get("menudate")  # different meaning, NEXT menudate
        route_id = i.get("routeid")

        if route_id is None:
            route_id = 0

        lunches_info = {}
        menu_calendar = web.ctx.session.menucalendar
        shopping_basket = web.ctx.session.shoppingbasket
        shopping_cost = web.ctx.session.shoppingcost
        shopping_discount = web.ctx.session.shoppingdiscount
        user_info = web.ctx.session.userinfo

        # if parameters, load previous menu date
        param = i.get("param")
        if param:
            _menudate = web.ctx.session.menudate
            order_info = {}
            # print _menudate+":"+param
            order_list = param.split("|")
            for order in order_list:
                if order:
                    id, cnt = order.split("_")
                    order_info[id] = cnt
            lunches = list(model.get_menu(int(route_id), _menudate))

            _count = 0
            _price0 = 0.0
            _price2 = 5.0

            if _menudate != str(datetime.date.today()):
                shopping_discount[_menudate] = 1  # 早鸟计划

            for lunch in lunches:
                if order_info.has_key(lunch.ID):
                    cnt = order_info[lunch.ID]
                    if not shopping_basket.has_key(_menudate):
                        shopping_basket[_menudate] = {}
                    if not shopping_basket[_menudate].has_key(lunch.ID):
                        shopping_basket[_menudate][lunch.ID] = {}
                    shopping_basket[_menudate][lunch.ID]["Count"] = cnt
                    shopping_basket[_menudate][lunch.ID]["Price"] = lunch.Price
                    shopping_basket[_menudate][lunch.ID]["Name"] = lunch.Meal

                    _price0 += float(lunch.Price) * float(cnt)
                    _count += int(cnt)
                else:
                    if shopping_basket.has_key(_menudate) and shopping_basket[_menudate].has_key(lunch.ID):
                        del shopping_basket[_menudate][lunch.ID]

            if not shopping_cost.has_key(_menudate):
                shopping_cost[_menudate] = {}
            shopping_cost[_menudate]["price0"] = _price0
            shopping_cost[_menudate]["price"] = _price0 + _price2
            shopping_cost[_menudate]["price2"] = _price2
            shopping_cost[_menudate]["price1"] = 0
            shopping_cost[_menudate]["count"] = _count

            web.ctx.session.shoppingbasket = shopping_basket
            web.ctx.session.shoppingcost = shopping_cost
            web.ctx.session.shoppingdiscount = shopping_discount

        # guard code
        menu_calender_sorted = sorted(menu_calendar.items(), key=lambda menu_calendar: menu_calendar[0])
        if menu_date is None:
            menu_date = menu_calender_sorted[0][0]
        # print menu_date

        if office_id is None:
            office_id = web.ctx.session.officeid

        lunches = model.get_menu(int(route_id), menu_date)

        web.ctx.session.officeid = office_id

        offices_iter = model.get_office(int(office_id))
        offices = list(offices_iter)
        user_info["OfficeAddr"] = offices[0].Name
        user_info["OfficeId"] = office_id

        if shopping_basket.has_key(str(menu_date)):
            lunches_info = shopping_basket[str(menu_date)]

        web.ctx.session.userinfo = user_info

        # calculate shopping counts
        shopping_count = 0
        for _d in shopping_cost:
            if shopping_cost[_d].has_key("count"):
                shopping_count += shopping_cost[_d]["count"]

        web.ctx.session.menudate = str(menu_date)
        web.ctx.session.webpage = "menus"

        logging.info("[menu][uid:%s]", web.ctx.session.openid)
        return render.menus(menu_calender_sorted, lunches, offices[0], menu_date, lunches_info, shopping_count)
        """