Add import normalizers for Department and Employee models.

This commit is contained in:
Lance Edgar 2016-01-17 19:40:25 -06:00
parent 53cfef1f5f
commit ada704250f
2 changed files with 58 additions and 40 deletions

View file

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

View file

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