diff --git a/InvenTree/part/admin.py b/InvenTree/part/admin.py index 6f3a3e3e72..2e6da3a4d8 100644 --- a/InvenTree/part/admin.py +++ b/InvenTree/part/admin.py @@ -2,6 +2,7 @@ from django.contrib import admin from .models import PartCategory, Part from .models import BomItem +from .models import PartAttachment class PartAdmin(admin.ModelAdmin): @@ -15,6 +16,9 @@ class PartCategoryAdmin(admin.ModelAdmin): class BomItemAdmin(admin.ModelAdmin): list_display=('part', 'sub_part', 'quantity') +class PartAttachmentAdmin(admin.ModelAdmin): + list_display = ('part', 'attachment') + """ class ParameterTemplateAdmin(admin.ModelAdmin): list_display = ('name', 'units', 'format') @@ -27,6 +31,7 @@ class ParameterAdmin(admin.ModelAdmin): admin.site.register(Part, PartAdmin) admin.site.register(PartCategory, PartCategoryAdmin) admin.site.register(BomItem, BomItemAdmin) +admin.site.register(PartAttachment, PartAttachmentAdmin) #admin.site.register(PartParameter, ParameterAdmin) #admin.site.register(PartParameterTemplate, ParameterTemplateAdmin) diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index 790cd28618..b86f2aedd2 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -133,6 +133,29 @@ class Part(models.Model): return projects """ +def attach_file(instance, filename): + + base='part_files' + + # TODO - For a new PartAttachment object, PK is NULL!! + + # Prefix the attachment ID to the filename + fn = "{id}_{fn}".format(id=instance.pk, fn=filename) + + return os.path.join(base, fn) + +class PartAttachment(models.Model): + """ A PartAttachment links a file to a part + Parts can have multiple files such as datasheets, etc + """ + + + part = models.ForeignKey(Part, on_delete=models.CASCADE, + related_name='attachments') + + attachment = models.FileField(upload_to=attach_file, null=True, blank=True) + + class BomItem(models.Model): """ A BomItem links a part to its component items.