Refactor several "field grids" per Buefy theme
e.g. the Users field when viewing a Role, and Vendor Sources panel when viewing a Product
This commit is contained in:
parent
9fe1d4c596
commit
3ece3303db
9 changed files with 299 additions and 17 deletions
|
@ -1152,8 +1152,88 @@ class ProductView(MasterView):
|
|||
kwargs['costs_label_vendor'] = "Vendor"
|
||||
kwargs['costs_label_code'] = "Order Code"
|
||||
kwargs['costs_label_case_size'] = "Case Size"
|
||||
|
||||
if use_buefy:
|
||||
kwargs['vendor_sources'] = self.get_context_vendor_sources(product)
|
||||
kwargs['lookup_codes'] = self.get_context_lookup_codes(product)
|
||||
|
||||
return kwargs
|
||||
|
||||
def get_context_vendor_sources(self, product):
|
||||
app = self.get_rattail_app()
|
||||
route_prefix = self.get_route_prefix()
|
||||
|
||||
factory = self.get_grid_factory()
|
||||
g = factory(
|
||||
key='{}.vendor_sources'.format(route_prefix),
|
||||
data=[],
|
||||
columns=[
|
||||
'preferred',
|
||||
'vendor',
|
||||
'vendor_item_code',
|
||||
'case_size',
|
||||
'case_cost',
|
||||
'unit_cost',
|
||||
'status',
|
||||
],
|
||||
labels={
|
||||
'preferred': "Pref.",
|
||||
'vendor_item_code': "Order Code",
|
||||
},
|
||||
)
|
||||
|
||||
sources = []
|
||||
link_vendor = self.request.has_perm('vendors.view')
|
||||
for cost in product.costs:
|
||||
|
||||
source = {
|
||||
'uuid': cost.uuid,
|
||||
'preferred': "X" if cost.preference == 1 else None,
|
||||
'vendor_item_code': cost.code,
|
||||
'case_size': app.render_quantity(cost.case_size),
|
||||
'case_cost': app.render_currency(cost.case_cost),
|
||||
'unit_cost': app.render_currency(cost.unit_cost, scale=4),
|
||||
'status': "discontinued" if cost.discontinued else "available",
|
||||
}
|
||||
|
||||
text = six.text_type(cost.vendor)
|
||||
if link_vendor:
|
||||
url = self.request.route_url('vendors.view', uuid=cost.vendor.uuid)
|
||||
source['vendor'] = tags.link_to(text, url)
|
||||
else:
|
||||
source['vendor'] = text
|
||||
|
||||
sources.append(source)
|
||||
|
||||
return {'grid': g, 'data': sources}
|
||||
|
||||
def get_context_lookup_codes(self, product):
|
||||
route_prefix = self.get_route_prefix()
|
||||
|
||||
factory = self.get_grid_factory()
|
||||
g = factory(
|
||||
key='{}.lookup_codes'.format(route_prefix),
|
||||
data=[],
|
||||
columns=[
|
||||
'sequence',
|
||||
'code',
|
||||
],
|
||||
labels={
|
||||
'sequence': "Seq.",
|
||||
},
|
||||
)
|
||||
|
||||
lookup_codes = []
|
||||
for code in product._codes:
|
||||
|
||||
lookup_codes.append({
|
||||
'uuid': code.uuid,
|
||||
'sequence': code.ordinal,
|
||||
'code': code.code,
|
||||
})
|
||||
|
||||
return {'grid': g, 'data': lookup_codes}
|
||||
|
||||
def get_regular_price_history(self, product):
|
||||
"""
|
||||
Returns a sequence of "records" which corresponds to the given
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue