diff --git a/src/wuttafarm/db/model/quantities.py b/src/wuttafarm/db/model/quantities.py index bcc2183..4030450 100644 --- a/src/wuttafarm/db/model/quantities.py +++ b/src/wuttafarm/db/model/quantities.py @@ -204,7 +204,12 @@ class QuantityMixin: @declared_attr def quantity(cls): - return orm.relationship(Quantity) + return orm.relationship( + Quantity, + single_parent=True, + cascade="all, delete-orphan", + cascade_backrefs=False, + ) def render_as_text(self, config=None): return self.quantity.render_as_text(config) diff --git a/src/wuttafarm/web/views/farmos/quantities.py b/src/wuttafarm/web/views/farmos/quantities.py index 97ec9f0..0cb318b 100644 --- a/src/wuttafarm/web/views/farmos/quantities.py +++ b/src/wuttafarm/web/views/farmos/quantities.py @@ -26,6 +26,7 @@ View for farmOS Quantity Types import datetime import colander +import requests from wuttaweb.forms.schema import WuttaDateTime from wuttaweb.forms.widgets import WuttaDateTimeWidget @@ -204,9 +205,15 @@ class QuantityMasterView(FarmOSMasterView): return qty["value"]["decimal"] def get_instance(self): - quantity = self.farmos_client.resource.get_id( - "quantity", self.farmos_quantity_type, self.request.matchdict["uuid"] - ) + # TODO: this pattern should be repeated for other views + try: + quantity = self.farmos_client.resource.get_id( + "quantity", self.farmos_quantity_type, self.request.matchdict["uuid"] + ) + except requests.HTTPError as exc: + if exc.response.status_code == 404: + raise self.notfound() + self.raw_json = quantity data = self.normalize_quantity(quantity["data"])