diff --git a/alembic/versions/0005_nullable_printer_id.py b/alembic/versions/0005_nullable_printer_id.py new file mode 100644 index 0000000..68c0ce9 --- /dev/null +++ b/alembic/versions/0005_nullable_printer_id.py @@ -0,0 +1,28 @@ +"""make print_jobs.printer_id nullable — printer is assigned at job start + +Revision ID: 0005 +Revises: 0004 +Create Date: 2026-06-18 + +""" +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +revision: str = "0005" +down_revision: Union[str, None] = "0004" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + op.alter_column("print_jobs", "printer_id", + existing_type=sa.Integer(), + nullable=True) + + +def downgrade() -> None: + op.alter_column("print_jobs", "printer_id", + existing_type=sa.Integer(), + nullable=False) diff --git a/app/models/print_job.py b/app/models/print_job.py index 4674eb6..d96958c 100644 --- a/app/models/print_job.py +++ b/app/models/print_job.py @@ -22,7 +22,7 @@ class PrintJob(Base): id: Mapped[int] = mapped_column(primary_key=True) job_uuid: Mapped[str | None] = mapped_column(String(36), unique=True, default=lambda: str(_uuid.uuid4())) - printer_id: Mapped[int] = mapped_column(ForeignKey("printers.id")) + printer_id: Mapped[int | None] = mapped_column(ForeignKey("printers.id")) filament_id: Mapped[int | None] = mapped_column(ForeignKey("filaments.id")) name: Mapped[str] = mapped_column(String(200)) customer: Mapped[str | None] = mapped_column(String(200)) diff --git a/app/routers/ui.py b/app/routers/ui.py index 2ef4c17..682bdf4 100644 --- a/app/routers/ui.py +++ b/app/routers/ui.py @@ -141,7 +141,7 @@ def jobs_page(request: Request, q: str = "", db: Session = Depends(get_db)): @router.post("/jobs") async def create_job( - printer_id: int = Form(...), + printer_id: str = Form(""), customer: str = Form(""), filament_id: str = Form(""), notes: str = Form(""), @@ -160,7 +160,7 @@ async def create_job( job_uuid=str(_uuid.uuid4()), name=Path(filename).stem if filename else (customer.strip() or "Unnamed"), file_name=filename, - printer_id=printer_id, + printer_id=int(printer_id) if printer_id else None, filament_id=int(filament_id) if filament_id else None, customer=customer.strip() or None, notes=notes.strip() or None, diff --git a/app/templates/jobs.html b/app/templates/jobs.html index 7af363a..05efdf5 100644 --- a/app/templates/jobs.html +++ b/app/templates/jobs.html @@ -85,9 +85,9 @@