Add support for member_type_id in CORE MemberInfoImporter
				
					
				
			also improve support for first, last name sync
This commit is contained in:
		
							parent
							
								
									4bb03b9cd9
								
							
						
					
					
						commit
						f8de832294
					
				
					 1 changed files with 59 additions and 1 deletions
				
			
		|  | @ -31,6 +31,8 @@ CORE-POS model importers (direct DB) | |||
|    which may exist. | ||||
| """ | ||||
| 
 | ||||
| import logging | ||||
| 
 | ||||
| from corepos.db.office_op import model as corepos, Session as CoreSession | ||||
| from corepos.db.office_trans import model as coretrans | ||||
| 
 | ||||
|  | @ -38,11 +40,15 @@ from rattail import importing | |||
| from rattail.importing.handlers import ToSQLAlchemyHandler | ||||
| 
 | ||||
| 
 | ||||
| log = logging.getLogger(__name__) | ||||
| 
 | ||||
| 
 | ||||
| class ToCoreHandler(ToSQLAlchemyHandler): | ||||
|     """ | ||||
|     Base class for import handlers which target a CORE database on the local side. | ||||
|     """ | ||||
|     local_title = "CORE" | ||||
|     generic_local_title = 'CORE Office (DB "op")' | ||||
|     local_title = 'CORE Office (DB "op")' | ||||
|     local_key = 'corepos_db_office_op' | ||||
| 
 | ||||
|     def make_session(self): | ||||
|  | @ -152,6 +158,58 @@ class MemberInfoImporter(ToCore): | |||
|     model_class = corepos.MemberInfo | ||||
|     key = 'card_number' | ||||
| 
 | ||||
|     @property | ||||
|     def supported_fields(self): | ||||
|         fields = list(super(MemberInfoImporter, self).supported_fields) | ||||
| 
 | ||||
|         fields.append('member_type_id') | ||||
| 
 | ||||
|         return fields | ||||
| 
 | ||||
|     def normalize_local_object(self, member): | ||||
|         data = super(MemberInfoImporter, self).normalize_local_object(member) | ||||
| 
 | ||||
|         if 'member_type_id' in self.fields: | ||||
|             data['member_type_id'] = None | ||||
|             customer = member.customers[0] if member.customers else None | ||||
|             if customer: | ||||
|                 data['member_type_id'] = customer.member_type_id | ||||
| 
 | ||||
|         return data | ||||
| 
 | ||||
|     def update_object(self, member, host_data, local_data=None, **kwargs): | ||||
|         member = super(MemberInfoImporter, self).update_object( | ||||
|             member, host_data, local_data=local_data, **kwargs) | ||||
| 
 | ||||
|         if 'first_name' in self.fields: | ||||
|             if member.customers: | ||||
|                 customer = member.customers[0] | ||||
|                 first_name = host_data['first_name'] | ||||
|                 if customer.first_name != first_name: | ||||
|                     customer.first_name = first_name | ||||
| 
 | ||||
|         if 'last_name' in self.fields: | ||||
|             if member.customers: | ||||
|                 customer = member.customers[0] | ||||
|                 last_name = host_data['last_name'] | ||||
|                 if customer.last_name != last_name: | ||||
|                     customer.last_name = last_name | ||||
| 
 | ||||
|         if 'member_type_id' in self.fields: | ||||
|             member_type_id = host_data['member_type_id'] | ||||
|             for customer in member.customers: | ||||
|                 if customer.member_type_id != member_type_id: | ||||
|                     if member_type_id is None: | ||||
|                         log.warning("will not blank out member_type_id for " | ||||
|                                     "member #%s: %s %s", | ||||
|                                     member.card_number, | ||||
|                                     customer.first_name, | ||||
|                                     customer.last_name) | ||||
|                     else: | ||||
|                         customer.member_type_id = member_type_id | ||||
| 
 | ||||
|         return member | ||||
| 
 | ||||
| 
 | ||||
| class MemberDateImporter(ToCore): | ||||
|     model_class = corepos.MemberDate | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Lance Edgar
						Lance Edgar