diff --git a/tailbone_corepos/views/corepos/master.py b/tailbone_corepos/views/corepos/master.py index 3d47ceb..5993969 100644 --- a/tailbone_corepos/views/corepos/master.py +++ b/tailbone_corepos/views/corepos/master.py @@ -66,6 +66,10 @@ class CoreOfficeMasterView(MasterView): return CoreOfficeSession + def results_csv_session(self): + from corepos.db.office_op import Session as CoreSession + return CoreSession() + def results_xlsx_session(self): from corepos.db.office_op import Session as CoreSession return CoreSession() diff --git a/tailbone_corepos/views/corepos/products.py b/tailbone_corepos/views/corepos/products.py index 2cbee3d..7c77c76 100644 --- a/tailbone_corepos/views/corepos/products.py +++ b/tailbone_corepos/views/corepos/products.py @@ -40,6 +40,7 @@ class ProductView(CoreOfficeMasterView): model_title = "CORE-POS Product" url_prefix = '/core-pos/products' route_prefix = 'corepos.products' + results_downloadable_csv = True results_downloadable_xlsx = True labels = { @@ -141,6 +142,34 @@ class ProductView(CoreOfficeMasterView): return '{}/item/ItemEditorPage.php?searchupc={}'.format( office_url, product.upc) + def get_csv_fields(self): + fields = super(ProductView, self).get_csv_fields() + + # add our extra field + fields.append('superdepartment_number') + + # but also, go ahead and cache the superdept mapping, for performance + mapping = {} + super_departments = self.Session.query(corepos.SuperDepartment).all() + for superdept in super_departments: + if superdept.child_id in mapping: + if superdept.parent_id < mapping[superdept.child_id]: + mapping[superdept.child_id] = superdept.parent_id + else: + mapping[superdept.child_id] = superdept.parent_id + self.supermap = mapping + + return fields + + def get_csv_row(self, product, fields): + row = super(ProductView, self).get_csv_row(product, fields) + + row['superdepartment_number'] = None + if product.department_number in self.supermap: + row['superdepartment_number'] = self.supermap[product.department_number] + + return row + def get_xlsx_fields(self): fields = super(ProductView, self).get_xlsx_fields()