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
|
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):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in a new issue