Add department_number support to Category model importer
This commit is contained in:
parent
7f57bcc138
commit
0faf9348af
|
@ -1050,6 +1050,57 @@ class CategoryImporter(ToRattail):
|
|||
"""
|
||||
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):
|
||||
"""
|
||||
|
|
Loading…
Reference in a new issue