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
|
||||
|
||||
|
||||
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):
|
||||
|
||||
model_title = "StructureAsset"
|
||||
|
|
|
|||
|
|
@ -98,6 +98,7 @@ class FromWuttaFarmToFarmOS(FromWuttaFarmHandler, ToFarmOSHandler):
|
|||
importers["AnimalType"] = AnimalTypeImporter
|
||||
importers["AnimalAsset"] = AnimalAssetImporter
|
||||
importers["GroupAsset"] = GroupAssetImporter
|
||||
importers["PlantAsset"] = PlantAssetImporter
|
||||
importers["ActivityLog"] = ActivityLogImporter
|
||||
importers["HarvestLog"] = HarvestLogImporter
|
||||
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(
|
||||
FromWuttaFarm, farmos_importing.model.StructureAssetImporter
|
||||
):
|
||||
|
|
|
|||
|
|
@ -183,8 +183,17 @@ class PlantAssetView(AssetMasterView):
|
|||
plant = f.model_instance
|
||||
|
||||
# plant_types
|
||||
if self.creating or self.editing:
|
||||
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])
|
||||
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):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue