Refactor handheld batch views per master4

This commit is contained in:
Lance Edgar 2018-02-04 11:09:35 -06:00
parent 0737faa034
commit 7cee515187

View file

@ -34,9 +34,8 @@ from rattail.util import OrderedDict
import formencode as fe
from webhelpers2.html import tags
from tailbone import forms
from tailbone.db import Session
from tailbone.views.batch import FileBatchMasterView3 as FileBatchMasterView
from tailbone.views.batch import FileBatchMasterView4 as FileBatchMasterView
ACTION_OPTIONS = OrderedDict([
@ -92,6 +91,10 @@ class HandheldBatchView(FileBatchMasterView):
'executed_by',
]
row_labels = {
'upc': "UPC",
}
row_grid_columns = [
'sequence',
'upc',
@ -103,6 +106,17 @@ class HandheldBatchView(FileBatchMasterView):
'status_code',
]
row_form_fields = [
'sequence',
'upc',
'brand_name',
'description',
'size',
'status_code',
'cases',
'units',
]
def configure_grid(self, g):
super(HandheldBatchView, self).configure_grid(g)
device_types = OrderedDict(sorted(self.enum.HANDHELD_DEVICE_TYPE.items(),
@ -153,33 +167,33 @@ class HandheldBatchView(FileBatchMasterView):
super(HandheldBatchView, self).configure_row_grid(g)
g.set_type('cases', 'quantity')
g.set_type('units', 'quantity')
g.set_label('upc', "UPC")
g.set_label('brand_name', "Brand")
def row_grid_extra_class(self, row, i):
if row.status_code == row.STATUS_PRODUCT_NOT_FOUND:
return 'warning'
def _preconfigure_row_fieldset(self, fs):
super(HandheldBatchView, self)._preconfigure_row_fieldset(fs)
fs.upc.set(readonly=True, label="UPC", renderer=forms.renderers.GPCFieldRenderer,
attrs={'link': lambda r: self.request.route_url('products.view', uuid=r.product_uuid)})
fs.brand_name.set(readonly=True)
fs.description.set(readonly=True)
fs.size.set(readonly=True)
def configure_row_form(self, f):
super(HandheldBatchView, self).configure_row_form(f)
def configure_row_fieldset(self, fs):
fs.configure(
include=[
fs.sequence,
fs.upc,
fs.brand_name,
fs.description,
fs.size,
fs.status_code,
fs.cases,
fs.units,
])
# readonly fields
f.set_readonly('upc')
f.set_readonly('brand_name')
f.set_readonly('description')
f.set_readonly('size')
# upc
f.set_renderer('upc', self.render_upc)
def render_upc(self, row, field):
upc = row.upc
if not upc:
return ""
text = upc.pretty()
if row.product_uuid:
url = self.request.route_url('products.view', uuid=row.product_uuid)
return tags.link_to(text, url)
return text
def get_exec_options_kwargs(self, **kwargs):
kwargs['ACTION_OPTIONS'] = list(ACTION_OPTIONS.iteritems())