mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-10-22 03:49:18 +02:00
Use the vendor's empty spool weight as tare in Spoolman mode (#3195)
Spoolman resolves a spool's tare from the spool, then the filament, then the vendor's empty_spool_weight. Bambuddy skipped the vendor and fell back to 250 g, so weighing a spool whose tare was set only on its vendor gave the wrong remaining weight. The inventory weigh action, the SpoolBuddy scale and the displayed core weight now share one lookup, and "keep old weight" on a filament change stamps a vendor-inherited tare.
This commit is contained in:
@@ -891,7 +891,7 @@ async def update_spool_weight(
|
||||
update while the Spoolman row the user is actually looking at stayed
|
||||
unchanged (#1530). Mirrors the routing already used by ``nfc/tag-scanned``.
|
||||
"""
|
||||
from backend.app.api.routes._spoolman_helpers import _safe_float
|
||||
from backend.app.api.routes._spoolman_helpers import _safe_float, spoolman_tare
|
||||
from backend.app.models.spool import Spool
|
||||
|
||||
sm_client = await _get_spoolman_client_or_none(db)
|
||||
@@ -921,18 +921,17 @@ async def update_spool_weight(
|
||||
sm_spool = await sm_client.get_spool(req.spool_id)
|
||||
|
||||
filament = sm_spool.get("filament") or {}
|
||||
spool_tare = sm_spool.get("spool_weight")
|
||||
raw_tare = spool_tare if spool_tare is not None else filament.get("spool_weight")
|
||||
core_weight, tare_source = spoolman_tare(sm_spool)
|
||||
spool_weight_warning: str | None = None
|
||||
if raw_tare is None:
|
||||
if tare_source == "fallback":
|
||||
logger.warning(
|
||||
"Spoolman spool %d has no spool_weight set; using 250g fallback for tare",
|
||||
"Spoolman spool %d has no spool_weight or vendor empty_spool_weight set; using 250g fallback for tare",
|
||||
req.spool_id,
|
||||
)
|
||||
spool_weight_warning = (
|
||||
"spool_weight_not_set: Spoolman filament has no spool_weight configured; weight estimate uses 250g fallback"
|
||||
"spool_weight_not_set: Spoolman spool, filament and vendor have no empty-spool weight configured; "
|
||||
"weight estimate uses 250g fallback"
|
||||
)
|
||||
core_weight = _safe_float(raw_tare, 250.0)
|
||||
label_weight = _safe_float(filament.get("weight"), 1000.0)
|
||||
remaining_weight = max(0.0, req.weight_grams - core_weight)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user