feat: show related Quantity records when viewing a Unit
This commit is contained in:
parent
81fa22bbd8
commit
a547188a90
1 changed files with 52 additions and 1 deletions
|
|
@ -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()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue