feat: auto-delete asset from farmOS if deleting via mirror app
This commit is contained in:
parent
38dad49bbd
commit
96ccf30e46
1 changed files with 23 additions and 3 deletions
|
|
@ -33,6 +33,7 @@ from wuttafarm.db.model import Asset, Log
|
||||||
from wuttafarm.web.forms.schema import AssetParentRefs
|
from wuttafarm.web.forms.schema import AssetParentRefs
|
||||||
from wuttafarm.web.forms.widgets import ImageWidget
|
from wuttafarm.web.forms.widgets import ImageWidget
|
||||||
from wuttafarm.util import get_log_type_enum
|
from wuttafarm.util import get_log_type_enum
|
||||||
|
from wuttafarm.web.util import get_farmos_client_for_user
|
||||||
|
|
||||||
|
|
||||||
def get_asset_type_enum(config):
|
def get_asset_type_enum(config):
|
||||||
|
|
@ -267,11 +268,30 @@ class AssetMasterView(WuttaFarmMasterView):
|
||||||
asset = super().objectify(form)
|
asset = super().objectify(form)
|
||||||
|
|
||||||
if self.creating:
|
if self.creating:
|
||||||
model_class = self.get_model_class()
|
asset.asset_type = self.get_asset_type()
|
||||||
asset.asset_type = model_class.__wutta_hint__["farmos_asset_type"]
|
|
||||||
|
|
||||||
return asset
|
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):
|
def get_farmos_url(self, asset):
|
||||||
return self.app.get_farmos_url(f"/asset/{asset.drupal_id}")
|
return self.app.get_farmos_url(f"/asset/{asset.drupal_id}")
|
||||||
|
|
||||||
|
|
@ -279,7 +299,7 @@ class AssetMasterView(WuttaFarmMasterView):
|
||||||
buttons = super().get_xref_buttons(asset)
|
buttons = super().get_xref_buttons(asset)
|
||||||
|
|
||||||
if asset.farmos_uuid:
|
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"
|
route = f"farmos_{asset_type}_assets.view"
|
||||||
url = self.request.route_url(route, uuid=asset.farmos_uuid)
|
url = self.request.route_url(route, uuid=asset.farmos_uuid)
|
||||||
buttons.append(
|
buttons.append(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue