feat: add sync support for MedicalLog.vet
This commit is contained in:
parent
7d2ae48067
commit
d07f3ed716
8 changed files with 145 additions and 1 deletions
|
|
@ -0,0 +1,37 @@
|
|||
"""add MedicalLog.vet
|
||||
|
||||
Revision ID: d459db991404
|
||||
Revises: 9e875e5cbdc1
|
||||
Create Date: 2026-02-28 22:17:57.001134
|
||||
|
||||
"""
|
||||
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
import wuttjamaican.db.util
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = "d459db991404"
|
||||
down_revision: Union[str, None] = "9e875e5cbdc1"
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
|
||||
# log_medical
|
||||
op.add_column("log_medical", sa.Column("vet", sa.String(length=100), nullable=True))
|
||||
op.add_column(
|
||||
"log_medical_version",
|
||||
sa.Column("vet", sa.String(length=100), autoincrement=False, nullable=True),
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
|
||||
# log_medical
|
||||
op.drop_column("log_medical_version", "vet")
|
||||
op.drop_column("log_medical", "vet")
|
||||
|
|
@ -23,6 +23,8 @@
|
|||
Model definition for Medical Logs
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
from wuttjamaican.db import model
|
||||
|
||||
from wuttafarm.db.model.log import LogMixin, add_log_proxies
|
||||
|
|
@ -41,5 +43,13 @@ class MedicalLog(LogMixin, model.Base):
|
|||
"farmos_log_type": "medical",
|
||||
}
|
||||
|
||||
vet = sa.Column(
|
||||
sa.String(length=100),
|
||||
nullable=True,
|
||||
doc="""
|
||||
Name of the veterinarian, if applicable.
|
||||
""",
|
||||
)
|
||||
|
||||
|
||||
add_log_proxies(MedicalLog)
|
||||
|
|
|
|||
|
|
@ -558,6 +558,32 @@ class MedicalLogImporter(ToFarmOSLog):
|
|||
model_title = "MedicalLog"
|
||||
farmos_log_type = "medical"
|
||||
|
||||
def get_supported_fields(self):
|
||||
fields = list(super().get_supported_fields())
|
||||
fields.extend(
|
||||
[
|
||||
"vet",
|
||||
]
|
||||
)
|
||||
return fields
|
||||
|
||||
def normalize_target_object(self, log):
|
||||
data = super().normalize_target_object(log)
|
||||
data.update(
|
||||
{
|
||||
"vet": log["attributes"]["vet"],
|
||||
}
|
||||
)
|
||||
return data
|
||||
|
||||
def get_log_payload(self, source_data):
|
||||
payload = super().get_log_payload(source_data)
|
||||
|
||||
if "vet" in self.fields:
|
||||
payload["attributes"]["vet"] = source_data["vet"]
|
||||
|
||||
return payload
|
||||
|
||||
|
||||
class ObservationLogImporter(ToFarmOSLog):
|
||||
|
||||
|
|
|
|||
|
|
@ -401,6 +401,24 @@ class MedicalLogImporter(FromWuttaFarmLog, farmos_importing.model.MedicalLogImpo
|
|||
|
||||
source_model_class = model.MedicalLog
|
||||
|
||||
def get_supported_fields(self):
|
||||
fields = list(super().get_supported_fields())
|
||||
fields.extend(
|
||||
[
|
||||
"vet",
|
||||
]
|
||||
)
|
||||
return fields
|
||||
|
||||
def normalize_source_object(self, log):
|
||||
data = super().normalize_source_object(log)
|
||||
data.update(
|
||||
{
|
||||
"vet": log.vet,
|
||||
}
|
||||
)
|
||||
return data
|
||||
|
||||
|
||||
class ObservationLogImporter(
|
||||
FromWuttaFarmLog, farmos_importing.model.ObservationLogImporter
|
||||
|
|
|
|||
|
|
@ -1211,6 +1211,17 @@ class MedicalLogImporter(LogImporterBase):
|
|||
|
||||
model_class = model.MedicalLog
|
||||
|
||||
def get_simple_fields(self):
|
||||
""" """
|
||||
fields = list(super().get_simple_fields())
|
||||
# nb. must explicitly declare proxy fields
|
||||
fields.extend(
|
||||
[
|
||||
"vet",
|
||||
]
|
||||
)
|
||||
return fields
|
||||
|
||||
|
||||
class ObservationLogImporter(LogImporterBase):
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -252,4 +252,6 @@ class Normalizer(GenericHandler):
|
|||
"location_uuids": location_uuids,
|
||||
"owners": owner_objects,
|
||||
"owner_uuids": owner_uuids,
|
||||
# TODO: should we do this here or make caller do it?
|
||||
"vet": log["attributes"].get("vet"),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ View for farmOS Medical Logs
|
|||
"""
|
||||
|
||||
from wuttafarm.web.views.farmos.logs import LogMasterView
|
||||
from wuttafarm.web.grids import SimpleSorter, StringFilter
|
||||
|
||||
|
||||
class MedicalLogView(LogMasterView):
|
||||
|
|
@ -41,6 +42,35 @@ class MedicalLogView(LogMasterView):
|
|||
farmos_log_type = "medical"
|
||||
farmos_refurl_path = "/logs/medical"
|
||||
|
||||
labels = {
|
||||
"vet": "Veterinarian",
|
||||
}
|
||||
|
||||
grid_columns = [
|
||||
"status",
|
||||
"drupal_id",
|
||||
"timestamp",
|
||||
"name",
|
||||
"assets",
|
||||
"vet",
|
||||
"owners",
|
||||
]
|
||||
|
||||
def configure_grid(self, grid):
|
||||
g = grid
|
||||
super().configure_grid(g)
|
||||
|
||||
# vet
|
||||
g.set_sorter("vet", SimpleSorter("vet"))
|
||||
g.set_filter("vet", StringFilter)
|
||||
|
||||
def configure_form(self, form):
|
||||
f = form
|
||||
super().configure_form(f)
|
||||
|
||||
# vet
|
||||
f.fields.insert_after("timestamp", "vet")
|
||||
|
||||
|
||||
def defaults(config, **kwargs):
|
||||
base = globals()
|
||||
|
|
|
|||
|
|
@ -39,16 +39,26 @@ class MedicalLogView(LogMasterView):
|
|||
farmos_bundle = "medical"
|
||||
farmos_refurl_path = "/logs/medical"
|
||||
|
||||
labels = {
|
||||
"vet": "Veterinarian",
|
||||
}
|
||||
|
||||
grid_columns = [
|
||||
"status",
|
||||
"drupal_id",
|
||||
"timestamp",
|
||||
"message",
|
||||
"assets",
|
||||
"veterinarian",
|
||||
"vet",
|
||||
"owners",
|
||||
]
|
||||
|
||||
def configure_form(self, f):
|
||||
super().configure_form(f)
|
||||
|
||||
# vet
|
||||
f.fields.insert_after("timestamp", "vet")
|
||||
|
||||
|
||||
def defaults(config, **kwargs):
|
||||
base = globals()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue