Add MasterView.render_product(), fix edit for pricing batch row

This commit is contained in:
Lance Edgar 2018-10-23 17:20:47 -05:00
parent b9da7e1b12
commit 2bd107056c
7 changed files with 30 additions and 35 deletions

View file

@ -595,6 +595,9 @@ class BatchMasterView(MasterView):
f.set_readonly('status_code')
f.set_label('status_code', "Status")
# status text
f.set_readonly('status_text')
def configure_mobile_row_form(self, f):
super(BatchMasterView, self).configure_mobile_row_form(f)

View file

@ -138,6 +138,19 @@ class PricingBatchView(BatchMasterView):
def configure_row_form(self, f):
super(PricingBatchView, self).configure_row_form(f)
# readonly fields
f.set_readonly('product')
f.set_readonly('upc')
f.set_readonly('brand_name')
f.set_readonly('description')
f.set_readonly('size')
f.set_readonly('department_number')
f.set_readonly('department_name')
f.set_readonly('vendor')
# product
f.set_renderer('product', self.render_product)
# currency fields
f.set_type('old_price', 'currency')
f.set_type('new_price', 'currency')

View file

@ -28,11 +28,14 @@ from __future__ import unicode_literals, absolute_import
import datetime
import six
from sqlalchemy import orm
from rattail.db import model
from rattail.time import localtime
from webhelpers2.html import tags
from tailbone.views import MasterView
from tailbone.util import raw_datetime
@ -166,14 +169,6 @@ class CustomerOrderItemsView(MasterView):
url = self.request.route_url('custorders.view', uuid=order.uuid)
return tags.link_to(text, url)
def render_product(self, order, field):
product = order.product
if not product:
return ""
text = six.text_type(product)
url = self.request.route_url('products.view', uuid=product.uuid)
return tags.link_to(text, url)
def get_row_data(self, item):
return self.Session.query(model.CustomerOrderItemEvent)\
.filter(model.CustomerOrderItemEvent.item == item)\

View file

@ -731,6 +731,14 @@ class MasterView(View):
return obj.upc.pretty() if obj.upc else ''
return getattr(obj, product_key)
def render_product(self, obj, field):
product = getattr(obj, field)
if not product:
return ""
text = six.text_type(product)
url = self.request.route_url('products.view', uuid=product.uuid)
return tags.link_to(text, url)
def before_create_flush(self, obj, form):
pass

View file

@ -318,15 +318,7 @@ class PurchaseView(MasterView):
f.set_renderer('department', self.render_row_department)
# product
f.set_renderer('product', self.render_row_product)
def render_row_product(self, row, field):
product = row.product
if not product:
return ""
text = six.text_type(product)
url = self.request.route_url('products.view', uuid=product.uuid)
return tags.link_to(text, url)
f.set_renderer('product', self.render_product)
def render_row_department(self, row, field):
return "{} {}".format(row.department_number, row.department_name)

View file

@ -692,7 +692,7 @@ class PurchasingBatchView(BatchMasterView):
f.set_readonly('upc')
f.set_readonly('item_id')
f.set_readonly('product')
f.set_renderer('product', self.render_row_product)
f.set_renderer('product', self.render_product)
# TODO: what's up with this again?
# f.remove_fields('po_total',
@ -704,18 +704,10 @@ class PurchasingBatchView(BatchMasterView):
f.remove_fields('brand_name',
'description',
'size')
f.set_renderer('product', self.render_row_product)
f.set_renderer('product', self.render_product)
else:
f.remove_field('product')
def render_row_product(self, row, field):
product = row.product
if not product:
return ""
text = six.text_type(product)
url = self.request.route_url('products.view', uuid=product.uuid)
return tags.link_to(text, url)
def configure_mobile_row_form(self, f):
super(PurchasingBatchView, self).configure_mobile_row_form(f)
# row = f.model_instance

View file

@ -198,14 +198,6 @@ class VendorCatalogsView(FileBatchMasterView):
super(VendorCatalogsView, self).configure_row_form(f)
f.set_renderer('product', self.render_product)
def render_product(self, row, field):
product = row.product
if not product:
return ""
text = six.text_type(product)
url = self.request.route_url('products.view', uuid=product.uuid)
return tags.link_to(text, url)
def template_kwargs_create(self, **kwargs):
parsers = self.get_parsers()
for parser in parsers: