Add initial versioning support with SQLAlchemy-Continuum.

This commit is contained in:
Lance Edgar 2015-02-09 15:33:16 -06:00
parent 41dd2ef17b
commit def466935b
43 changed files with 717 additions and 26 deletions

View file

@ -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')