Add department_number support to Category model importer
This commit is contained in:
		
							parent
							
								
									7f57bcc138
								
							
						
					
					
						commit
						0faf9348af
					
				
					 1 changed files with 51 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue