fix: safe int/float helpers for dirty Excel data (min_box_qty, stock, etc.)

This commit is contained in:
Malin
2026-03-20 11:04:52 +01:00
parent 95cbf8d25d
commit 162e77c1c3

32
main.py
View File

@@ -17,6 +17,28 @@ EXCEL_URL = os.getenv(
REFRESH_HOURS = int(os.getenv("REFRESH_HOURS", "6")) REFRESH_HOURS = int(os.getenv("REFRESH_HOURS", "6"))
app = FastAPI(title="MTZ Stock API", version="1.0.0") app = FastAPI(title="MTZ Stock API", version="1.0.0")
def safe_int(value, default):
if value is None:
return default
if isinstance(value, (int, float)):
return int(value)
try:
return int(str(value).strip())
except (ValueError, TypeError):
return default
def safe_float(value, default):
if value is None:
return default
if isinstance(value, (int, float)):
return float(value)
try:
return float(str(value).strip())
except (ValueError, TypeError):
return default
products_cache = [] products_cache = []
last_refresh = None last_refresh = None
cache_lock = threading.Lock() cache_lock = threading.Lock()
@@ -49,16 +71,16 @@ def download_and_parse():
ean = str(ean_raw).strip() ean = str(ean_raw).strip()
brand_raw = row[9] # col J brand_raw = row[9] # col J
brand = str(brand_raw) if brand_raw is not None else "" brand = str(brand_raw) if brand_raw is not None else ""
min_box = row[10] if row[10] is not None else 1 # col K min_box_raw = row[10] # col K
parsed.append( parsed.append(
{ {
"item_code": int(row[1]), "item_code": safe_int(row[1], 0),
"ean": ean, "ean": ean,
"description": str(row[2] or ""), "description": str(row[2] or ""),
"price_usd": float(row[4] or 0), "price_usd": safe_float(row[4], 0.0),
"stock": int(row[5] or 0), "stock": safe_int(row[5], 0),
"brand": brand, "brand": brand,
"min_box_qty": int(min_box), "min_box_qty": safe_int(min_box_raw, 1),
} }
) )
with cache_lock: with cache_lock: