Add new "v3" grids, refactor all views to use them
or at least that's the idea..hopefully we caught them all
This commit is contained in:
parent
f244c2934b
commit
5b1ae27a10
71 changed files with 2679 additions and 2030 deletions
66
tailbone/views/vendors/catalogs.py
vendored
66
tailbone/views/vendors/catalogs.py
vendored
|
@ -35,7 +35,7 @@ import formalchemy
|
|||
|
||||
from tailbone import forms
|
||||
from tailbone.db import Session
|
||||
from tailbone.views.batch import FileBatchMasterView
|
||||
from tailbone.views.batch import FileBatchMasterView2 as FileBatchMasterView
|
||||
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
@ -52,28 +52,40 @@ class VendorCatalogsView(FileBatchMasterView):
|
|||
editable = False
|
||||
rows_bulk_deletable = True
|
||||
|
||||
grid_columns = [
|
||||
'created',
|
||||
'created_by',
|
||||
'vendor',
|
||||
'effective',
|
||||
'filename',
|
||||
'executed',
|
||||
]
|
||||
|
||||
row_grid_columns = [
|
||||
'sequence',
|
||||
'upc',
|
||||
'brand_name',
|
||||
'description',
|
||||
'size',
|
||||
'vendor_code',
|
||||
'old_unit_cost',
|
||||
'unit_cost',
|
||||
'unit_cost_diff',
|
||||
'status_code',
|
||||
]
|
||||
|
||||
def get_parsers(self):
|
||||
if not hasattr(self, 'parsers'):
|
||||
self.parsers = sorted(iter_catalog_parsers(), key=lambda p: p.display)
|
||||
return self.parsers
|
||||
|
||||
def configure_grid(self, g):
|
||||
super(VendorCatalogsView, self).configure_grid(g)
|
||||
g.joiners['vendor'] = lambda q: q.join(model.Vendor)
|
||||
g.filters['vendor'] = g.make_filter('vendor', model.Vendor.name,
|
||||
default_active=True, default_verb='contains')
|
||||
g.sorters['vendor'] = g.make_sorter(model.Vendor.name)
|
||||
|
||||
g.configure(
|
||||
include=[
|
||||
g.created,
|
||||
g.created_by,
|
||||
g.vendor,
|
||||
g.effective,
|
||||
g.filename,
|
||||
g.executed,
|
||||
],
|
||||
readonly=True)
|
||||
|
||||
def get_instance_title(self, batch):
|
||||
return unicode(batch.vendor)
|
||||
|
||||
|
@ -115,28 +127,18 @@ class VendorCatalogsView(FileBatchMasterView):
|
|||
return kwargs
|
||||
|
||||
def configure_row_grid(self, g):
|
||||
g.configure(
|
||||
include=[
|
||||
g.sequence,
|
||||
g.upc.label("UPC"),
|
||||
g.brand_name.label("Brand"),
|
||||
g.description,
|
||||
g.size,
|
||||
g.vendor_code,
|
||||
g.old_unit_cost.label("Old Cost"),
|
||||
g.unit_cost.label("New Cost"),
|
||||
g.unit_cost_diff.label("Diff."),
|
||||
g.status_code,
|
||||
],
|
||||
readonly=True)
|
||||
super(VendorCatalogsView, self).configure_row_grid(g)
|
||||
g.set_label('upc', "UPC")
|
||||
g.set_label('brand_name', "Brand")
|
||||
g.set_label('old_unit_cost', "Old Cost")
|
||||
g.set_label('unit_cost', "New Cost")
|
||||
g.set_label('unit_cost_diff', "Diff.")
|
||||
|
||||
def row_grid_row_attrs(self, row, i):
|
||||
attrs = {}
|
||||
if row.status_code in (row.STATUS_NEW_COST, row.STATUS_UPDATE_COST):
|
||||
attrs['class_'] = 'notice'
|
||||
def row_grid_extra_class(self, row, i):
|
||||
if row.status_code == row.STATUS_PRODUCT_NOT_FOUND:
|
||||
attrs['class_'] = 'warning'
|
||||
return attrs
|
||||
return 'warning'
|
||||
if row.status_code in (row.STATUS_NEW_COST, row.STATUS_UPDATE_COST):
|
||||
return 'notice'
|
||||
|
||||
def template_kwargs_create(self, **kwargs):
|
||||
parsers = self.get_parsers()
|
||||
|
|
26
tailbone/views/vendors/core.py
vendored
26
tailbone/views/vendors/core.py
vendored
|
@ -30,7 +30,7 @@ from rattail.db import model
|
|||
|
||||
from tailbone import forms
|
||||
from tailbone.db import Session
|
||||
from tailbone.views import MasterView, AutocompleteView
|
||||
from tailbone.views import MasterView2 as MasterView, AutocompleteView
|
||||
|
||||
|
||||
class VendorsView(MasterView):
|
||||
|
@ -40,22 +40,24 @@ class VendorsView(MasterView):
|
|||
model_class = model.Vendor
|
||||
has_versions = True
|
||||
|
||||
grid_columns = [
|
||||
'id',
|
||||
'name',
|
||||
'phone',
|
||||
'email',
|
||||
'contact',
|
||||
]
|
||||
|
||||
def configure_grid(self, g):
|
||||
super(VendorsView, self).configure_grid(g)
|
||||
|
||||
g.filters['name'].default_active = True
|
||||
g.filters['name'].default_verb = 'contains'
|
||||
g.filters['id'].label = "ID"
|
||||
g.default_sortkey = 'name'
|
||||
|
||||
g.append(forms.AssociationProxyField('contact'))
|
||||
g.configure(
|
||||
include=[
|
||||
g.id.label("ID"),
|
||||
g.name,
|
||||
g.phone.label("Phone Number"),
|
||||
g.email.label("Email Address"),
|
||||
g.contact,
|
||||
],
|
||||
readonly=True)
|
||||
g.set_label('id', "ID")
|
||||
g.set_label('phone', "Phone Number")
|
||||
g.set_label('email', "Email Address")
|
||||
|
||||
def configure_fieldset(self, fs):
|
||||
fs.append(forms.AssociationProxyField('contact'))
|
||||
|
|
70
tailbone/views/vendors/invoices.py
vendored
70
tailbone/views/vendors/invoices.py
vendored
|
@ -1,4 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# -*- coding: utf-8; -*-
|
||||
################################################################################
|
||||
#
|
||||
# Rattail -- Retail Software Framework
|
||||
|
@ -32,7 +32,7 @@ from rattail.vendors.invoices import iter_invoice_parsers, require_invoice_parse
|
|||
import formalchemy
|
||||
|
||||
from tailbone.db import Session
|
||||
from tailbone.views.batch import FileBatchMasterView
|
||||
from tailbone.views.batch import FileBatchMasterView2 as FileBatchMasterView
|
||||
|
||||
|
||||
class VendorInvoicesView(FileBatchMasterView):
|
||||
|
@ -44,23 +44,36 @@ class VendorInvoicesView(FileBatchMasterView):
|
|||
default_handler_spec = 'rattail.batch.vendorinvoice:VendorInvoiceHandler'
|
||||
url_prefix = '/vendors/invoices'
|
||||
|
||||
grid_columns = [
|
||||
'created',
|
||||
'created_by',
|
||||
'vendor',
|
||||
'filename',
|
||||
'executed',
|
||||
]
|
||||
|
||||
row_grid_columns = [
|
||||
'sequence',
|
||||
'upc',
|
||||
'brand_name',
|
||||
'description',
|
||||
'size',
|
||||
'vendor_code',
|
||||
'shipped_cases',
|
||||
'shipped_units',
|
||||
'unit_cost',
|
||||
'status_code',
|
||||
]
|
||||
|
||||
def get_instance_title(self, batch):
|
||||
return unicode(batch.vendor)
|
||||
|
||||
def configure_grid(self, g):
|
||||
super(VendorInvoicesView, self).configure_grid(g)
|
||||
g.joiners['vendor'] = lambda q: q.join(model.Vendor)
|
||||
g.filters['vendor'] = g.make_filter('vendor', model.Vendor.name,
|
||||
default_active=True, default_verb='contains')
|
||||
g.sorters['vendor'] = g.make_sorter(model.Vendor.name)
|
||||
g.configure(
|
||||
include=[
|
||||
g.created,
|
||||
g.created_by,
|
||||
g.vendor,
|
||||
g.filename,
|
||||
g.executed,
|
||||
],
|
||||
readonly=True)
|
||||
|
||||
def configure_fieldset(self, fs):
|
||||
fs.purchase_order_number.set(label=self.handler.po_number_title)
|
||||
|
@ -123,34 +136,21 @@ class VendorInvoicesView(FileBatchMasterView):
|
|||
return True
|
||||
|
||||
def configure_row_grid(self, g):
|
||||
g.filters['upc'].label = "UPC"
|
||||
g.filters['brand_name'].label = "Brand"
|
||||
g.configure(
|
||||
include=[
|
||||
g.sequence,
|
||||
g.upc.label("UPC"),
|
||||
g.brand_name.label("Brand"),
|
||||
g.description,
|
||||
g.size,
|
||||
g.vendor_code,
|
||||
g.shipped_cases.label("Cases"),
|
||||
g.shipped_units.label("Units"),
|
||||
g.unit_cost,
|
||||
g.status_code,
|
||||
],
|
||||
readonly=True)
|
||||
super(VendorInvoicesView, self).configure_row_grid(g)
|
||||
g.set_label('upc', "UPC")
|
||||
g.set_label('brand_name', "Brand")
|
||||
g.set_label('shipped_cases', "Cases")
|
||||
g.set_label('shipped_units', "Units")
|
||||
|
||||
def row_grid_row_attrs(self, row, i):
|
||||
attrs = {}
|
||||
if row.status_code in (row.STATUS_NOT_IN_PURCHASE,
|
||||
row.STATUS_NOT_IN_INVOICE,
|
||||
row.STATUS_DIFFERS_FROM_PURCHASE):
|
||||
attrs['class_'] = 'notice'
|
||||
def row_grid_extra_class(self, row, i):
|
||||
if row.status_code in (row.STATUS_NOT_IN_DB,
|
||||
row.STATUS_COST_NOT_IN_DB,
|
||||
row.STATUS_NO_CASE_QUANTITY):
|
||||
attrs['class_'] = 'warning'
|
||||
return attrs
|
||||
return 'warning'
|
||||
if row.status_code in (row.STATUS_NOT_IN_PURCHASE,
|
||||
row.STATUS_NOT_IN_INVOICE,
|
||||
row.STATUS_DIFFERS_FROM_PURCHASE):
|
||||
return 'notice'
|
||||
|
||||
|
||||
def includeme(config):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue