fix: add WuttaFarm -> farmOS export for Plant Assets
This commit is contained in:
parent
185cd86efb
commit
e7b493d7c9
3 changed files with 91 additions and 2 deletions
|
|
@ -333,6 +333,59 @@ class LandAssetImporter(ToFarmOSAsset):
|
||||||
return payload
|
return payload
|
||||||
|
|
||||||
|
|
||||||
|
class PlantAssetImporter(ToFarmOSAsset):
|
||||||
|
|
||||||
|
model_title = "PlantAsset"
|
||||||
|
farmos_asset_type = "plant"
|
||||||
|
|
||||||
|
supported_fields = [
|
||||||
|
"uuid",
|
||||||
|
"asset_name",
|
||||||
|
"plant_type_uuids",
|
||||||
|
"notes",
|
||||||
|
"archived",
|
||||||
|
]
|
||||||
|
|
||||||
|
def normalize_target_object(self, plant):
|
||||||
|
data = super().normalize_target_object(plant)
|
||||||
|
data.update(
|
||||||
|
{
|
||||||
|
"plant_type_uuids": [
|
||||||
|
UUID(p["id"]) for p in plant["relationships"]["plant_type"]["data"]
|
||||||
|
],
|
||||||
|
}
|
||||||
|
)
|
||||||
|
return data
|
||||||
|
|
||||||
|
def get_asset_payload(self, source_data):
|
||||||
|
payload = super().get_asset_payload(source_data)
|
||||||
|
|
||||||
|
attrs = {}
|
||||||
|
if "sex" in self.fields:
|
||||||
|
attrs["sex"] = source_data["sex"]
|
||||||
|
if "is_sterile" in self.fields:
|
||||||
|
attrs["is_sterile"] = source_data["is_sterile"]
|
||||||
|
if "birthdate" in self.fields:
|
||||||
|
attrs["birthdate"] = self.format_datetime(source_data["birthdate"])
|
||||||
|
|
||||||
|
rels = {}
|
||||||
|
if "plant_type_uuids" in self.fields:
|
||||||
|
rels["plant_type"] = {"data": []}
|
||||||
|
for uuid in source_data["plant_type_uuids"]:
|
||||||
|
rels["plant_type"]["data"].append(
|
||||||
|
{
|
||||||
|
"id": str(uuid),
|
||||||
|
"type": "taxonomy_term--plant_type",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
payload["attributes"].update(attrs)
|
||||||
|
if rels:
|
||||||
|
payload.setdefault("relationships", {}).update(rels)
|
||||||
|
|
||||||
|
return payload
|
||||||
|
|
||||||
|
|
||||||
class StructureAssetImporter(ToFarmOSAsset):
|
class StructureAssetImporter(ToFarmOSAsset):
|
||||||
|
|
||||||
model_title = "StructureAsset"
|
model_title = "StructureAsset"
|
||||||
|
|
|
||||||
|
|
@ -98,6 +98,7 @@ class FromWuttaFarmToFarmOS(FromWuttaFarmHandler, ToFarmOSHandler):
|
||||||
importers["AnimalType"] = AnimalTypeImporter
|
importers["AnimalType"] = AnimalTypeImporter
|
||||||
importers["AnimalAsset"] = AnimalAssetImporter
|
importers["AnimalAsset"] = AnimalAssetImporter
|
||||||
importers["GroupAsset"] = GroupAssetImporter
|
importers["GroupAsset"] = GroupAssetImporter
|
||||||
|
importers["PlantAsset"] = PlantAssetImporter
|
||||||
importers["ActivityLog"] = ActivityLogImporter
|
importers["ActivityLog"] = ActivityLogImporter
|
||||||
importers["HarvestLog"] = HarvestLogImporter
|
importers["HarvestLog"] = HarvestLogImporter
|
||||||
importers["MedicalLog"] = MedicalLogImporter
|
importers["MedicalLog"] = MedicalLogImporter
|
||||||
|
|
@ -239,6 +240,32 @@ class LandAssetImporter(FromWuttaFarm, farmos_importing.model.LandAssetImporter)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class PlantAssetImporter(FromWuttaFarm, farmos_importing.model.PlantAssetImporter):
|
||||||
|
"""
|
||||||
|
WuttaFarm → farmOS API exporter for Plant Assets
|
||||||
|
"""
|
||||||
|
|
||||||
|
source_model_class = model.PlantAsset
|
||||||
|
|
||||||
|
supported_fields = [
|
||||||
|
"uuid",
|
||||||
|
"asset_name",
|
||||||
|
"plant_type_uuids",
|
||||||
|
"notes",
|
||||||
|
"archived",
|
||||||
|
]
|
||||||
|
|
||||||
|
def normalize_source_object(self, plant):
|
||||||
|
return {
|
||||||
|
"uuid": plant.farmos_uuid or self.app.make_true_uuid(),
|
||||||
|
"asset_name": plant.asset_name,
|
||||||
|
"plant_type_uuids": [t.plant_type.farmos_uuid for t in plant._plant_types],
|
||||||
|
"notes": plant.notes,
|
||||||
|
"archived": plant.archived,
|
||||||
|
"_src_object": plant,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class StructureAssetImporter(
|
class StructureAssetImporter(
|
||||||
FromWuttaFarm, farmos_importing.model.StructureAssetImporter
|
FromWuttaFarm, farmos_importing.model.StructureAssetImporter
|
||||||
):
|
):
|
||||||
|
|
|
||||||
|
|
@ -183,8 +183,17 @@ class PlantAssetView(AssetMasterView):
|
||||||
plant = f.model_instance
|
plant = f.model_instance
|
||||||
|
|
||||||
# plant_types
|
# plant_types
|
||||||
f.set_node("plant_types", PlantTypeRefs(self.request))
|
if self.creating or self.editing:
|
||||||
f.set_default("plant_types", [t.plant_type_uuid for t in plant._plant_types])
|
f.remove("plant_types") # TODO: add support for this
|
||||||
|
else:
|
||||||
|
f.set_node("plant_types", PlantTypeRefs(self.request))
|
||||||
|
f.set_default(
|
||||||
|
"plant_types", [t.plant_type_uuid for t in plant._plant_types]
|
||||||
|
)
|
||||||
|
|
||||||
|
# season
|
||||||
|
if self.creating or self.editing:
|
||||||
|
f.remove("season") # TODO: add support for this
|
||||||
|
|
||||||
|
|
||||||
def defaults(config, **kwargs):
|
def defaults(config, **kwargs):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue