Remove order model (#45)

* Add environment name

* Remove orders models
This commit is contained in:
Niklas Fondberg
2022-01-31 10:24:19 +01:00
committed by GitHub
parent a5a05b0df5
commit 0b0e4f99f8
9 changed files with 6 additions and 196 deletions
-4
View File
@@ -37,8 +37,6 @@ def create_app(config_name="config"):
designers, designers,
categories, categories,
prices, prices,
orders,
order_rows,
markets, markets,
) )
@@ -46,8 +44,6 @@ def create_app(config_name="config"):
app.register_blueprint(designers.mod) app.register_blueprint(designers.mod)
app.register_blueprint(categories.mod) app.register_blueprint(categories.mod)
app.register_blueprint(prices.mod) app.register_blueprint(prices.mod)
app.register_blueprint(orders.mod)
app.register_blueprint(order_rows.mod)
app.register_blueprint(markets.mod) app.register_blueprint(markets.mod)
return app return app
-8
View File
@@ -5,12 +5,4 @@ from .category import Category
from .contract_customer import ContractCustomer from .contract_customer import ContractCustomer
from .inquiry import Inquiry from .inquiry import Inquiry
from .product import Material, Product, Currencies, PrintProduct from .product import Material, Product, Currencies, PrintProduct
from .order import (
Order,
OrderField,
OrderRow,
OrderRowField,
OrderRowDetail,
OrderOrderField,
)
from .market import Market from .market import Market
-106
View File
@@ -1,106 +0,0 @@
# 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,
}
-35
View File
@@ -1,35 +0,0 @@
from flask import Blueprint, jsonify, abort, request
from api import db, bernard
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())
@mod.route("/<int:row_id>/send", methods=["POST"])
def send_order_row(row_id):
success = bernard.produce("SendOrderRow", {"row_id": row_id})
if success:
return jsonify({"status": "ok"})
else:
return jsonify(
{"status": "err", "message": "Message not delivered to Bernard queue"}
)
-24
View File
@@ -1,24 +0,0 @@
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())
+3
View File
@@ -124,6 +124,9 @@ Resources:
PortMappings: PortMappings:
- ContainerPort: !Ref ContainerPort - ContainerPort: !Ref ContainerPort
# Define which parameters should be fetched # Define which parameters should be fetched
Environment:
- Name: ENVIRONMENT_NAME
Value: !Ref EnvironmentName
Secrets: Secrets:
- Name: "SQLALCHEMY_DATABASE_URI" - Name: "SQLALCHEMY_DATABASE_URI"
ValueFrom: !Sub "arn:aws:ssm:${AWS::Region}:${AWS::AccountId}:parameter/${EnvironmentName}/SQLALCHEMY_DATABASE_URI" ValueFrom: !Sub "arn:aws:ssm:${AWS::Region}:${AWS::AccountId}:parameter/${EnvironmentName}/SQLALCHEMY_DATABASE_URI"
+1 -1
View File
@@ -10,7 +10,7 @@ services:
ports: ports:
- "1881:80" - "1881:80"
environment: environment:
- SQLALCHEMY_DATABASE_URI=postgresql://fondberg:@docker.for.mac.localhost/photowall - SQLALCHEMY_DATABASE_URI=postgresql://photowall:photowall@docker.for.mac.localhost/photowall
- API_KEYS=[] - API_KEYS=[]
- DEBUG=True - DEBUG=True
# - SQLALCHEMY_TRACK_MODIFICATIONS=True # change in prestart.sh # - SQLALCHEMY_TRACK_MODIFICATIONS=True # change in prestart.sh
-1
View File
@@ -7,7 +7,6 @@ Welcome to the documentation for Photowall API 2.
* [Categories](categories.md) * [Categories](categories.md)
* [Designers](designers.md) * [Designers](designers.md)
* [Prices](prices.md) * [Prices](prices.md)
* [Orders](orders.md)
* [Markets](markets.md) * [Markets](markets.md)
## Authentication ## Authentication
+2 -17
View File
@@ -1,19 +1,4 @@
# Orders # Orders
## Update pwinty_id ## Removed
Moved toi photowall php repo
```
curl -X POST https://api.photowall.com/orders/1/pwinty_id -H "Content-Type: application/json" -d '{"value": 123}'
```
## Update pwinty_image_id
```
curl -X POST https://api.photowall.com/order-rows/1/pwinty_image_id -H "Content-Type: application/json" -d '{"value": 123}'
```
## Send a notification that the order-row has been delivered
```
curl -X POST https://api.photowall.com/order-rows/1/send'
```