feat: add schema, import support for Log.quick

This commit is contained in:
Lance Edgar 2026-03-02 18:47:27 -06:00
parent 32d23a7073
commit 547cc6e4ae
4 changed files with 53 additions and 0 deletions

View file

@ -0,0 +1,37 @@
"""add Log.quick
Revision ID: 85d4851e8292
Revises: d459db991404
Create Date: 2026-03-02 18:42:56.070281
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
import wuttjamaican.db.util
# revision identifiers, used by Alembic.
revision: str = "85d4851e8292"
down_revision: Union[str, None] = "d459db991404"
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("quick", sa.String(length=20), nullable=True))
op.add_column(
"log_version",
sa.Column("quick", sa.String(length=20), autoincrement=False, nullable=True),
)
def downgrade() -> None:
# log
op.drop_column("log_version", "quick")
op.drop_column("log", "quick")

View file

@ -144,6 +144,15 @@ class Log(model.Base):
""",
)
quick = sa.Column(
sa.String(length=20),
nullable=True,
doc="""
Identifier of quick form used to create the log, if
applicable.
""",
)
farmos_uuid = sa.Column(
model.UUID(),
nullable=True,
@ -257,6 +266,7 @@ def add_log_proxies(subclass):
Log.make_proxy(subclass, "log", "is_group_assignment")
Log.make_proxy(subclass, "log", "status")
Log.make_proxy(subclass, "log", "notes")
Log.make_proxy(subclass, "log", "quick")
Log.make_proxy(subclass, "log", "assets")
Log.make_proxy(subclass, "log", "groups")
Log.make_proxy(subclass, "log", "locations")

View file

@ -462,6 +462,7 @@ class ToFarmOSLog(ToFarmOS):
"is_group_assignment",
"status",
"notes",
"quick",
]
def get_target_objects(self, **kwargs):
@ -520,6 +521,7 @@ class ToFarmOSLog(ToFarmOS):
"is_group_assignment": log["attributes"]["is_group_assignment"],
"status": log["attributes"]["status"],
"notes": notes,
"quick": log["attributes"]["quick"],
}
def get_log_payload(self, source_data):
@ -535,6 +537,8 @@ class ToFarmOSLog(ToFarmOS):
attrs["status"] = source_data["status"]
if "notes" in self.fields:
attrs["notes"] = {"value": source_data["notes"]}
if "quick" in self.fields:
attrs["quick"] = {"value": source_data["quick"]}
payload = {"attributes": attrs}

View file

@ -970,6 +970,7 @@ class LogImporterBase(FromFarmOS, ToWutta):
"is_group_assignment",
"notes",
"status",
"quick",
]
)
return fields
@ -1000,6 +1001,7 @@ class LogImporterBase(FromFarmOS, ToWutta):
data["farmos_uuid"] = UUID(data.pop("uuid"))
data["message"] = data.pop("name")
data["timestamp"] = self.app.make_utc(data["timestamp"])
data["quick"] = ", ".join(data["quick"]) if data["quick"] else None
# TODO
data["log_type"] = self.get_farmos_log_type()