P5-4450 save Pwinty order data
This commit is contained in:
+3
-1
@@ -26,11 +26,13 @@ def create_app(config_name="config"):
|
||||
return response
|
||||
|
||||
# register resources
|
||||
from api.resources import server, designers, categories, prices
|
||||
from api.resources import server, designers, categories, prices, orders, order_rows
|
||||
|
||||
app.register_blueprint(server.mod)
|
||||
app.register_blueprint(designers.mod)
|
||||
app.register_blueprint(categories.mod)
|
||||
app.register_blueprint(prices.mod)
|
||||
app.register_blueprint(orders.mod)
|
||||
app.register_blueprint(order_rows.mod)
|
||||
|
||||
return app
|
||||
|
||||
@@ -5,3 +5,4 @@ from .category import Category
|
||||
from .contract_customer import ContractCustomer
|
||||
from .inquiry import Inquiry
|
||||
from .product import Material, Product
|
||||
from .order import Order, OrderField, OrderRow, OrderRowField, OrderRowDetail, OrderOrderField
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
# coding=UTF-8
|
||||
|
||||
from datetime import datetime
|
||||
from api.extensions import db
|
||||
from flask_sqlalchemy import BaseQuery
|
||||
|
||||
|
||||
class Order(db.Model):
|
||||
__tablename__ = "order-orders"
|
||||
id = db.Column("orderid", db.Integer, primary_key=True)
|
||||
inserted = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
|
||||
updated = db.Column(db.DateTime)
|
||||
|
||||
fields = db.relationship("OrderOrderField", backref="order", lazy="dynamic")
|
||||
rows = db.relationship("OrderRow", backref="order", lazy="dynamic")
|
||||
|
||||
|
||||
class OrderFieldQuery(BaseQuery):
|
||||
def by_name(self, name):
|
||||
return self.filter(
|
||||
OrderField.name==name
|
||||
).first()
|
||||
|
||||
|
||||
class OrderField(db.Model):
|
||||
__tablename__ = "order-fields"
|
||||
|
||||
query_class = OrderFieldQuery
|
||||
|
||||
id = db.Column("fieldid", db.Integer, primary_key=True)
|
||||
name = db.Column(db.String)
|
||||
inserted = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
|
||||
|
||||
|
||||
class OrderOrderField(db.Model):
|
||||
__tablename__ = "order-orders_fields"
|
||||
|
||||
orderid = db.Column(
|
||||
db.Integer, db.ForeignKey("order-orders.orderid"), nullable=False
|
||||
)
|
||||
fieldid = db.Column(
|
||||
db.Integer, db.ForeignKey("order-fields.fieldid"), nullable=False
|
||||
)
|
||||
value = db.Column(db.String, nullable=False)
|
||||
inserted = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
|
||||
updated = db.Column(db.DateTime)
|
||||
|
||||
field = db.relationship("OrderField", uselist=False)
|
||||
|
||||
__table_args__ = (db.PrimaryKeyConstraint(orderid, fieldid),)
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
"orderid": self.orderid,
|
||||
"fieldid": self.fieldid,
|
||||
"value": self.value,
|
||||
"inserted": self.inserted
|
||||
}
|
||||
|
||||
|
||||
class OrderRow(db.Model):
|
||||
__tablename__ = "order-rows"
|
||||
|
||||
id = db.Column("rowid", db.Integer, primary_key=True)
|
||||
orderid = db.Column(
|
||||
db.Integer, db.ForeignKey("order-orders.orderid"), nullable=False
|
||||
)
|
||||
details = db.relationship("OrderRowDetail", backref="OrderRow", lazy="dynamic")
|
||||
|
||||
|
||||
class OrderRowFieldQuery(BaseQuery):
|
||||
def by_name(self, name):
|
||||
return self.filter(
|
||||
OrderRowField.name==name
|
||||
).first()
|
||||
|
||||
class OrderRowField(db.Model):
|
||||
__tablename__ = "order-row_fields"
|
||||
|
||||
query_class = OrderRowFieldQuery
|
||||
|
||||
id = db.Column("fieldid", db.Integer, primary_key=True, nullable=False)
|
||||
name = db.Column(db.String)
|
||||
inserted = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
|
||||
updated = db.Column(db.DateTime)
|
||||
|
||||
|
||||
class OrderRowDetail(db.Model):
|
||||
__tablename__ = "order-rows_details"
|
||||
|
||||
rowid = db.Column(db.Integer, db.ForeignKey("order-rows.rowid"), nullable=False)
|
||||
fieldid = db.Column(
|
||||
db.Integer, db.ForeignKey("order-row_fields.fieldid"), nullable=False
|
||||
)
|
||||
value = db.Column(db.String)
|
||||
inserted = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
|
||||
updated = db.Column(db.DateTime)
|
||||
|
||||
field = db.relationship("OrderRowField", uselist=False)
|
||||
|
||||
__table_args__ = (db.PrimaryKeyConstraint(rowid, fieldid),)
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
"rowid": self.rowid,
|
||||
"fieldid": self.fieldid,
|
||||
"value": self.value,
|
||||
"inserted": self.inserted,
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
from flask import Blueprint, jsonify, abort, request
|
||||
from api import db
|
||||
from api.helpers import check_api_key
|
||||
from api.models import OrderRow, OrderRowField, OrderRowDetail
|
||||
|
||||
mod = Blueprint("order_rows", __name__, url_prefix="/order-rows")
|
||||
|
||||
mod.before_request(check_api_key)
|
||||
|
||||
|
||||
@mod.route("/<int:row_id>/pwinty_image_id", methods=["POST"])
|
||||
def save_pwinty_image_id(row_id):
|
||||
data = request.json
|
||||
row = OrderRow.query.get_or_404(row_id)
|
||||
field = OrderRowField.query.filter_by(name="pwinty_image_id").first()
|
||||
detail = row.details.filter_by(fieldid=field.id).first()
|
||||
if not detail:
|
||||
detail = OrderRowDetail(rowid=row.id, fieldid=field.id)
|
||||
|
||||
setattr(detail, "value", data["value"])
|
||||
db.session.add(detail)
|
||||
db.session.commit()
|
||||
|
||||
return jsonify(detail.to_json())
|
||||
@@ -0,0 +1,24 @@
|
||||
from flask import Blueprint, jsonify, abort, request
|
||||
from api import db
|
||||
from api.helpers import check_api_key
|
||||
from api.models import Order, OrderField, OrderOrderField
|
||||
|
||||
mod = Blueprint("orders", __name__, url_prefix="/orders")
|
||||
|
||||
mod.before_request(check_api_key)
|
||||
|
||||
|
||||
@mod.route("/<int:order_id>/pwinty_id", methods=["POST"])
|
||||
def save_pwinty_id(order_id):
|
||||
data = request.json
|
||||
order = Order.query.get_or_404(order_id)
|
||||
field = OrderField.query.by_name(name="pwinty_id")
|
||||
order_field = order.fields.filter_by(fieldid=field.id).first()
|
||||
if not order_field:
|
||||
order_field = OrderOrderField(orderid=order.id, fieldid=field.id)
|
||||
|
||||
setattr(order_field, "value", data["value"])
|
||||
db.session.add(order_field)
|
||||
db.session.commit()
|
||||
|
||||
return jsonify(order_field.to_json())
|
||||
Reference in New Issue
Block a user