fix: cleanup grid views for All, Standard Quantities
This commit is contained in:
parent
b2a7184937
commit
1d5499686f
2 changed files with 98 additions and 8 deletions
|
|
@ -171,6 +171,7 @@ class QuantityMasterView(FarmOSMasterView):
|
|||
|
||||
# as_text
|
||||
g.set_renderer("as_text", self.render_as_text_for_grid)
|
||||
g.set_link("as_text")
|
||||
|
||||
# measure
|
||||
g.set_renderer("measure", self.render_measure_for_grid)
|
||||
|
|
@ -303,6 +304,7 @@ class StandardQuantityView(QuantityMasterView):
|
|||
url_prefix = "/farmOS/quantities/standard"
|
||||
|
||||
farmos_quantity_type = "standard"
|
||||
farmos_refurl_path = "/log-quantities/standard"
|
||||
|
||||
def get_xref_buttons(self, standard_quantity):
|
||||
model = self.app.model
|
||||
|
|
|
|||
|
|
@ -25,11 +25,14 @@ Master view for Quantities
|
|||
|
||||
from collections import OrderedDict
|
||||
|
||||
from webhelpers2.html import tags
|
||||
|
||||
from wuttaweb.db import Session
|
||||
|
||||
from wuttafarm.web.views import WuttaFarmMasterView
|
||||
from wuttafarm.db.model import QuantityType, Quantity, StandardQuantity
|
||||
from wuttafarm.web.forms.schema import UnitRef, LogRef
|
||||
from wuttafarm.util import get_log_type_enum
|
||||
|
||||
|
||||
def get_quantity_type_enum(config):
|
||||
|
|
@ -100,17 +103,28 @@ class QuantityMasterView(WuttaFarmMasterView):
|
|||
Base class for Quantity master views
|
||||
"""
|
||||
|
||||
farmos_entity_type = "quantity"
|
||||
|
||||
labels = {
|
||||
"log_id": "Log ID",
|
||||
}
|
||||
|
||||
grid_columns = [
|
||||
"drupal_id",
|
||||
"as_text",
|
||||
"quantity_type",
|
||||
"log_id",
|
||||
"log_status",
|
||||
"log_timestamp",
|
||||
"log_type",
|
||||
"log_name",
|
||||
"log_assets",
|
||||
"measure",
|
||||
"value",
|
||||
"units",
|
||||
"label",
|
||||
"quantity_type",
|
||||
]
|
||||
|
||||
sort_defaults = ("drupal_id", "desc")
|
||||
sort_defaults = ("log_timestamp", "desc")
|
||||
|
||||
form_fields = [
|
||||
"quantity_type",
|
||||
|
|
@ -129,10 +143,15 @@ class QuantityMasterView(WuttaFarmMasterView):
|
|||
model = self.app.model
|
||||
model_class = self.get_model_class()
|
||||
session = session or self.Session()
|
||||
|
||||
query = session.query(model_class)
|
||||
if model_class is not model.Quantity:
|
||||
query = query.join(model.Quantity)
|
||||
|
||||
query = query.join(model.Measure).join(model.Unit)
|
||||
|
||||
query = query.outerjoin(model.LogQuantity).outerjoin(model.Log)
|
||||
|
||||
return query
|
||||
|
||||
def configure_grid(self, grid):
|
||||
|
|
@ -140,14 +159,39 @@ class QuantityMasterView(WuttaFarmMasterView):
|
|||
super().configure_grid(g)
|
||||
model = self.app.model
|
||||
model_class = self.get_model_class()
|
||||
session = self.Session()
|
||||
|
||||
# drupal_id
|
||||
g.set_label("drupal_id", "ID", column_only=True)
|
||||
g.set_sorter("drupal_id", model.Quantity.drupal_id)
|
||||
|
||||
# as_text
|
||||
g.set_renderer("as_text", self.render_as_text_for_grid)
|
||||
g.set_link("as_text")
|
||||
# log_id
|
||||
g.set_renderer("log_id", self.render_log_id_for_grid)
|
||||
g.set_sorter("log_id", model.Log.drupal_id)
|
||||
|
||||
# log_status
|
||||
g.set_renderer("log_status", self.render_log_status_for_grid)
|
||||
g.set_sorter("log_status", model.Log.status)
|
||||
|
||||
# log_timestamp
|
||||
g.set_renderer("log_timestamp", self.render_log_timestamp_for_grid)
|
||||
g.set_sorter("log_timestamp", model.Log.timestamp)
|
||||
|
||||
# log_type
|
||||
self.log_type_enum = get_log_type_enum(self.config, session)
|
||||
g.set_renderer("log_type", self.render_log_type_for_grid)
|
||||
g.set_sorter("log_type", model.Log.log_type)
|
||||
|
||||
# log_name
|
||||
g.set_renderer("log_name", self.render_log_name_for_grid)
|
||||
g.set_sorter("log_name", model.Log.message)
|
||||
if not self.farmos_style_grid_links:
|
||||
g.set_link("log_name")
|
||||
|
||||
# log_assets
|
||||
g.set_renderer("log_assets", self.render_log_assets_for_grid)
|
||||
if not self.farmos_style_grid_links:
|
||||
g.set_link("log_assets")
|
||||
|
||||
# quantity_type
|
||||
if model_class is not model.Quantity:
|
||||
|
|
@ -177,8 +221,47 @@ class QuantityMasterView(WuttaFarmMasterView):
|
|||
|
||||
g.add_action("view", icon="eye", url=quantity_url)
|
||||
|
||||
def render_as_text_for_grid(self, quantity, field, value):
|
||||
return quantity.render_as_text(self.config)
|
||||
def render_log_id_for_grid(self, quantity, field, value):
|
||||
if log := quantity.log:
|
||||
return log.drupal_id
|
||||
return None
|
||||
|
||||
def render_log_status_for_grid(self, quantity, field, value):
|
||||
enum = self.app.enum
|
||||
if log := quantity.log:
|
||||
return enum.LOG_STATUS.get(log.status, log.status)
|
||||
return None
|
||||
|
||||
def render_log_timestamp_for_grid(self, quantity, field, value):
|
||||
if log := quantity.log:
|
||||
return self.app.render_date(log.timestamp)
|
||||
return None
|
||||
|
||||
def render_log_type_for_grid(self, quantity, field, value):
|
||||
if log := quantity.log:
|
||||
return self.log_type_enum.get(log.log_type, log.log_type)
|
||||
return None
|
||||
|
||||
def render_log_name_for_grid(self, quantity, field, value):
|
||||
if log := quantity.log:
|
||||
if self.farmos_style_grid_links:
|
||||
url = self.request.route_url(f"logs_{log.log_type}.view", uuid=log.uuid)
|
||||
return tags.link_to(log.message, url)
|
||||
return log.message
|
||||
return None
|
||||
|
||||
def render_log_assets_for_grid(self, quantity, field, value):
|
||||
if log := quantity.log:
|
||||
if self.farmos_style_grid_links:
|
||||
links = []
|
||||
for asset in log.assets:
|
||||
url = self.request.route_url(
|
||||
f"{asset.asset_type}_assets.view", uuid=asset.uuid
|
||||
)
|
||||
links.append(tags.link_to(str(asset), url))
|
||||
return ", ".join(links)
|
||||
return [str(a) for a in log.assets]
|
||||
return None
|
||||
|
||||
def render_value_for_grid(self, quantity, field, value):
|
||||
value = quantity.value_numerator / quantity.value_denominator
|
||||
|
|
@ -271,6 +354,8 @@ class AllQuantityView(QuantityMasterView):
|
|||
deletable = False
|
||||
model_is_versioned = False
|
||||
|
||||
farmos_refurl_path = "/log-quantities"
|
||||
|
||||
|
||||
class StandardQuantityView(QuantityMasterView):
|
||||
"""
|
||||
|
|
@ -281,6 +366,9 @@ class StandardQuantityView(QuantityMasterView):
|
|||
route_prefix = "quantities_standard"
|
||||
url_prefix = "/quantities/standard"
|
||||
|
||||
farmos_bundle = "standard"
|
||||
farmos_refurl_path = "/log-quantities/standard"
|
||||
|
||||
|
||||
def defaults(config, **kwargs):
|
||||
base = globals()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue