P5-6517 add market resource (#32)
This commit is contained in:
+16
-1
@@ -25,8 +25,22 @@ def create_app(config_name="config"):
|
|||||||
response.status_code = 400
|
response.status_code = 400
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
@app.errorhandler(ValueError)
|
||||||
|
def on_validation_error(error):
|
||||||
|
response = jsonify({"status": 400, "message": str(error)})
|
||||||
|
response.status_code = 400
|
||||||
|
return response
|
||||||
|
|
||||||
# register resources
|
# register resources
|
||||||
from api.resources import server, designers, categories, prices, orders, order_rows
|
from api.resources import (
|
||||||
|
server,
|
||||||
|
designers,
|
||||||
|
categories,
|
||||||
|
prices,
|
||||||
|
orders,
|
||||||
|
order_rows,
|
||||||
|
markets,
|
||||||
|
)
|
||||||
|
|
||||||
app.register_blueprint(server.mod)
|
app.register_blueprint(server.mod)
|
||||||
app.register_blueprint(designers.mod)
|
app.register_blueprint(designers.mod)
|
||||||
@@ -34,5 +48,6 @@ def create_app(config_name="config"):
|
|||||||
app.register_blueprint(prices.mod)
|
app.register_blueprint(prices.mod)
|
||||||
app.register_blueprint(orders.mod)
|
app.register_blueprint(orders.mod)
|
||||||
app.register_blueprint(order_rows.mod)
|
app.register_blueprint(order_rows.mod)
|
||||||
|
app.register_blueprint(markets.mod)
|
||||||
|
|
||||||
return app
|
return app
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
from api.extensions import db
|
from api.extensions import db
|
||||||
from .product import Currencies
|
from .product import Currencies
|
||||||
|
from sqlalchemy.orm import validates
|
||||||
|
|
||||||
|
|
||||||
class Market(db.Model):
|
class Market(db.Model):
|
||||||
@@ -10,6 +11,16 @@ class Market(db.Model):
|
|||||||
id = db.Column(db.Integer, primary_key=True)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
name = db.Column(db.String(255))
|
name = db.Column(db.String(255))
|
||||||
|
|
||||||
|
@validates("name")
|
||||||
|
def validate_name(self, key, value):
|
||||||
|
raise ValueError("Name can not be modified")
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
return {
|
||||||
|
"id": self.id,
|
||||||
|
"name": self.name,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class PriceAdjustments(db.Model):
|
class PriceAdjustments(db.Model):
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
from flask import Blueprint, request, jsonify
|
||||||
|
from api import db
|
||||||
|
from api.models import Market
|
||||||
|
from api.helpers import pagination_to_dict, check_api_key
|
||||||
|
|
||||||
|
mod = Blueprint("markets", __name__, url_prefix="/markets")
|
||||||
|
|
||||||
|
mod.before_request(check_api_key)
|
||||||
|
|
||||||
|
|
||||||
|
@mod.route("/", methods=["GET"])
|
||||||
|
def list():
|
||||||
|
page = request.args.get("page", 1, type=int)
|
||||||
|
per_page = request.args.get("per_page", 20, type=int)
|
||||||
|
query = Market.query.order_by(Market.id.asc())
|
||||||
|
pagination = query.paginate(page=page, per_page=per_page)
|
||||||
|
j = {
|
||||||
|
"pagination": pagination_to_dict(pagination),
|
||||||
|
"data": [item.to_json() for item in pagination.items],
|
||||||
|
}
|
||||||
|
return jsonify(j)
|
||||||
|
|
||||||
|
|
||||||
|
@mod.route("/<int:id>", methods=["GET"])
|
||||||
|
def show(id):
|
||||||
|
market = Market.query.get_or_404(id)
|
||||||
|
return jsonify(market.to_json())
|
||||||
|
|
||||||
|
|
||||||
|
@mod.route("/<int:id>", methods=["PUT"])
|
||||||
|
def update(id):
|
||||||
|
market = Market.query.get_or_404(id)
|
||||||
|
data = request.json
|
||||||
|
for k, v in data.items():
|
||||||
|
setattr(market, k, v)
|
||||||
|
db.session.add(market)
|
||||||
|
db.session.commit()
|
||||||
|
|
||||||
|
return jsonify(market.to_json())
|
||||||
@@ -8,6 +8,7 @@ Welcome to the documentation for Photowall API 2.
|
|||||||
* [Designers](designers.md)
|
* [Designers](designers.md)
|
||||||
* [Prices](prices.md)
|
* [Prices](prices.md)
|
||||||
* [Orders](orders.md)
|
* [Orders](orders.md)
|
||||||
|
* [Markets](markets.md)
|
||||||
|
|
||||||
## Authentication
|
## Authentication
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# Markets
|
||||||
|
|
||||||
|
## List markets
|
||||||
|
|
||||||
|
```
|
||||||
|
curl -X GET https://api.photowall.com/markets/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Show market
|
||||||
|
|
||||||
|
```
|
||||||
|
curl -X GET https://api.photowall.com/markets/1
|
||||||
|
```
|
||||||
|
|
||||||
|
## Update market
|
||||||
|
|
||||||
|
```
|
||||||
|
curl -X PUT https://api:5000/markets/1 -H "Content-Type: application/json" -d '{"price_adjustment": "1.25"}
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user