From deaaa48b7d15fd8f90d1ed91e494c8156018edf4 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Thu, 18 Apr 2019 23:12:29 +1000 Subject: [PATCH] Add ability to 'copy' a part - Launch a PartCreate form - initialize form data with the existing part (if it exists!) - use model_to_dict to pass data around --- InvenTree/part/views.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/InvenTree/part/views.py b/InvenTree/part/views.py index 31bedc5c56..38e26468f4 100644 --- a/InvenTree/part/views.py +++ b/InvenTree/part/views.py @@ -5,6 +5,7 @@ from django.shortcuts import get_object_or_404 from django.urls import reverse_lazy from django.views.generic import DetailView, ListView +from django.forms.models import model_to_dict from company.models import Company from .models import PartCategory, Part, BomItem @@ -77,7 +78,18 @@ class PartCreate(AjaxCreateView): # Pre-fill the category field if a valid category is provided def get_initial(self): - initials = super(PartCreate, self).get_initial().copy() + # Is the client attempting to copy an existing part? + part_to_copy = self.request.GET.get('copy_part', None) + + if part_to_copy: + try: + original = Part.objects.get(pk=part_to_copy) + initials = model_to_dict(original) + except Part.DoesNotExist: + initials = super(PartCreate, self).get_initial() + + else: + initials = super(PartCreate, self).get_initial() if self.get_category_id(): initials['category'] = get_object_or_404(PartCategory, pk=self.get_category_id())