feat: add schema, sync support for Log.is_movement
This commit is contained in:
parent
eb16990b0b
commit
0ac2485bff
8 changed files with 62 additions and 0 deletions
|
|
@ -0,0 +1,37 @@
|
|||
"""add Log.is_movement
|
||||
|
||||
Revision ID: 0771322957bd
|
||||
Revises: 12de43facb95
|
||||
Create Date: 2026-03-02 20:21:03.889847
|
||||
|
||||
"""
|
||||
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
import wuttjamaican.db.util
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = "0771322957bd"
|
||||
down_revision: Union[str, None] = "12de43facb95"
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
|
||||
# log
|
||||
op.add_column("log", sa.Column("is_movement", sa.Boolean(), nullable=True))
|
||||
op.add_column(
|
||||
"log_version",
|
||||
sa.Column("is_movement", sa.Boolean(), autoincrement=False, nullable=True),
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
|
||||
# log
|
||||
op.drop_column("log_version", "is_movement")
|
||||
op.drop_column("log", "is_movement")
|
||||
|
|
@ -120,6 +120,14 @@ class Log(model.Base):
|
|||
""",
|
||||
)
|
||||
|
||||
is_movement = sa.Column(
|
||||
sa.Boolean(),
|
||||
nullable=True,
|
||||
doc="""
|
||||
Whether the log represents a movement to new location.
|
||||
""",
|
||||
)
|
||||
|
||||
is_group_assignment = sa.Column(
|
||||
sa.Boolean(),
|
||||
nullable=True,
|
||||
|
|
@ -263,6 +271,7 @@ def add_log_proxies(subclass):
|
|||
Log.make_proxy(subclass, "log", "log_type")
|
||||
Log.make_proxy(subclass, "log", "message")
|
||||
Log.make_proxy(subclass, "log", "timestamp")
|
||||
Log.make_proxy(subclass, "log", "is_movement")
|
||||
Log.make_proxy(subclass, "log", "is_group_assignment")
|
||||
Log.make_proxy(subclass, "log", "status")
|
||||
Log.make_proxy(subclass, "log", "notes")
|
||||
|
|
|
|||
|
|
@ -459,6 +459,7 @@ class ToFarmOSLog(ToFarmOS):
|
|||
"uuid",
|
||||
"name",
|
||||
"timestamp",
|
||||
"is_movement",
|
||||
"is_group_assignment",
|
||||
"status",
|
||||
"notes",
|
||||
|
|
@ -518,6 +519,7 @@ class ToFarmOSLog(ToFarmOS):
|
|||
"uuid": UUID(log["id"]),
|
||||
"name": log["attributes"]["name"],
|
||||
"timestamp": self.normalize_datetime(log["attributes"]["timestamp"]),
|
||||
"is_movement": log["attributes"]["is_movement"],
|
||||
"is_group_assignment": log["attributes"]["is_group_assignment"],
|
||||
"status": log["attributes"]["status"],
|
||||
"notes": notes,
|
||||
|
|
@ -531,6 +533,8 @@ class ToFarmOSLog(ToFarmOS):
|
|||
attrs["name"] = source_data["name"]
|
||||
if "timestamp" in self.fields:
|
||||
attrs["timestamp"] = self.format_datetime(source_data["timestamp"])
|
||||
if "is_movement" in self.fields:
|
||||
attrs["is_movement"] = source_data["is_movement"]
|
||||
if "is_group_assignment" in self.fields:
|
||||
attrs["is_group_assignment"] = source_data["is_group_assignment"]
|
||||
if "status" in self.fields:
|
||||
|
|
|
|||
|
|
@ -361,6 +361,7 @@ class FromWuttaFarmLog(FromWuttaFarm):
|
|||
"uuid",
|
||||
"name",
|
||||
"timestamp",
|
||||
"is_movement",
|
||||
"is_group_assignment",
|
||||
"status",
|
||||
"notes",
|
||||
|
|
@ -371,6 +372,7 @@ class FromWuttaFarmLog(FromWuttaFarm):
|
|||
"uuid": log.farmos_uuid or self.app.make_true_uuid(),
|
||||
"name": log.message,
|
||||
"timestamp": log.timestamp,
|
||||
"is_movement": log.is_movement,
|
||||
"is_group_assignment": log.is_group_assignment,
|
||||
"status": log.status,
|
||||
"notes": log.notes,
|
||||
|
|
|
|||
|
|
@ -959,6 +959,7 @@ class LogImporterBase(FromFarmOS, ToWutta):
|
|||
"log_type",
|
||||
"message",
|
||||
"timestamp",
|
||||
"is_movement",
|
||||
"is_group_assignment",
|
||||
"notes",
|
||||
"status",
|
||||
|
|
|
|||
|
|
@ -279,6 +279,7 @@ class Normalizer(GenericHandler):
|
|||
"quantities": quantity_objects,
|
||||
"quantity_uuids": quantity_uuids,
|
||||
"is_group_assignment": log["attributes"]["is_group_assignment"],
|
||||
"is_movement": log["attributes"]["is_movement"],
|
||||
"quick": log["attributes"]["quick"],
|
||||
"status": log["attributes"]["status"],
|
||||
"notes": notes,
|
||||
|
|
|
|||
|
|
@ -94,6 +94,7 @@ class LogMasterView(FarmOSMasterView):
|
|||
"status",
|
||||
"log_type_name",
|
||||
"owners",
|
||||
"is_movement",
|
||||
"is_group_assignment",
|
||||
"quick",
|
||||
"drupal_id",
|
||||
|
|
@ -234,6 +235,9 @@ class LogMasterView(FarmOSMasterView):
|
|||
# quantities
|
||||
f.set_node("quantities", FarmOSQuantityRefs(self.request))
|
||||
|
||||
# is_movement
|
||||
f.set_node("is_movement", colander.Boolean())
|
||||
|
||||
# is_group_assignment
|
||||
f.set_node("is_group_assignment", colander.Boolean())
|
||||
|
||||
|
|
|
|||
|
|
@ -133,6 +133,7 @@ class LogMasterView(WuttaFarmMasterView):
|
|||
"status",
|
||||
"log_type",
|
||||
"owners",
|
||||
"is_movement",
|
||||
"is_group_assignment",
|
||||
"quick",
|
||||
"farmos_uuid",
|
||||
|
|
@ -312,6 +313,9 @@ class LogMasterView(WuttaFarmMasterView):
|
|||
# status
|
||||
f.set_node("status", WuttaDictEnum(self.request, enum.LOG_STATUS))
|
||||
|
||||
# is_movement
|
||||
f.set_node("is_movement", colander.Boolean())
|
||||
|
||||
# is_group_assignment
|
||||
f.set_node("is_group_assignment", colander.Boolean())
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue