feat: show related Quantity records when viewing a Unit

This commit is contained in:
Lance Edgar 2026-03-04 16:49:28 -06:00
parent 81fa22bbd8
commit a547188a90

View file

@ -24,7 +24,7 @@ Master view for Units
""" """
from wuttafarm.web.views import WuttaFarmMasterView from wuttafarm.web.views import WuttaFarmMasterView
from wuttafarm.db.model import Measure, Unit from wuttafarm.db.model import Measure, Unit, Quantity
class MeasureView(WuttaFarmMasterView): class MeasureView(WuttaFarmMasterView):
@ -104,6 +104,26 @@ class UnitView(WuttaFarmMasterView):
"farmos_uuid", "farmos_uuid",
] ]
has_rows = True
row_model_class = Quantity
rows_viewable = True
row_labels = {
"quantity_type_id": "Quantity Type ID",
"measure_id": "Measure ID",
}
row_grid_columns = [
"drupal_id",
"as_text",
"quantity_type",
"measure",
"value",
"label",
]
rows_sort_defaults = ("drupal_id", "desc")
def configure_grid(self, grid): def configure_grid(self, grid):
g = grid g = grid
super().configure_grid(g) super().configure_grid(g)
@ -131,6 +151,37 @@ class UnitView(WuttaFarmMasterView):
return buttons return buttons
def get_row_grid_data(self, unit):
model = self.app.model
session = self.Session()
return session.query(model.Quantity).filter(model.Quantity.units == unit)
def configure_row_grid(self, grid):
g = grid
super().configure_row_grid(g)
# drupal_id
g.set_label("drupal_id", "ID", column_only=True)
# as_text
g.set_renderer("as_text", self.render_as_text_for_grid)
g.set_link("as_text")
# value
g.set_renderer("value", self.render_value_for_grid)
def render_as_text_for_grid(self, quantity, field, value):
return quantity.render_as_text(self.config)
def render_value_for_grid(self, quantity, field, value):
value = quantity.value_numerator / quantity.value_denominator
return self.app.render_quantity(value)
def get_row_action_url_view(self, quantity, i):
return self.request.route_url(
f"quantities_{quantity.quantity_type_id}.view", uuid=quantity.uuid
)
def defaults(config, **kwargs): def defaults(config, **kwargs):
base = globals() base = globals()