Be sure to update Rattail Product, when VendorItem changes in CORE
b/c of the `Product.case_size` field
This commit is contained in:
		
							parent
							
								
									5b1305ddbd
								
							
						
					
					
						commit
						9b00de26c6
					
				
					 1 changed files with 30 additions and 2 deletions
				
			
		|  | @ -79,16 +79,34 @@ class FromCOREAPIToRattail(NewDataSyncImportConsumer): | |||
|                 self.process_change(session, self.importers['Member'], | ||||
|                                     host_object=member) | ||||
| 
 | ||||
|         # process all remaining supported models with typical logic | ||||
|         # sync all "product meta" changes | ||||
|         types = [ | ||||
|             'Department', | ||||
|             'Subdepartment', | ||||
|             'Vendor', | ||||
|         ] | ||||
|         for change in [c for c in changes if c.payload_type in types]: | ||||
|             # normal logic works fine here | ||||
|             self.invoke_importer(session, change) | ||||
| 
 | ||||
|         # sync all Product-related changes | ||||
|         types = [ | ||||
|             'Product', | ||||
|             'VendorItem', | ||||
|         ] | ||||
|         for change in [c for c in changes if c.payload_type in types]: | ||||
|             self.invoke_importer(session, change) | ||||
| 
 | ||||
|             # process deletion per usual logic | ||||
|             if change.deletion: | ||||
|                 self.invoke_importer(session, change) | ||||
|                 if change.payload_type == 'Product': | ||||
|                     continue # stop here if we just deleted a Product | ||||
| 
 | ||||
|             # try to process change for Product | ||||
|             product = self.get_product(change) | ||||
|             if product: | ||||
|                 self.process_change(session, self.importers['Product'], | ||||
|                                     host_object=product) | ||||
| 
 | ||||
|     def get_host_object(self, session, change): | ||||
|         if change.payload_type == 'Member': | ||||
|  | @ -108,6 +126,16 @@ class FromCOREAPIToRattail(NewDataSyncImportConsumer): | |||
|                 if vendorID.isdigit(): | ||||
|                     return self.api.get_vendor_item(upc, int(vendorID)) | ||||
| 
 | ||||
|     def get_product(self, change): | ||||
|         if change.payload_type == 'Product': | ||||
|             return self.api.get_product(change.payload_key) | ||||
|         if change.payload_type == 'VendorItem': | ||||
|             fields = change.payload_key.split('|') | ||||
|             if len(fields) == 2: | ||||
|                 upc, vendorID = fields | ||||
|                 if upc: | ||||
|                     return self.api.get_product(upc) | ||||
| 
 | ||||
| 
 | ||||
| class FromCOREPOSToRattailBase(NewDataSyncImportConsumer): | ||||
|     """ | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Lance Edgar
						Lance Edgar