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
	
	 Lance Edgar
						Lance Edgar