Add initial versioning support with SQLAlchemy-Continuum.
This commit is contained in:
parent
41dd2ef17b
commit
def466935b
43 changed files with 717 additions and 26 deletions
|
@ -56,6 +56,7 @@ from rattail.pod import get_image_url, get_image_path
|
|||
from ..db import Session
|
||||
from ..forms import GPCFieldRenderer, BrandFieldRenderer, PriceFieldRenderer
|
||||
from . import CrudView
|
||||
from .continuum import VersionView, version_defaults
|
||||
from ..progress import SessionProgress
|
||||
|
||||
|
||||
|
@ -237,9 +238,16 @@ class ProductsGrid(SearchableAlchemyGridView):
|
|||
|
||||
|
||||
class ProductCrud(CrudView):
|
||||
|
||||
"""
|
||||
Product CRUD view class.
|
||||
"""
|
||||
mapped_class = Product
|
||||
home_route = 'products'
|
||||
child_version_classes = [
|
||||
(model.ProductCode, 'product_uuid'),
|
||||
(model.ProductCost, 'product_uuid'),
|
||||
(model.ProductPrice, 'product_uuid'),
|
||||
]
|
||||
|
||||
def get_model(self, key):
|
||||
model = super(ProductCrud, self).get_model(key)
|
||||
|
@ -277,7 +285,8 @@ class ProductCrud(CrudView):
|
|||
return fs
|
||||
|
||||
def template_kwargs(self, form):
|
||||
kwargs = {'image': False}
|
||||
kwargs = super(ProductCrud, self).template_kwargs(form)
|
||||
kwargs['image'] = False
|
||||
product = form.fieldset.model
|
||||
if product.upc:
|
||||
kwargs['image_url'] = get_image_url(
|
||||
|
@ -289,6 +298,19 @@ class ProductCrud(CrudView):
|
|||
return kwargs
|
||||
|
||||
|
||||
class ProductVersionView(VersionView):
|
||||
"""
|
||||
View which shows version history for a product.
|
||||
"""
|
||||
parent_class = model.Product
|
||||
route_model_view = 'product.read'
|
||||
child_classes = [
|
||||
(model.ProductCode, 'product_uuid'),
|
||||
(model.ProductCost, 'product_uuid'),
|
||||
(model.ProductPrice, 'product_uuid'),
|
||||
]
|
||||
|
||||
|
||||
def products_search(request):
|
||||
"""
|
||||
Locate a product(s) by UPC.
|
||||
|
@ -443,3 +465,5 @@ def includeme(config):
|
|||
permission='products.delete')
|
||||
config.add_view(products_search, route_name='products.search',
|
||||
renderer='json', permission='products.list')
|
||||
|
||||
version_defaults(config, ProductVersionView, 'product')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue