From 9e5eed5d5e9093394501c5665e596afde2971f89 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sun, 14 Apr 2019 00:50:43 +1000 Subject: [PATCH] Move the export_bom function to the part model --- InvenTree/part/models.py | 32 ++++++++++++++++++++++++++++++++ InvenTree/part/views.py | 10 +--------- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index fe72814a32..b4ad92bf65 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -278,6 +278,38 @@ class Part(models.Model): # Return the number of supplier parts available for this part return self.supplier_parts.count() + def export_bom(self, file_format='csv'): + # TODO - Allow other file formats + + lines = [] + + # Construct header line + header = [] + header.append('Part') + header.append('Description') + header.append('Quantity') + + lines.append(header) + + for it in self.bom_items.all(): + line = [] + + line.append(it.sub_part.name) + line.append(it.sub_part.description) + line.append(it.quantity) + + lines.append([str(x) for x in line]) + + # TODO - Choice of formatters goes here? + out = '' + + for line in lines: + print(line) + out += ','.join(line) + out += '\n' + + return out + """ @property def projects(self): diff --git a/InvenTree/part/views.py b/InvenTree/part/views.py index ea1dcc5a52..d9897f82d4 100644 --- a/InvenTree/part/views.py +++ b/InvenTree/part/views.py @@ -131,15 +131,7 @@ class BomExport(AjaxView): # Placeholder to test file export filename = '"' + part.name + '_BOM.' + export_format + '"' - filedata = "Part,Quantity,Available\n" - - for bom_item in part.bom_items.all(): - filedata += bom_item.sub_part.name - filedata += "," - filedata += str(bom_item.quantity) - filedata += "," - filedata += str(bom_item.sub_part.available_stock) - filedata += "\n" + filedata = part.export_bom() return DownloadFile(filedata, filename)