Files
bambuddy/backend
maziggy 5de06cca0f Stop offering AMS slots as places to store a spool
The Storage Location dropdown listed entries like "H2D-1 - AMS A1" next to
        real locations, and they could not be got rid of.

        They were never locations. Bambuddy used to record which slot a spool was
        loaded into by writing that string into Spoolman's location field, and the
        writer went away when Storage Location became something the user picks --
        but the strings stayed on people's Spoolman spools, and the location sync
        imports every distinct one it finds, so they have been coming back in
        through the front door ever since. A printer slot is where a spool is
        loaded, not where it is put away, and slot assignments already track the
        first.

        Deleting one by hand did not work either, which is what made this a dead
        end rather than an annoyance: the delete route refuses a location that has
        spools, and in Spoolman mode it counts them by matching that same string,
        so every marker still sitting on a loaded spool answered 409 -- and the two
        that were empty were back on the next sync a minute later.

        The import now skips them and a one-shot migration clears the ones already
        in the catalogue. The shape is defined once and used by both: an optional
        printer-name prefix followed by AMS A1, AMS-HT A1 or External Spool, which
        is exactly what convert_ams_slot_to_location produced. It stays narrow on
        purpose -- "AMS Drybox" and "Spare AMS trays" are somebody's shelf, and
        anything the filter swallowed would be a place they could no longer file a
        spool under -- so both directions are pinned by tests.

        A row is only removed when no spool in this database points at it, by id or
        by legacy free-text name, so an internal-mode user who has deliberately
        filed spools under such a name keeps it. Spools in Spoolman are neither
        consulted nor touched: their location strings are the user's data on the
        user's server, and one that still reads "H2D-1 - AMS A1" in the inventory
        list is telling the truth about what Spoolman holds. It simply stops being
        offered as a destination.

        Verified on a live Postgres instance carrying the reported symptom: 13
        locations down to 3, all ten markers removed, the two real shelves and one
        hand-typed Spoolman name left alone.
2026-08-26 10:14:09 +02:00
..