Add initial Shopfoo pattern feature

data models, import/export, web views etc.
This commit is contained in:
Lance Edgar 2020-08-19 22:21:00 -05:00
parent a7656928f5
commit 852f9d4902
19 changed files with 515 additions and 1 deletions

View file

@ -37,6 +37,9 @@ def includeme(config):
# core-pos views
config.include('tailbone_corepos.views.corepos')
# shopfoo views
config.include('rattail_demo.web.views.shopfoo')
# batch views
config.include('tailbone.views.handheld')
config.include('tailbone.views.batch.inventory')

View file

@ -0,0 +1,9 @@
# -*- coding: utf-8; -*-
"""
Shopfoo views
"""
def includeme(config):
config.include('rattail_demo.web.views.shopfoo.products')
config.include('rattail_demo.web.views.shopfoo.exports')

View file

@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
"""
Views for Shopfoo product exports
"""
from rattail_demo.db import model
from tailbone.views.exports import ExportMasterView
class ShopfooProductExportView(ExportMasterView):
"""
Master view for Shopfoo product exports.
"""
model_class = model.ShopfooProductExport
route_prefix = 'shopfoo.product_exports'
url_prefix = '/shopfoo/exports/product'
downloadable = True
editable = True
delete_export_files = True
grid_columns = [
'id',
'created',
'created_by',
'filename',
'record_count',
'uploaded',
]
form_fields = [
'id',
'created',
'created_by',
'record_count',
'filename',
'uploaded',
]
def includeme(config):
ShopfooProductExportView.defaults(config)

View file

@ -0,0 +1,70 @@
# -*- coding: utf-8; -*-
"""
Shopfoo product views
"""
from rattail_demo.db import model
from tailbone.views import MasterView
class ShopfooProductView(MasterView):
"""
Shopfoo Product views
"""
model_class = model.ShopfooProduct
url_prefix = '/shopfoo/products'
route_prefix = 'shopfoo.products'
creatable = False
editable = False
bulk_deletable = True
has_versions = True
labels = {
'upc': "UPC",
}
grid_columns = [
'upc',
'description',
'price',
'enabled',
]
form_fields = [
'product',
'upc',
'description',
'price',
'enabled',
]
def configure_grid(self, g):
super(ShopfooProductView, self).configure_grid(g)
g.filters['upc'].default_active = True
g.filters['upc'].default_verb = 'equal'
g.filters['description'].default_active = True
g.filters['description'].default_verb = 'contains'
g.set_sort_defaults('upc')
g.set_type('price', 'currency')
g.set_link('upc')
g.set_link('description')
def grid_extra_class(self, product, i):
if not product.enabled:
return 'warning'
def configure_form(self, f):
super(ShopfooProductView, self).configure_form(f)
f.set_renderer('product', self.render_product)
f.set_type('price', 'currency')
def includeme(config):
ShopfooProductView.defaults(config)