P5-6491 use market instead of territory for price calculations (#37)

This commit is contained in:
Martin Carlsson
2021-01-25 09:24:26 +01:00
committed by GitHub
parent dee7344ba5
commit 464e2f1fa6
11 changed files with 127 additions and 256 deletions
+39 -29
View File
@@ -1,10 +1,14 @@
from flask import Blueprint, request, jsonify, abort
from api.helpers import check_api_key
from api.validators import validate_territory, validate_number, validate_any_of
from api.models.inquiry import Inquiry
from api.models.product import Material, Product, PrintProduct
from api.models.contract_customer import ContractCustomer
from api.models import market as market_model
from api.validators import validate_number, validate_any_of, validate_exists
from api.models import (
Inquiry,
Market,
Material,
Product,
PrintProduct,
ContractCustomer,
)
from api.lib import pwinty
from api.lib.prices import (
wallpaper_price,
@@ -41,11 +45,12 @@ def get_designer():
@mod.route("/wallpaper", methods=["GET"])
@validate_number("width", "height")
@validate_territory("territory")
@validate_exists("market")
def wallpaper():
width = request.args.get("width", type=int)
height = request.args.get("height", type=int)
market = market_model.from_territory(request.args.get("territory"))
market_id = request.args.get("market", type=int)
market = Market.query.get_or_404(market_id)
designer = get_designer()
reseller = get_reseller()
@@ -100,9 +105,10 @@ def wallpaper():
@mod.route("/canvas", methods=["GET"])
@validate_number("width", "height")
@validate_territory("territory")
@validate_exists("market")
def canvas():
market = market_model.from_territory(request.args.get("territory"))
market_id = request.args.get("market", type=int)
market = Market.query.get_or_404(market_id)
reseller = get_reseller()
designer = get_designer()
@@ -148,11 +154,12 @@ def canvas():
@mod.route("/poster", methods=["GET"])
@validate_number("width", "height")
@validate_territory("territory")
@validate_exists("market")
def poster():
market_id = request.args.get("market", type=int)
width = request.args.get("width", type=int)
height = request.args.get("height", type=int)
market = market_model.from_territory(request.args.get("territory"))
market = Market.query.get_or_404(market_id)
reseller = get_reseller()
designer = get_designer()
@@ -192,9 +199,10 @@ def poster():
@mod.route("/diy-frame", methods=["GET"])
@validate_number("width", "height")
@validate_territory("territory")
@validate_exists("market")
def diy_frame():
market = market_model.from_territory(request.args.get("territory"))
market_id = request.args.get("market", type=int)
market = Market.query.get_or_404(market_id)
reseller = get_reseller()
width, height = calculate_canvas_limits(
request.args.get("width", type=int),
@@ -220,10 +228,11 @@ def diy_frame():
@mod.route("/poster-hanger", methods=["GET"])
@validate_number("width")
@validate_territory("territory")
@validate_exists("market")
def poster_hanger():
market_id = request.args.get("market", type=int)
width = request.args.get("width", type=int)
market = market_model.from_territory(request.args.get("territory"))
market = Market.query.get_or_404(market_id)
reseller = get_reseller()
data = [
@@ -242,11 +251,12 @@ def poster_hanger():
@mod.route("/framed-print", methods=["GET"])
@validate_territory("territory")
@validate_any_of("sku", pwinty.SKU_CODES)
@validate_exists("market")
def framed_print():
market_id = request.args.get("market", type=int)
sku = request.args.get("sku", type=str)
market = market_model.from_territory(request.args.get("territory"))
market = Market.query.get_or_404(market_id)
reseller = get_reseller()
designer = get_designer()
@@ -547,12 +557,12 @@ def inquiry(inquiry_id):
return jsonify(data)
@mod.route("/list-prices/<string:territory>/wallpaper")
def list_prices_wallpaper(territory):
@mod.route("/list-prices/<int:market_id>/wallpaper")
def list_prices_wallpaper(market_id):
wallpapers = PrintProduct.query.wallpapers().all()
result = {}
material = Material.query.filter(Material.name == "standard-wallpaper").one()
market = market_model.from_territory(territory)
market = Market.query.get_or_404(market_id)
for wallpaper in wallpapers:
result[wallpaper.id] = wallpaper_m2_price(
@@ -561,10 +571,10 @@ def list_prices_wallpaper(territory):
return jsonify(result)
@mod.route("/list-prices/<string:territory>/canvas")
def list_prices_canvas(territory):
@mod.route("/list-prices/<int:market_id>/canvas")
def list_prices_canvas(market_id):
canvases = PrintProduct.query.canvases().all()
market = market_model.from_territory(territory)
market = Market.query.get_or_404(market_id)
result = {}
for canvas in canvases:
@@ -578,10 +588,10 @@ def list_prices_canvas(territory):
return jsonify(result)
@mod.route("/list-prices/<string:territory>/poster")
def list_prices_posters(territory):
@mod.route("/list-prices/<int:market_id>/poster")
def list_prices_posters(market_id):
posters = PrintProduct.query.posters().all()
market = market_model.from_territory(territory)
market = Market.query.get_or_404(market_id)
result = {}
for poster in posters:
@@ -595,8 +605,8 @@ def list_prices_posters(territory):
return jsonify(result)
@mod.route("/list-prices/<string:territory>/framed-print")
def list_prices_framed_prints(territory):
@mod.route("/list-prices/<int:market_id>/framed-print")
def list_prices_framed_prints(market_id):
from api.extensions import db
from types import SimpleNamespace
@@ -611,7 +621,7 @@ def list_prices_framed_prints(territory):
)
rows = db.session.execute(query, {"group": 8})
market = market_model.from_territory(territory)
market = Market.query.get_or_404(market_id)
result = {}
for row in rows: