From 96ccf30e46f14af6780a0a58935b24e4106bb80b Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Thu, 26 Feb 2026 17:36:37 -0600 Subject: [PATCH] feat: auto-delete asset from farmOS if deleting via mirror app --- src/wuttafarm/web/views/assets.py | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/wuttafarm/web/views/assets.py b/src/wuttafarm/web/views/assets.py index 70534db..2dade09 100644 --- a/src/wuttafarm/web/views/assets.py +++ b/src/wuttafarm/web/views/assets.py @@ -33,6 +33,7 @@ from wuttafarm.db.model import Asset, Log from wuttafarm.web.forms.schema import AssetParentRefs from wuttafarm.web.forms.widgets import ImageWidget from wuttafarm.util import get_log_type_enum +from wuttafarm.web.util import get_farmos_client_for_user def get_asset_type_enum(config): @@ -267,11 +268,30 @@ class AssetMasterView(WuttaFarmMasterView): asset = super().objectify(form) if self.creating: - model_class = self.get_model_class() - asset.asset_type = model_class.__wutta_hint__["farmos_asset_type"] + asset.asset_type = self.get_asset_type() return asset + def get_asset_type(self): + model_class = self.get_model_class() + return model_class.__wutta_hint__["farmos_asset_type"] + + def delete_instance(self, obj): + + # save farmOS UUID if we need it + farmos_uuid = None + if self.app.is_farmos_mirror() and hasattr(obj, "farmos_uuid"): + farmos_uuid = obj.farmos_uuid + + # delete per usual + super().delete_instance(obj) + + # maybe delete from farmOS also + if farmos_uuid: + client = get_farmos_client_for_user(self.request) + asset_type = self.get_asset_type() + client.asset.delete(asset_type, farmos_uuid) + def get_farmos_url(self, asset): return self.app.get_farmos_url(f"/asset/{asset.drupal_id}") @@ -279,7 +299,7 @@ class AssetMasterView(WuttaFarmMasterView): buttons = super().get_xref_buttons(asset) if asset.farmos_uuid: - asset_type = self.get_model_class().__wutta_hint__["farmos_asset_type"] + asset_type = self.get_asset_type() route = f"farmos_{asset_type}_assets.view" url = self.request.route_url(route, uuid=asset.farmos_uuid) buttons.append(