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
 | 
					    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…
	
	Add table
		Add a link
		
	
		Reference in a new issue