Add basic Excel download support for Products table
This commit is contained in:
		
							parent
							
								
									79e71ec4ab
								
							
						
					
					
						commit
						5a9fedbb9a
					
				
					 1 changed files with 62 additions and 0 deletions
				
			
		|  | @ -78,6 +78,7 @@ class ProductsView(MasterView): | ||||||
|     model_class = model.Product |     model_class = model.Product | ||||||
|     supports_mobile = True |     supports_mobile = True | ||||||
|     has_versions = True |     has_versions = True | ||||||
|  |     results_downloadable_xlsx = True | ||||||
| 
 | 
 | ||||||
|     labels = { |     labels = { | ||||||
|         'upc': "UPC", |         'upc': "UPC", | ||||||
|  | @ -471,6 +472,67 @@ class ProductsView(MasterView): | ||||||
|         if classes: |         if classes: | ||||||
|             return ' '.join(classes) |             return ' '.join(classes) | ||||||
| 
 | 
 | ||||||
|  |     def get_xlsx_fields(self): | ||||||
|  |         fields = super(ProductsView, self).get_xlsx_fields() | ||||||
|  | 
 | ||||||
|  |         i = fields.index('department_uuid') | ||||||
|  |         fields.insert(i + 1, 'department_number') | ||||||
|  | 
 | ||||||
|  |         i = fields.index('subdepartment_uuid') | ||||||
|  |         fields.insert(i + 1, 'subdepartment_number') | ||||||
|  | 
 | ||||||
|  |         i = fields.index('category_uuid') | ||||||
|  |         fields.insert(i + 1, 'category_code') | ||||||
|  | 
 | ||||||
|  |         i = fields.index('family_uuid') | ||||||
|  |         fields.insert(i + 1, 'family_code') | ||||||
|  | 
 | ||||||
|  |         i = fields.index('report_code_uuid') | ||||||
|  |         fields.insert(i + 1, 'report_code') | ||||||
|  | 
 | ||||||
|  |         i = fields.index('deposit_link_uuid') | ||||||
|  |         fields.insert(i + 1, 'deposit_link_code') | ||||||
|  | 
 | ||||||
|  |         i = fields.index('tax_uuid') | ||||||
|  |         fields.insert(i + 1, 'tax_code') | ||||||
|  | 
 | ||||||
|  |         i = fields.index('brand_uuid') | ||||||
|  |         fields.insert(i + 1, 'brand_name') | ||||||
|  | 
 | ||||||
|  |         return fields | ||||||
|  | 
 | ||||||
|  |     def get_xlsx_row(self, product, fields): | ||||||
|  |         row = super(ProductsView, self).get_xlsx_row(product, fields) | ||||||
|  | 
 | ||||||
|  |         if 'upc' in fields and isinstance(row['upc'], GPC): | ||||||
|  |             row['upc'] = row['upc'].pretty() | ||||||
|  | 
 | ||||||
|  |         if 'department_number' in fields: | ||||||
|  |             row['department_number'] = product.department.number if product.department else None | ||||||
|  | 
 | ||||||
|  |         if 'subdepartment_number' in fields: | ||||||
|  |             row['subdepartment_number'] = product.subdepartment.number if product.subdepartment else None | ||||||
|  | 
 | ||||||
|  |         if 'category_code' in fields: | ||||||
|  |             row['category_code'] = product.category.code if product.category else None | ||||||
|  | 
 | ||||||
|  |         if 'family_code' in fields: | ||||||
|  |             row['family_code'] = product.family.code if product.family else None | ||||||
|  | 
 | ||||||
|  |         if 'report_code' in fields: | ||||||
|  |             row['report_code'] = product.report_code.code if product.report_code else None | ||||||
|  | 
 | ||||||
|  |         if 'deposit_link_code' in fields: | ||||||
|  |             row['deposit_link_code'] = product.deposit_link.code if product.deposit_link else None | ||||||
|  | 
 | ||||||
|  |         if 'tax_code' in fields: | ||||||
|  |             row['tax_code'] = product.tax.code if product.tax else None | ||||||
|  | 
 | ||||||
|  |         if 'brand_name' in fields: | ||||||
|  |             row['brand_name'] = product.brand.name if product.brand else None | ||||||
|  | 
 | ||||||
|  |         return row | ||||||
|  | 
 | ||||||
|     def get_instance(self): |     def get_instance(self): | ||||||
|         key = self.request.matchdict['uuid'] |         key = self.request.matchdict['uuid'] | ||||||
|         product = Session.query(model.Product).get(key) |         product = Session.query(model.Product).get(key) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Lance Edgar
						Lance Edgar