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( farmos_uuid = sa.Column(
model.UUID(), model.UUID(),
nullable=True, nullable=True,
@ -257,6 +266,7 @@ def add_log_proxies(subclass):
Log.make_proxy(subclass, "log", "is_group_assignment") Log.make_proxy(subclass, "log", "is_group_assignment")
Log.make_proxy(subclass, "log", "status") Log.make_proxy(subclass, "log", "status")
Log.make_proxy(subclass, "log", "notes") Log.make_proxy(subclass, "log", "notes")
Log.make_proxy(subclass, "log", "quick")
Log.make_proxy(subclass, "log", "assets") Log.make_proxy(subclass, "log", "assets")
Log.make_proxy(subclass, "log", "groups") Log.make_proxy(subclass, "log", "groups")
Log.make_proxy(subclass, "log", "locations") Log.make_proxy(subclass, "log", "locations")

View file

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

View file

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