SpoolType Model (Cardboard, Plastic, Metal Spools) #32

Open
opened 2026-01-16 04:53:01 +00:00 by tonym · 0 comments
Owner

Summary

Add a proper SpoolType entity to track different spool types and their weights per manufacturer.

Upstream Issue

Problem

Manufacturers use different spool types with different weights:

  • Plastic spool: ~250g
  • Cardboard spool: ~175g
  • Metal/reusable: ~300g
  • Masterspool/refill: ~0g

Current workarounds:

  • Create duplicate manufacturers ("ERYONE" vs "ERYONE [Cardboard]")
  • Manually adjust spool weight every time
  • Lose spool type metadata after import from SpoolmanDB

Proposed Solution

Data Model

class SpoolType(Base):
    id: int
    name: str  # "Plastic", "Cardboard", "Metal", "Masterspool"
    vendor_id: Optional[int]  # Vendor-specific spool type
    weight: float  # Empty spool weight in grams
    description: str

class Vendor(Base):
    # existing fields...
    default_spool_type_id: Optional[int]  # Default for this vendor

class Filament(Base):
    # existing fields...
    spool_type_id: Optional[int]  # Override vendor default

Features

  1. Global spool types - Plastic, Cardboard, Metal with standard weights
  2. Vendor-specific types - ERYONE Cardboard (175g), Bambu Cardboard (145g)
  3. Default per vendor - ERYONE defaults to Cardboard
  4. Override per filament - This specific filament uses different spool
  5. Import from SpoolmanDB - Preserve spool_type from external DB

UI

  • SpoolType management in Settings
  • Dropdown in filament create/edit
  • Show spool type in filament list
  • Auto-calculate empty weight based on type

Data Source

Printables has a spool weight catalog that could be referenced.

  • #14 Extra Weight Field (DryPods) - for accessories, not spool type
## Summary Add a proper SpoolType entity to track different spool types and their weights per manufacturer. ## Upstream Issue - https://github.com/Donkie/Spoolman/issues/567 (3 👍) - Note: Donkie declined this, but we want it! ## Problem Manufacturers use different spool types with different weights: - Plastic spool: ~250g - Cardboard spool: ~175g - Metal/reusable: ~300g - Masterspool/refill: ~0g Current workarounds: - Create duplicate manufacturers ("ERYONE" vs "ERYONE [Cardboard]") - Manually adjust spool weight every time - Lose spool type metadata after import from SpoolmanDB ## Proposed Solution ### Data Model ```python class SpoolType(Base): id: int name: str # "Plastic", "Cardboard", "Metal", "Masterspool" vendor_id: Optional[int] # Vendor-specific spool type weight: float # Empty spool weight in grams description: str class Vendor(Base): # existing fields... default_spool_type_id: Optional[int] # Default for this vendor class Filament(Base): # existing fields... spool_type_id: Optional[int] # Override vendor default ``` ### Features 1. **Global spool types** - Plastic, Cardboard, Metal with standard weights 2. **Vendor-specific types** - ERYONE Cardboard (175g), Bambu Cardboard (145g) 3. **Default per vendor** - ERYONE defaults to Cardboard 4. **Override per filament** - This specific filament uses different spool 5. **Import from SpoolmanDB** - Preserve spool_type from external DB ### UI - SpoolType management in Settings - Dropdown in filament create/edit - Show spool type in filament list - Auto-calculate empty weight based on type ## Data Source Printables has a spool weight catalog that could be referenced. ## Related - #14 Extra Weight Field (DryPods) - for accessories, not spool type
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tonym/spoolman2#32
No description provided.