Add support for member_type_id in CORE MemberInfoImporter

also improve support for first, last name sync
This commit is contained in:
Lance Edgar 2023-05-09 20:25:52 -05:00
parent 4bb03b9cd9
commit f8de832294

View file

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