Spool page for NFC links, bridge address; vendor-first new spool form
- /s/<id> shows a spool: rest in Spoolman and CC2 Control, where it is, last booking, history, links to Spoolman and the tag generator. - Setting "Adresse der Bridge"; the tag generator can put <address>/s/<id> on the tag, so an iPhone held to the roll opens that page. - New spool: vendor and material chosen from Spoolman, the vendor's filaments offered, values taken from similar filaments, duplicates pointed out and never created twice. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014GcEk5tkfFSYD6NTF66NkC
This commit is contained in:
1 parent
b37cd64909
commit
64ea91d107
10 files changed
+304
-49
No files matched your search
@@ -122,6 +122,7 @@ class Settings:
|
||||
empty_grace: float = 20.0 # seconds with tray status 0 before a slot counts as empty
|
||||
settle_seconds: float = 60.0 # `remaining` must be unchanged this long before booking
|
||||
archive_empty: bool = True # archive a Spoolman spool whose roll ran out
|
||||
public_url: str = "" # the bridge as phones reach it (links on NFC tags); empty: the address in the browser
|
||||
dry_run: bool = True
|
||||
printers: list[PrinterConfig] = field(default_factory=list)
|
||||
|
||||
@@ -162,6 +163,9 @@ class Settings:
|
||||
if not self.spoolman_url.startswith(("http://", "https://")):
|
||||
raise ValueError("Spoolman-URL muss mit http:// oder https:// beginnen")
|
||||
self.spoolman_url = self.spoolman_url.rstrip("/")
|
||||
self.public_url = self.public_url.strip().rstrip("/")
|
||||
if self.public_url and not re.fullmatch(r"https?://[^\s/?#]+(/[^\s?#]*)?", self.public_url):
|
||||
raise ValueError("Adresse der Bridge muss mit http:// oder https:// beginnen, ohne ? oder #")
|
||||
if not self.location_storage.strip():
|
||||
raise ValueError("Ortsname für das Lager fehlt")
|
||||
ids = [p.id for p in self.printers]
|
||||
|
||||
Reference in new issue
Block a user