diff --git a/src/wuttafarm/db/alembic/versions/c30a725b54f9_allow_null_for_quantity_measure_id.py b/src/wuttafarm/db/alembic/versions/c30a725b54f9_allow_null_for_quantity_measure_id.py new file mode 100644 index 0000000..2c5952d --- /dev/null +++ b/src/wuttafarm/db/alembic/versions/c30a725b54f9_allow_null_for_quantity_measure_id.py @@ -0,0 +1,36 @@ +"""allow null for quantity.measure_id + +Revision ID: c30a725b54f9 +Revises: a240a1449de9 +Create Date: 2026-05-30 22:14:21.056993 + +""" + +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa +import wuttjamaican.db.util + + +# revision identifiers, used by Alembic. +revision: str = "c30a725b54f9" +down_revision: Union[str, None] = "a240a1449de9" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + + # quantity + op.alter_column( + "quantity", "measure_id", existing_type=sa.VARCHAR(length=20), nullable=True + ) + + +def downgrade() -> None: + + # quantity + op.alter_column( + "quantity", "measure_id", existing_type=sa.VARCHAR(length=20), nullable=False + ) diff --git a/src/wuttafarm/db/model/quantities.py b/src/wuttafarm/db/model/quantities.py index 4fa92af..c04f85b 100644 --- a/src/wuttafarm/db/model/quantities.py +++ b/src/wuttafarm/db/model/quantities.py @@ -109,7 +109,7 @@ class Quantity(model.Base): measure_id = sa.Column( sa.String(length=20), sa.ForeignKey("measure.drupal_id"), - nullable=False, + nullable=True, doc=""" Measure for the quantity. """, @@ -192,7 +192,12 @@ class Quantity(model.Base): app = config.get_app() value = app.render_quantity(value) units = str(self.units or "") - return f"( {measure} ) {value} {units}" + + if measure: + return f"( {measure} ) {value} {units}" + + label = self.label or "" + return f"{label} {value} {units}" def __str__(self): return self.render_as_text() diff --git a/src/wuttafarm/web/views/quantities.py b/src/wuttafarm/web/views/quantities.py index 9a91941..05f624b 100644 --- a/src/wuttafarm/web/views/quantities.py +++ b/src/wuttafarm/web/views/quantities.py @@ -298,7 +298,8 @@ class QuantityMasterView(WuttaFarmMasterView): f.remove("measure") else: f.set_readonly("measure") - f.set_default("measure", quantity.measure.name) + if quantity.measure: + f.set_default("measure", quantity.measure.name) # value if self.creating: