diff --git a/InvenTree/InvenTree/views.py b/InvenTree/InvenTree/views.py index 21adcd0021..26303a6549 100644 --- a/InvenTree/InvenTree/views.py +++ b/InvenTree/InvenTree/views.py @@ -150,7 +150,7 @@ class AjaxCreateView(AjaxMixin, CreateView): """ def get(self, request, *args, **kwargs): - """ Creates form with initial data, and renders JSON response """ + """ Creates form with initial data, and renders JSON response """ super(CreateView, self).get(request, *args, **kwargs) @@ -161,7 +161,7 @@ class AjaxCreateView(AjaxMixin, CreateView): """ Responds to form POST. Validates POST data and returns status info. - Validate POST form data - - If valid, save form + - If valid, save form - Return status info (success / failure) """ form = self.get_form() @@ -198,8 +198,7 @@ class AjaxUpdateView(AjaxMixin, UpdateView): super(UpdateView, self).get(request, *args, **kwargs) form = self.get_form() - # form = self.form_class(instance=self.get_object()) - + return self.renderJsonResponse(request, form) def post(self, request, *args, **kwargs): diff --git a/InvenTree/build/views.py b/InvenTree/build/views.py index c8d40e80e6..dc7b3141c3 100644 --- a/InvenTree/build/views.py +++ b/InvenTree/build/views.py @@ -101,7 +101,10 @@ class BuildCreate(AjaxCreateView): part_id = self.request.GET.get('part', None) if part_id: - initials['part'] = get_object_or_404(Part, pk=part_id) + try: + initials['part'] = Part.objects.get(pk=part_id) + except Part.DoesNotExist: + pass return initials diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index 8f93cede7c..46a15cfc62 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -11,7 +11,6 @@ from rest_framework import generics, permissions from django.db.models import Q from django.conf.urls import url, include -from django.shortcuts import get_object_or_404 from .models import Part, PartCategory, BomItem from .models import SupplierPart, SupplierPriceBreak @@ -99,20 +98,24 @@ class PartList(generics.ListCreateAPIView): parts_list = Part.objects.all() if cat_id: - category = get_object_or_404(PartCategory, pk=cat_id) + try: + category = PartCategory.objects.get(pk=cat_id) + + # Filter by the supplied category + flt = Q(category=cat_id) - # Filter by the supplied category - flt = Q(category=cat_id) + if self.request.query_params.get('include_child_categories', None): + childs = category.getUniqueChildren() + for child in childs: + # Ignore the top-level category (already filtered) + if str(child) == str(cat_id): + continue + flt |= Q(category=child) - if self.request.query_params.get('include_child_categories', None): - childs = category.getUniqueChildren() - for child in childs: - # Ignore the top-level category (already filtered) - if str(child) == str(cat_id): - continue - flt |= Q(category=child) + parts_list = parts_list.filter(flt) - parts_list = parts_list.filter(flt) + except PartCategory.DoesNotExist: + pass return parts_list diff --git a/InvenTree/part/views.py b/InvenTree/part/views.py index b8762f556d..eb7d9ea0f3 100644 --- a/InvenTree/part/views.py +++ b/InvenTree/part/views.py @@ -84,7 +84,10 @@ class PartCreate(AjaxCreateView): cat_id = self.get_category_id() if cat_id: - context['category'] = get_object_or_404(PartCategory, pk=cat_id) + try: + context['category'] = PartCategory.objects.get(pk=cat_id) + except PartCategory.DoesNotExist: + pass return context @@ -111,7 +114,10 @@ class PartCreate(AjaxCreateView): initials = super(PartCreate, self).get_initial() if self.get_category_id(): - initials['category'] = get_object_or_404(PartCategory, pk=self.get_category_id()) + try: + initials['category'] = PartCategory.objects.get(pk=self.get_category_id()) + except PartCategory.DoesNotExist: + pass return initials @@ -275,7 +281,10 @@ class CategoryEdit(AjaxUpdateView): def get_context_data(self, **kwargs): context = super(CategoryEdit, self).get_context_data(**kwargs).copy() - context['category'] = get_object_or_404(PartCategory, pk=self.kwargs['pk']) + try: + context['category'] = PartCategory.objects.get(pk=self.kwargs['pk']) + except: + pass return context @@ -311,7 +320,10 @@ class CategoryCreate(AjaxCreateView): parent_id = self.request.GET.get('category', None) if parent_id: - context['category'] = get_object_or_404(PartCategory, pk=parent_id) + try: + context['category'] = PartCategory.objects.get(pk=parent_id) + except PartCategory.DoesNotExist: + pass return context @@ -325,7 +337,10 @@ class CategoryCreate(AjaxCreateView): parent_id = self.request.GET.get('category', None) if parent_id: - initials['parent'] = get_object_or_404(PartCategory, pk=parent_id) + try: + initials['parent'] = PartCategory.objects.get(pk=parent_id) + except PartCategory.DoesNotExist: + pass return initials @@ -357,7 +372,10 @@ class BomItemCreate(AjaxCreateView): parent_id = self.request.GET.get('parent', None) if parent_id: - initials['part'] = get_object_or_404(Part, pk=parent_id) + try: + initials['part'] = Part.objects.get(pk=parent_id) + except Part.DoesNotExist: + pass return initials diff --git a/InvenTree/stock/api.py b/InvenTree/stock/api.py index c352605ad2..8604f54c8f 100644 --- a/InvenTree/stock/api.py +++ b/InvenTree/stock/api.py @@ -7,7 +7,6 @@ from django_filters import NumberFilter from django.conf.urls import url, include from django.db.models import Q -from django.shortcuts import get_object_or_404 from .models import StockLocation, StockItem from .models import StockItemTracking @@ -238,20 +237,24 @@ class StockList(generics.ListCreateAPIView): stock_list = StockItem.objects.all() if loc_id: - location = get_object_or_404(StockLocation, pk=loc_id) + try: + location = StockLocation.objects.get(pk=loc_id) - # Filter by the supplied category - flt = Q(location=loc_id) + # Filter by the supplied category + flt = Q(location=loc_id) - if self.request.query_params.get('include_child_locations', None): - childs = location.getUniqueChildren() - for child in childs: - # Ignore the top-level category (already filtered!) - if str(child) == str(loc_id): - continue - flt |= Q(location=child) + if self.request.query_params.get('include_child_locations', None): + childs = location.getUniqueChildren() + for child in childs: + # Ignore the top-level category (already filtered!) + if str(child) == str(loc_id): + continue + flt |= Q(location=child) - stock_list = stock_list.filter(flt) + stock_list = stock_list.filter(flt) + + except StockLocation.DoesNotExist: + pass return stock_list diff --git a/InvenTree/stock/views.py b/InvenTree/stock/views.py index 70d3f7ded3..b9c258f79d 100644 --- a/InvenTree/stock/views.py +++ b/InvenTree/stock/views.py @@ -5,8 +5,6 @@ Django views for interacting with Stock app # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.shortcuts import get_object_or_404 - from django.views.generic import DetailView, ListView from django.forms.models import model_to_dict @@ -106,7 +104,10 @@ class StockLocationCreate(AjaxCreateView): loc_id = self.request.GET.get('location', None) if loc_id: - initials['parent'] = get_object_or_404(StockLocation, pk=loc_id) + try: + initials['parent'] = StockLocation.objects.get(pk=loc_id) + except StockLocation.DoesNotExist: + pass return initials @@ -126,6 +127,8 @@ class StockItemCreate(AjaxCreateView): ajax_form_title = 'Create new Stock Item' def get_initial(self): + """ Provide initial data to create a new StockItem object + """ # Is the client attempting to copy an existing stock item? item_to_copy = self.request.GET.get('copy', None) @@ -144,15 +147,22 @@ class StockItemCreate(AjaxCreateView): part_id = self.request.GET.get('part', None) loc_id = self.request.GET.get('location', None) + # Part field has been specified if part_id: - part = get_object_or_404(Part, pk=part_id) - if part: - initials['part'] = get_object_or_404(Part, pk=part_id) + try: + part = Part.objects.get(pk=part_id) + initials['part'] = part initials['location'] = part.default_location initials['supplier_part'] = part.default_supplier + except Part.DoesNotExist: + pass + # Location has been specified if loc_id: - initials['location'] = get_object_or_404(StockLocation, pk=loc_id) + try: + initials['location'] = StockLocation.objects.get(pk=loc_id) + except StockLocation.DoesNotExist: + pass return initials