def print_my_orders(my_order): return template.myorder.format( Meal.get(my_order.mealId).name, my_order.studentName, my_order.studentId, my_order.birthday, Canteen.get(my_order.canteenId).name, my_order.token)
def POST(self): data = web.input( req="", studentId="", studentName="", birthday="", phone="", sex="", location="", canteen="", package="", message="" ) if data.req == 'canteen': web.header('Content-Type', 'application/json') try: canteens = Canteen.getAll(location=data.location) result = [dict(cid=item.id, name=item.name) for item in canteens] return json.dumps(result) except Exception: return '{}' elif data.req == 'package': web.header('Content-Type', 'application/json') try: meals = Meal.getAll(canteenId=data.canteen, active=1) result = [dict(id=item.id, name=item.name) for item in meals] return json.dumps(result) except Exception: return '{}' elif data.req == 'submit': # 验证数据有效性 web.header('Content-Type', 'application/json') status = self.checkMatch(data.studentId, data.studentName) if status == -3: return json.dumps({'errinfo': "抱歉,系统出现错误."}) elif status == -2: return json.dumps({'errinfo': "姓名不能为空"}) elif status == -1: return json.dumps({'errinfo': "学号不能为空"}) elif status == 0: return json.dumps({'errinfo': "学号与姓名不匹配!"}) elif status == 2: return json.dumps({'errinfo': "您的账户被锁定,请检查是否您是否有未完成的订单!"}) elif status == 3: # 先注册 User(dict( studentId=data.studentId, studentName=data.studentName, sex=self.getSexId(data.sex), birthday=data.birthday, phone=data.phone, shortMessage=data.message, lastOrderTime="0000-00-00", addTime=web.SQLLiteral("NOW()"), isLock=False )).insert(); # 检查 餐品是否有效是否有效 meal = Meal.get(data.package) if meal == None or str(meal.canteenId) != str(data.canteen): return json.dumps({'errinfo': "请不要伪造请求"}) # 检查订餐日期是否有效 if not re.match(r'^\d{4}-\d{2}-\d{2}$', data.birthday): return json.dumps({'errinfo': '请输入正确的日期, 如 1990-10-01'}) max_deltatime = datetime.timedelta(days=7) min_deltatime = datetime.timedelta(days=0) order_time = datetime.datetime.strptime(data.birthday, "%Y-%m-%d") now = datetime.datetime.now() # 提前 1 - 7 天订餐 if order_time > now + max_deltatime or order_time < now + min_deltatime: return json.dumps({'errinfo': '请提前1-7天订餐!'}) # 获取领餐人信息 user = User.getBy(studentId=data.studentId, studentName=data.studentName) if user.lastOrderTime: last_order_time = datetime.datetime.strptime(str(user.lastOrderTime), "%Y-%m-%d") deltatime = datetime.timedelta(days=300) # 判断订餐间隔 if last_order_time + deltatime > datetime.datetime.now(): return json.dumps({'errinfo': "订餐时间间隔过短, 一年内只能免费订餐一次!"}) # 获取订餐人(当前操作者信息) adder = User.getBy(studentId=self.session.sid) Order(dict(userId=adder.id, canteenId=data.canteen, mealId=data.package, studentId=data.studentId, studentName=data.studentName, phone=data.phone, sex=self.getSexId(data.sex), birthday=data.birthday, token=self.generateToken(), wish=data.message, addTime=web.SQLLiteral("NOW()"), isActive=True )).insert() user.isLock = 1 user.update() return json.dumps({'successinfo': "添加成功!"}) else: raise web.Forbidden()