From 1027e812bc92df752989e84b7fb6bd782773a95f Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 16 Apr 2018 00:44:32 +1000 Subject: [PATCH] Use django_import_export - Allows import / export to multiple file formats - Provides admin interface - Work to be done to perform data tweaking - It would be really cool if the data fields could be associated 'intelligently' (i.e. not just based on PK, but name-lookup too). --- InvenTree/InvenTree/settings.py | 5 +++++ InvenTree/part/admin.py | 7 +++++-- InvenTree/supplier/admin.py | 9 +++++++-- requirements/base.txt | 3 ++- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/InvenTree/InvenTree/settings.py b/InvenTree/InvenTree/settings.py index c8a2be70c9..b1ce5ec324 100644 --- a/InvenTree/InvenTree/settings.py +++ b/InvenTree/InvenTree/settings.py @@ -36,6 +36,7 @@ INSTALLED_APPS = [ 'rest_framework', 'simple_history', 'crispy_forms', + 'import_export', # Core django modules 'django.contrib.admin', @@ -147,4 +148,8 @@ MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') +# crispy forms use the bootstrap templates CRISPY_TEMPLATE_PACK = 'bootstrap' + +# Use database transactions when importing / exporting data +IMPORT_EXPORT_USE_TRANSACTIONS = True diff --git a/InvenTree/part/admin.py b/InvenTree/part/admin.py index 2e6da3a4d8..429788f4b8 100644 --- a/InvenTree/part/admin.py +++ b/InvenTree/part/admin.py @@ -1,10 +1,12 @@ from django.contrib import admin +from import_export.admin import ImportExportModelAdmin from .models import PartCategory, Part from .models import BomItem from .models import PartAttachment -class PartAdmin(admin.ModelAdmin): +#class PartAdmin(admin.ModelAdmin): +class PartAdmin(ImportExportModelAdmin): list_display = ('name', 'IPN', 'description', 'stock', 'category') @@ -13,7 +15,8 @@ class PartCategoryAdmin(admin.ModelAdmin): list_display = ('name', 'pathstring', 'description') -class BomItemAdmin(admin.ModelAdmin): +#class BomItemAdmin(admin.ModelAdmin): +class BomItemAdmin(ImportExportModelAdmin): list_display=('part', 'sub_part', 'quantity') class PartAttachmentAdmin(admin.ModelAdmin): diff --git a/InvenTree/supplier/admin.py b/InvenTree/supplier/admin.py index 4fe7914019..5811503041 100644 --- a/InvenTree/supplier/admin.py +++ b/InvenTree/supplier/admin.py @@ -1,13 +1,18 @@ from django.contrib import admin +from import_export.admin import ImportExportModelAdmin from .models import Supplier, SupplierPart, Customer, Manufacturer -class CompanyAdmin(admin.ModelAdmin): +class CompanyAdmin(ImportExportModelAdmin): list_display = ('name', 'website', 'contact') +class SupplierPartAdmin(ImportExportModelAdmin): + list_display = ('part', 'supplier', 'SKU') + + admin.site.register(Customer, CompanyAdmin) admin.site.register(Supplier, CompanyAdmin) admin.site.register(Manufacturer, CompanyAdmin) -admin.site.register(SupplierPart) +admin.site.register(SupplierPart, SupplierPartAdmin) diff --git a/requirements/base.txt b/requirements/base.txt index f471d3db94..5fd47a6ab2 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -4,4 +4,5 @@ django_filter==1.0.2 django-simple-history==1.8.2 coreapi==2.3.0 pygments==2.2.0 -django-crispy-forms==1.7.2 \ No newline at end of file +django-crispy-forms==1.7.2 +django-import-export==1.0.0 \ No newline at end of file