Add department_number support to Category model importer

This commit is contained in:
Lance Edgar 2017-07-03 13:41:14 -05:00
parent 7f57bcc138
commit 0faf9348af

View file

@ -1050,6 +1050,57 @@ class CategoryImporter(ToRattail):
""" """
model_class = model.Category model_class = model.Category
@property
def supported_fields(self):
return self.simple_fields + [
'department_number',
]
def setup(self):
if 'department_number' in self.fields:
query = self.session.query(model.Department)\
.filter(model.Department.number != None)
self.departments = self.cache_model(model.Department, key='number', query=query)
def cache_query_options(self):
options = []
if 'department_number' in self.fields:
options.append(orm.joinedload(model.Category.department))
return options
def normalize_local_object(self, category):
data = super(CategoryImporter, self).normalize_local_object(category)
if 'department_number' in self.fields:
data['department_number'] = category.department.number if category.department else None
return data
def get_department(self, number):
if hasattr(self, 'departments'):
return self.departments.get(number)
return self.session.query(model.Department)\
.filter(model.Department.number == number)\
.first()
def update_object(self, category, data, local_data=None):
category = super(CategoryImporter, self).update_object(category, data, local_data)
if 'department_number' in self.fields:
number = data['department_number']
if number:
dept = self.get_department(number)
if not dept:
dept = model.Department()
dept.number = number
dept.name = "(created from import)"
self.session.add(dept)
if hasattr(self, 'departments'):
self.departments[dept.number] = dept
category.department = dept
elif category.department:
category.department = None
return category
class FamilyImporter(ToRattail): class FamilyImporter(ToRattail):
""" """