def update_order(): if current_user is not None and current_user.is_privileged(UserType.staff): orderid = request.args.get("orderid", -1) if int(orderid) == -1: abort(404) elif int(orderid) == 0: abort(404) order = Orders.query.filter(Orders.orderid == orderid).first() if order is None: return render_template("error.html", message="查找不到与之匹配的订单") order.paytypename = PayType.getName(order.paytype) order.statusname = OrderStatus.getName(order.status) return render_template( "update_order.html", username=current_user.username, order=order, orderStatus=OrderStatus.getAll(), payTypes=PayType.getAll(), index=6, ) else: abort(403)
def wrapper(*args, **kwargs): request = flask.request status = request.args.get('status', '0') status = int(status) if status.isdigit() else 0 status = OrderStatus( status ) if OrderStatus.WAITING.value <= status <= OrderStatus.CLOSED.value else None handler = request.args.get('handler') handler = handler if handler and isinstance(handler, str) else None source = request.args.get('source', '') source = int(source) if source.isdigit() else None pagenum = request.args.get('pagenum', '1') pagenum = int(pagenum) if pagenum.isdigit() else 1 pagenum = max(1, pagenum) pagesize = request.args.get('pagesize', '20') pagesize = int(pagesize) if pagesize.isdigit() else 20 pagesize = min(50, max(20, pagesize)) kwargs['status'] = status kwargs['handler'] = handler kwargs['source'] = source kwargs['pagenum'] = pagenum kwargs['pagesize'] = pagesize return func(*args, **kwargs)
def userorders(): if current_user is not None and current_user.is_privileged(UserType.registered): page = request.args.get("page", 1) if page < 1: page = 1 # 暂时只考虑课程(ptype=1) data = Users.query.with_entities(Users.username, Users.name, Course.name, Orders.amount, Orders.income, Orders.status, Orders.paytype, Orders.orderid, Orders.operator, CourseSchedule.time)\ .join(Orders, Orders.username == Users.username)\ .filter(Users.uid == current_user.uid)\ .filter(Orders.cid == Course.cid)\ .filter(Orders.csid == CourseSchedule.csid)\ .paginate(int(page), config.PAGE_ITEMS, False) orderDataList = [] for item in data.items: orderData = {} orderData['username'] = item[0] orderData['name'] = item[1] orderData['coursename'] = item[2] orderData['amount'] = item[3] orderData['income'] = item[4] orderData['orderstatusname'] = OrderStatus.getName(item[5]) orderData['paytpyename'] = PayType.getName(item[6]) orderData['orderid'] = item[7] orderData['operator'] = item[8] orderData['schedulename'] = item[9] orderDataList.append(orderData) data.items = orderDataList return render_template('userorders.html', username=current_user.username, pagination=data) else: abort(403)
def searchorders(): if current_user is not None and current_user.is_privileged(UserType.staff): page = request.args.get("page", 1) if page < 1: page = 1 username = request.args.get("username") pattern = "%" + username + "%" # 支持模糊查询 data = ( Users.query.with_entities( Users.username, Users.name, Course.name, Orders.amount, Orders.income, Orders.status, Orders.paytype, Orders.orderid, Orders.operator, CourseSchedule.time, ) .join(Orders, Orders.username == Users.username) .join(OrderItem, OrderItem.orderid == Orders.orderid) .filter(Users.username.like(pattern)) .filter(OrderItem.pid == Course.cid) .filter(OrderItem.subid == CourseSchedule.csid) .paginate(int(page), config.PAGE_ITEMS, False) ) orderDataList = [] for item in data.items: orderData = {} orderData["username"] = item[0] orderData["name"] = item[1] orderData["coursename"] = item[2] orderData["amount"] = item[3] orderData["income"] = item[4] orderData["orderstatusname"] = OrderStatus.getName(item[5]) orderData["paytpyename"] = PayType.getName(item[6]) orderData["orderid"] = item[7] orderData["operator"] = item[8] orderData["schedulename"] = item[9] orderDataList.append(orderData) data.items = orderDataList return render_template("orders.html", username=current_user.username, pagination=data, index=6) else: abort(403)
def upload_file(): if request.method == 'POST': if 'file' not in request.files: flash('No file part') return redirect(request.url) file_obj = request.files['file'] if file_obj.filename == '' or file_obj.filename.split( '.')[-1] != 'tsv': error = 'Invalid file!' return render_template('upload.html', error=error) if file_obj: filename = secure_filename(file_obj.filename) file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename) file_obj.save(file_path) with open(file_path) as order_data: reader = csv.reader(order_data, delimiter='\t') app.logger.info('Begin processing File') for row in reader: customer, product, order_status, previous_order = process_order( row) if not previous_order: insert_row(db.session, Customer(**customer), app.logger) db.session.commit() insert_row(db.session, Product(**product), app.logger) db.session.commit() insert_row(db.session, OrderStatus(**order_status), app.logger) db.session.commit() else: order = OrderStatus.query.filter_by( status='new', **previous_order).first() if order: order.status = 'canceled' order.updated_at = order_status['updated_at'] else: app.logger.warn( 'Unable to load row: {}'.format(order_status)) db.session.commit() return redirect(url_for('uploaded_file', filename=filename))
def default_order_status(self): return [ OrderStatus(status = 'P', description = 'Pendente'), OrderStatus(status = 'C', description = 'Cancelado'), OrderStatus(status = 'F', description = 'Finalizado') ]