Exemplo n.º 1
0
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)
Exemplo n.º 2
0
        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)
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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))
Exemplo n.º 6
0
 def default_order_status(self):
     return [
         OrderStatus(status = 'P', description = 'Pendente'),
         OrderStatus(status = 'C', description = 'Cancelado'),
         OrderStatus(status = 'F', description = 'Finalizado')
     ]