diff --git a/rattail/db/importing/models.py b/rattail/db/importing/models.py index 1c3b8dbf..162d4ddd 100644 --- a/rattail/db/importing/models.py +++ b/rattail/db/importing/models.py @@ -333,6 +333,7 @@ class EmployeeImporter(Importer): Employee data importer. """ model_class = model.Employee + normalizer_class = normal.EmployeeNormalizer simple_fields = [ 'uuid', 'id', @@ -366,41 +367,6 @@ class EmployeeImporter(Importer): self.int_or_null(data, 'id', 'status') self.prioritize_2(data, 'phone_number') - def normalize_instance(self, employee): - data = super(EmployeeImporter, self).normalize_instance(employee) - - if 'customer_id' in self.fields: - customer = employee.person.customers[0] if employee.person.customers else None - data['customer_id'] = customer.id if customer else None - - if 'first_name' in self.fields: - data['first_name'] = employee.first_name - if 'last_name' in self.fields: - data['last_name'] = employee.last_name - - if 'phone_number' in self.fields: - data['phone_number'] = None - for phone in employee.phones: - if phone.type == 'Home': - data['phone_number'] = phone.number - break - - if 'phone_number_2' in self.fields: - data['phone_number_2'] = None - first = False - for phone in employee.phones: - if phone.type == 'Home': - if first: - data['phone_number_2'] = phone.number - break - first = True - - if 'email_address' in self.fields: - email = employee.email - data['email_address'] = email.address if email else None - - return data - def update_instance(self, employee, data, inst_data=None): super(EmployeeImporter, self).update_instance(employee, data, inst_data) @@ -932,14 +898,13 @@ class DepartmentImporter(Importer): Department data importer. """ model_class = model.Department - supported_fields = [ + normalizer_class = normal.DepartmentNormalizer + simple_fields = [ 'uuid', 'number', 'name', - ] - - def normalize_record(self, data): - self.string_or_null(data, 'name') + ] + supported_fields = simple_fields class SubdepartmentImporter(Importer): diff --git a/rattail/db/importing/normal.py b/rattail/db/importing/normal.py index bf138299..ac55d7a0 100644 --- a/rattail/db/importing/normal.py +++ b/rattail/db/importing/normal.py @@ -55,6 +55,59 @@ class UserNormalizer(Normalizer): } +class DepartmentNormalizer(Normalizer): + """ + Normalizer for department data. + """ + + def normalize(self, department): + return { + 'uuid': department.uuid, + 'number': department.number, + 'name': department.name, + } + + +class EmployeeNormalizer(Normalizer): + """ + Normalizer for employee data. + """ + + def normalize(self, employee): + data = { + 'uuid': employee.uuid, + 'id': employee.id, + 'person_uuid': employee.person_uuid, + 'status': employee.status, + 'first_name': employee.first_name, + 'last_name': employee.last_name, + 'display_name': employee.display_name, + } + + customer = employee.customers[0] if employee.customers else None + data['customer_id'] = customer.id if customer else None + + data['phone_number'] = None + for phone in employee.phones: + if phone.type == 'Home': + data['phone_number'] = phone.number + break + + data['phone_number_2'] = None + first = False + for phone in employee.phones: + if phone.type == 'Home': + if first: + data['phone_number_2'] = phone.number + break + first = True + + email = employee.email + data['email_address'] = email.address if email else None + + return data + + class MessageNormalizer(Normalizer): """ Normalizer for message data.