2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-17 20:45:44 +00:00

New Form and View to create a new BuildItem object

- Allocates stock to a build
This commit is contained in:
Oliver Walters
2019-04-30 15:35:35 +10:00
parent 1b32f9d650
commit 0208c6efe6
5 changed files with 108 additions and 7 deletions

View File

@ -7,7 +7,7 @@ from __future__ import unicode_literals
from InvenTree.forms import HelperForm
from .models import Build
from .models import Build, BuildItem
class EditBuildForm(HelperForm):
@ -26,3 +26,15 @@ class EditBuildForm(HelperForm):
'status',
# 'completion_date',
]
class EditBuildItemForm(HelperForm):
""" Form for adding a new BuildItem to a Build """
class Meta:
model = BuildItem
fields = [
'build',
'stock_item',
'quantity',
]

View File

@ -28,6 +28,7 @@
{
build: {{ build.pk }},
part: {{ build.part.pk }},
new_item_url: "{% url 'build-item-create' %}",
}
);

View File

@ -6,6 +6,10 @@ from django.conf.urls import url, include
from . import views
build_item_urls = [
url('^new/', views.BuildItemCreate.as_view(), name='build-item-create'),
]
build_detail_urls = [
url(r'^edit/?', views.BuildUpdate.as_view(), name='build-edit'),
url(r'^allocate/?', views.BuildAllocate.as_view(), name='build-allocate'),
@ -15,7 +19,9 @@ build_detail_urls = [
]
build_urls = [
url(r'new/?', views.BuildCreate.as_view(), name='build-create'),
url(r'item/', include(build_item_urls)),
url(r'new/', views.BuildCreate.as_view(), name='build-create'),
url(r'^(?P<pk>\d+)/', include(build_detail_urls)),

View File

@ -10,8 +10,8 @@ from django.shortcuts import get_object_or_404
from django.views.generic import DetailView, ListView
from part.models import Part
from .models import Build
from .forms import EditBuildForm
from .models import Build, BuildItem
from .forms import EditBuildForm, EditBuildItemForm
from InvenTree.views import AjaxView, AjaxUpdateView, AjaxCreateView
@ -127,3 +127,30 @@ class BuildUpdate(AjaxUpdateView):
return {
'info': 'Edited build',
}
class BuildItemCreate(AjaxCreateView):
""" View for allocating a new part to a build """
model = BuildItem
form_class = EditBuildItemForm
ajax_template_name = 'modal_form.html'
ajax_form_title = 'Allocate new Part'
def get_initial(self):
""" Provide initial data for BomItem. Look for the folllowing in the GET data:
- build: pk of the Build object
"""
initials = super(AjaxCreateView, self).get_initial().copy()
build_id = self.get_param('build')
if build_id:
try:
initials['build'] = Build.objects.get(pk=build_id)
except Build.DoesNotExist:
pass
return initials