Spool-Level Overrides (Color, Price, Weight) #36

Closed
opened 2026-01-16 04:59:11 +00:00 by tonym · 0 comments
Owner

Summary

Allow color, price, and weight to be set on individual spools, optionally overriding filament defaults.

Upstream Issues

Problem

Current model: Color, price, net weight are on Filament. Each variant requires a separate Filament entry.

Example of current mess:

  • Prusament PETG Orange 1kg
  • Prusament PETG Orange 2kg
  • Prusament PETG Jet Black 1kg
  • (repeat for every color AND size...)

But print parameters (temps, PA, flow) are the SAME!

Proposed Solution

Spool-Level Override Fields

class Spool(Base):
    # existing fields...
    color_hex: Optional[str]  # override filament color
    price: Optional[float]  # override filament price
    initial_weight: Optional[float]  # override filament net weight

    @property
    def effective_color(self):
        return self.color_hex or self.filament.color_hex
    
    @property
    def effective_price(self):
        return self.price or self.filament.price

Benefits

  • One "Prusament PETG" filament with shared settings
  • Add spools of any color/size without duplicating filament
  • Easier calibration maintenance (update once, applies to all)
  • Buy 1kg and 2kg spools of same filament

UI Changes

  • Spool create/edit: optional color picker, price, weight fields
  • Default to filament values, clear to override
  • Show effective values in lists
  • Indicate when value is overridden vs inherited
  • #16 Filter by Color
  • #20 Gallery View
  • #32 SpoolType Model
## Summary Allow color, price, and weight to be set on individual spools, optionally overriding filament defaults. ## Upstream Issues - https://github.com/Donkie/Spoolman/issues/473 (3 thumbs up) - Color on spool - https://github.com/Donkie/Spoolman/issues/292 (2 thumbs up) - Price/weight on spool ## Problem Current model: Color, price, net weight are on Filament. Each variant requires a separate Filament entry. Example of current mess: - Prusament PETG Orange 1kg - Prusament PETG Orange 2kg - Prusament PETG Jet Black 1kg - (repeat for every color AND size...) But print parameters (temps, PA, flow) are the SAME! ## Proposed Solution ### Spool-Level Override Fields ```python class Spool(Base): # existing fields... color_hex: Optional[str] # override filament color price: Optional[float] # override filament price initial_weight: Optional[float] # override filament net weight @property def effective_color(self): return self.color_hex or self.filament.color_hex @property def effective_price(self): return self.price or self.filament.price ``` ### Benefits - One "Prusament PETG" filament with shared settings - Add spools of any color/size without duplicating filament - Easier calibration maintenance (update once, applies to all) - Buy 1kg and 2kg spools of same filament ## UI Changes - Spool create/edit: optional color picker, price, weight fields - Default to filament values, clear to override - Show effective values in lists - Indicate when value is overridden vs inherited ## Related - #16 Filter by Color - #20 Gallery View - #32 SpoolType Model
tonym changed title from Color on Spool Level (Override Filament Color) to Spool-Level Overrides (Color, Price, Weight) 2026-01-16 05:11:37 +00:00
tonym closed this issue 2026-01-23 05:14:10 +00:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tonym/spoolman2#36
No description provided.