Add price calculations in inches, new minimum size 30x30cm (#74)
Co-authored-by: Fredrik Ringqvist <fredrik.ringqvist@photowall.se>
This commit is contained in:
co-authored by
Fredrik Ringqvist
parent
01769758d0
commit
5ca2ae727c
+10
-3
@@ -80,13 +80,19 @@ def wallpaper_price_new(
|
||||
height,
|
||||
material,
|
||||
market,
|
||||
unit,
|
||||
inquiry=None,
|
||||
):
|
||||
m2_prices = wallpaper_m2_price_new(product_id, material.id, market, inquiry)
|
||||
|
||||
if (unit == 'inch'):
|
||||
width = width * 2.54
|
||||
height = height * 2.54
|
||||
|
||||
sqm = (width / 100) * (height / 100)
|
||||
|
||||
min_sqm = 1
|
||||
# 0.09 m2 = 30x30 cm, which means we can accept 1 sq feet (0.0929 m2)
|
||||
min_sqm = 0.09
|
||||
|
||||
sqm = max(sqm, min_sqm)
|
||||
|
||||
@@ -207,6 +213,7 @@ def inquiry_price_new(
|
||||
):
|
||||
width = kwargs.get("width", inquiry.width)
|
||||
height = kwargs.get("height", inquiry.height)
|
||||
unit = kwargs.get("unit", None)
|
||||
material = kwargs.get("material", inquiry.material)
|
||||
external_id = kwargs.get("external_id")
|
||||
|
||||
@@ -220,9 +227,9 @@ def inquiry_price_new(
|
||||
return prices
|
||||
elif inquiry.product_group == "photo-wallpaper":
|
||||
if is_own_image:
|
||||
prices = wallpaper_price_new(None, width, height, material, inquiry.market, inquiry)
|
||||
prices = wallpaper_price_new(None, width, height, material, inquiry.market, unit, inquiry)
|
||||
else:
|
||||
prices = wallpaper_price_new(product_id, width, height, material, inquiry.market, inquiry)
|
||||
prices = wallpaper_price_new(product_id, width, height, material, inquiry.market, unit, inquiry)
|
||||
else:
|
||||
raise ValueError("Invalid product group: {}".format(inquiry.product_group))
|
||||
|
||||
|
||||
+21
-9
@@ -45,23 +45,24 @@ def get_designer():
|
||||
@validate_number("width", "height")
|
||||
@validate_exists("market")
|
||||
def wallpaper():
|
||||
width = request.args.get("width", type=int)
|
||||
height = request.args.get("height", type=int)
|
||||
width = request.args.get("width", type=float)
|
||||
height = request.args.get("height", type=float)
|
||||
market_id = request.args.get("market", type=int)
|
||||
product_id = request.args.get("product", type=int)
|
||||
unit = request.args.get("unit", type=str)
|
||||
new_version = request.args.get("new_version") is not None
|
||||
market = Market.query.get_or_404(market_id)
|
||||
designer = get_designer()
|
||||
reseller = get_reseller()
|
||||
|
||||
if width is None or height is None:
|
||||
raise ValidationError("width and height must be integers")
|
||||
raise ValidationError("width and height must be float")
|
||||
|
||||
materials = Material.query.wallpapers().all()
|
||||
data = []
|
||||
for material in materials:
|
||||
if new_version:
|
||||
prices = wallpaper_price_new(product_id, width, height, material, market)
|
||||
prices = wallpaper_price_new(product_id, width, height, material, market, unit)
|
||||
data.append(
|
||||
{
|
||||
"material": material.name,
|
||||
@@ -146,8 +147,18 @@ def get_inquiry_measurements(inquiry):
|
||||
|
||||
# first try to get it from the query string. If that fails try to get it
|
||||
# from the inquiry row in the database
|
||||
width = request.args.get("width", type=int, default=inquiry.width)
|
||||
height = request.args.get("height", type=int, default=inquiry.height)
|
||||
unit = request.args.get("unit", type=str, default=None)
|
||||
width = request.args.get("width", type=float, default=None)
|
||||
height = request.args.get("height", type=float, default=None)
|
||||
|
||||
if unit and not (width and height):
|
||||
raise Exception("With unit in query string width and height must also be there.")
|
||||
|
||||
if not width:
|
||||
width = inquiry.width
|
||||
|
||||
if not height:
|
||||
height = inquiry.height
|
||||
|
||||
# if we still are missing a width/height just set them to 1 to avoid
|
||||
# errors in the price calculations
|
||||
@@ -157,24 +168,25 @@ def get_inquiry_measurements(inquiry):
|
||||
if not height:
|
||||
height = 1
|
||||
|
||||
return width, height
|
||||
return width, height, unit
|
||||
|
||||
|
||||
def inquiry_wallpaper(inquiry, new_version=False):
|
||||
width, height = get_inquiry_measurements(inquiry)
|
||||
width, height, unit = get_inquiry_measurements(inquiry)
|
||||
|
||||
data = {
|
||||
"id": inquiry.id,
|
||||
"group": "wallpaper",
|
||||
"width": width,
|
||||
"height": height,
|
||||
"unit": unit,
|
||||
"retouch_price": inquiry.local_price_retouch(rounded=False, inc_vat=True),
|
||||
}
|
||||
materials = Material.query.wallpapers().all()
|
||||
prices = []
|
||||
for material in materials:
|
||||
if new_version:
|
||||
price = inquiry_price_new(inquiry, material=material, width=width, height=height)
|
||||
price = inquiry_price_new(inquiry, material=material, width=width, height=height, unit=unit)
|
||||
prices.append(
|
||||
{
|
||||
"material": material.name,
|
||||
|
||||
Reference in New Issue
Block a user