Fixed bug in Spoolman sync

This commit is contained in:
maziggy
2026-01-03 08:11:55 +01:00
parent 74e2d95ea8
commit d03fe7598f
+15 -5
View File
@@ -602,17 +602,28 @@ class SpoolmanClient:
async def _find_or_create_filament(self, tray: AMSTray) -> dict | None:
"""Find existing filament or create new one.
Only matches Bambu Lab vendor filaments since this is called for
Bambu Lab spools. Third-party filaments (like 3DJAKE) are ignored
to prevent incorrect matching by color alone.
Args:
tray: The AMSTray containing filament info
Returns:
Filament dictionary or None on failure.
"""
# Search internal filaments first
filaments = await self.get_filaments()
# Get Bambu Lab vendor ID for filtering
bambu_vendor_id = await self.ensure_bambu_vendor()
color_hex = tray.tray_color[:6] # Strip alpha channel
# Search internal filaments - only match Bambu Lab vendor
filaments = await self.get_filaments()
for filament in filaments:
# Only match filaments from Bambu Lab vendor
fil_vendor_id = filament.get("vendor_id") or filament.get("vendor", {}).get("id")
if fil_vendor_id != bambu_vendor_id:
continue
# Match by material and color (handle None values)
fil_material = filament.get("material") or ""
fil_color = filament.get("color_hex") or ""
@@ -628,11 +639,10 @@ class SpoolmanClient:
# Found in external library - need to create internal copy
return await self._create_filament_from_external(filament, tray)
# Not found - create new filament
vendor_id = await self.ensure_bambu_vendor()
# Not found - create new Bambu Lab filament
return await self.create_filament(
name=tray.tray_sub_brands or tray.tray_type,
vendor_id=vendor_id,
vendor_id=bambu_vendor_id,
material=tray.tray_type,
color_hex=color_hex,
weight=tray.tray_weight,