mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-31 13:15:43 +00:00 
			
		
		
		
	Refactor "CreatePartCategory" form to API
(cherry picked from commit 06ff961564)
			
			
This commit is contained in:
		| @@ -240,32 +240,20 @@ | |||||||
|     }); |     }); | ||||||
|  |  | ||||||
|     $("#cat-create").click(function() { |     $("#cat-create").click(function() { | ||||||
|         launchModalForm( |  | ||||||
|             "{% url 'category-create' %}", |         var fields = categoryFields(); | ||||||
|             { |  | ||||||
|                 follow: true, |         {% if category %} | ||||||
|                 data: { |         fields.parent.value = {{ category.pk }}; | ||||||
|                     {% if category %} |         {% endif %} | ||||||
|                     category: {{ category.id }} |  | ||||||
|                     {% endif %} |         constructForm('{% url "api-part-category-list" %}', { | ||||||
|                 }, |             fields: fields, | ||||||
|                 secondary: [ |             method: 'POST', | ||||||
|                     { |             title: '{% trans "Create Part Category" %}', | ||||||
|                         field: 'default_location', |             follow: true, | ||||||
|                         label: '{% trans "New Location" %}', |         }); | ||||||
|                         title: '{% trans "Create new location" %}', |     }); | ||||||
|                         url: "{% url 'stock-location-create' %}", |  | ||||||
|                     }, |  | ||||||
|                     { |  | ||||||
|                         field: 'parent', |  | ||||||
|                         label: '{% trans "New Category" %}', |  | ||||||
|                         title: '{% trans "Create new category" %}', |  | ||||||
|                         url: "{% url 'category-create' %}", |  | ||||||
|                     }, |  | ||||||
|                 ] |  | ||||||
|             } |  | ||||||
|         ); |  | ||||||
|     }) |  | ||||||
|  |  | ||||||
|     $("#part-export").click(function() { |     $("#part-export").click(function() { | ||||||
|  |  | ||||||
| @@ -286,12 +274,6 @@ | |||||||
|                 {% endif %} |                 {% endif %} | ||||||
|                 }, |                 }, | ||||||
|                 secondary: [ |                 secondary: [ | ||||||
|                     { |  | ||||||
|                         field: 'category', |  | ||||||
|                         label: '{% trans "New Category" %}', |  | ||||||
|                         title: '{% trans "Create new Part Category" %}', |  | ||||||
|                         url: "{% url 'category-create' %}", |  | ||||||
|                     }, |  | ||||||
|                     { |                     { | ||||||
|                         field: 'default_location', |                         field: 'default_location', | ||||||
|                         label: '{% trans "New Location" %}', |                         label: '{% trans "New Location" %}', | ||||||
| @@ -307,24 +289,7 @@ | |||||||
|     {% if category %} |     {% if category %} | ||||||
|     $("#cat-edit").click(function () { |     $("#cat-edit").click(function () { | ||||||
|  |  | ||||||
|         constructForm( |         editCategory({{ category.pk }}); | ||||||
|             '{% url "api-part-category-detail" category.pk %}', |  | ||||||
|             { |  | ||||||
|                 fields: { |  | ||||||
|                     name: {}, |  | ||||||
|                     description: {}, |  | ||||||
|                     parent: { |  | ||||||
|                         help_text: '{% trans "Select parent category" %}', |  | ||||||
|                     }, |  | ||||||
|                     default_location: {}, |  | ||||||
|                     default_keywords: { |  | ||||||
|                         icon: 'fa-key', |  | ||||||
|                     } |  | ||||||
|                 }, |  | ||||||
|                 title: '{% trans "Edit Part Category" %}', |  | ||||||
|                 reload: true |  | ||||||
|             } |  | ||||||
|         ); |  | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|     {% if category.parent %} |     {% if category.parent %} | ||||||
|   | |||||||
| @@ -243,19 +243,6 @@ class PartQRTest(PartViewTestCase): | |||||||
| class CategoryTest(PartViewTestCase): | class CategoryTest(PartViewTestCase): | ||||||
|     """ Tests for PartCategory related views """ |     """ Tests for PartCategory related views """ | ||||||
|  |  | ||||||
|     def test_create(self): |  | ||||||
|         """ Test view for creating a new category """ |  | ||||||
|         response = self.client.get(reverse('category-create'), {'category': 1}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') |  | ||||||
|  |  | ||||||
|         self.assertEqual(response.status_code, 200) |  | ||||||
|  |  | ||||||
|     def test_create_invalid_parent(self): |  | ||||||
|         """ test creation of a new category with an invalid parent """ |  | ||||||
|         response = self.client.get(reverse('category-create'), {'category': 9999}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') |  | ||||||
|  |  | ||||||
|         # Form should still return OK |  | ||||||
|         self.assertEqual(response.status_code, 200) |  | ||||||
|  |  | ||||||
|     def test_set_category(self): |     def test_set_category(self): | ||||||
|         """ Test that the "SetCategory" view works """ |         """ Test that the "SetCategory" view works """ | ||||||
|  |  | ||||||
|   | |||||||
| @@ -65,9 +65,6 @@ category_parameter_urls = [ | |||||||
|  |  | ||||||
| category_urls = [ | category_urls = [ | ||||||
|  |  | ||||||
|     # Create a new category |  | ||||||
|     url(r'^new/', views.CategoryCreate.as_view(), name='category-create'), |  | ||||||
|  |  | ||||||
|     # Top level subcategory display |     # Top level subcategory display | ||||||
|     url(r'^subcategory/', views.PartIndex.as_view(template_name='part/subcategory.html'), name='category-index-subcategory'), |     url(r'^subcategory/', views.PartIndex.as_view(template_name='part/subcategory.html'), name='category-index-subcategory'), | ||||||
|  |  | ||||||
|   | |||||||
| @@ -12,7 +12,6 @@ from django.db.utils import IntegrityError | |||||||
| from django.shortcuts import get_object_or_404 | from django.shortcuts import get_object_or_404 | ||||||
| from django.shortcuts import HttpResponseRedirect | from django.shortcuts import HttpResponseRedirect | ||||||
| from django.utils.translation import gettext_lazy as _ | from django.utils.translation import gettext_lazy as _ | ||||||
| from django.urls import reverse, reverse_lazy |  | ||||||
| from django.views.generic import DetailView, ListView | from django.views.generic import DetailView, ListView | ||||||
| from django.forms.models import model_to_dict | from django.forms.models import model_to_dict | ||||||
| from django.forms import HiddenInput, CheckboxInput | from django.forms import HiddenInput, CheckboxInput | ||||||
| @@ -1905,49 +1904,6 @@ class CategoryDelete(AjaxDeleteView): | |||||||
|         } |         } | ||||||
|  |  | ||||||
|  |  | ||||||
| class CategoryCreate(AjaxCreateView): |  | ||||||
|     """ Create view to make a new PartCategory """ |  | ||||||
|     model = PartCategory |  | ||||||
|     ajax_form_action = reverse_lazy('category-create') |  | ||||||
|     ajax_form_title = _('Create new part category') |  | ||||||
|     ajax_template_name = 'modal_form.html' |  | ||||||
|     form_class = part_forms.EditCategoryForm |  | ||||||
|  |  | ||||||
|     def get_context_data(self, **kwargs): |  | ||||||
|         """ Add extra context data to template. |  | ||||||
|  |  | ||||||
|         - If parent category provided, pass the category details to the template |  | ||||||
|         """ |  | ||||||
|         context = super(CategoryCreate, self).get_context_data(**kwargs).copy() |  | ||||||
|  |  | ||||||
|         parent_id = self.request.GET.get('category', None) |  | ||||||
|  |  | ||||||
|         if parent_id: |  | ||||||
|             try: |  | ||||||
|                 context['category'] = PartCategory.objects.get(pk=parent_id) |  | ||||||
|             except PartCategory.DoesNotExist: |  | ||||||
|                 pass |  | ||||||
|  |  | ||||||
|         return context |  | ||||||
|  |  | ||||||
|     def get_initial(self): |  | ||||||
|         """ Get initial data for new PartCategory |  | ||||||
|  |  | ||||||
|         - If parent provided, pre-fill the parent category |  | ||||||
|         """ |  | ||||||
|         initials = super(CategoryCreate, self).get_initial().copy() |  | ||||||
|  |  | ||||||
|         parent_id = self.request.GET.get('category', None) |  | ||||||
|  |  | ||||||
|         if parent_id: |  | ||||||
|             try: |  | ||||||
|                 initials['parent'] = PartCategory.objects.get(pk=parent_id) |  | ||||||
|             except PartCategory.DoesNotExist: |  | ||||||
|                 pass |  | ||||||
|  |  | ||||||
|         return initials |  | ||||||
|  |  | ||||||
|  |  | ||||||
| class CategoryParameterTemplateCreate(AjaxCreateView): | class CategoryParameterTemplateCreate(AjaxCreateView): | ||||||
|     """ View for creating a new PartCategoryParameterTemplate """ |     """ View for creating a new PartCategoryParameterTemplate """ | ||||||
|  |  | ||||||
|   | |||||||
| @@ -14,6 +14,37 @@ function yesNoLabel(value) { | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | function categoryFields() { | ||||||
|  |     return { | ||||||
|  |         parent: { | ||||||
|  |             help_text: '{% trans "Parent part category" %}', | ||||||
|  |         }, | ||||||
|  |         name: {}, | ||||||
|  |         description: {}, | ||||||
|  |         default_location: {}, | ||||||
|  |         default_keywords: { | ||||||
|  |             icon: 'fa-key', | ||||||
|  |         } | ||||||
|  |     }; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | // Edit a PartCategory via the API | ||||||
|  | function editCategory(pk, options={}) { | ||||||
|  |  | ||||||
|  |     var url = `/api/part/category/${pk}/`; | ||||||
|  |  | ||||||
|  |     var fields = categoryFields(); | ||||||
|  |  | ||||||
|  |     constructForm(url, { | ||||||
|  |         fields: fields, | ||||||
|  |         title: '{% trans "Edit Part Category" %}', | ||||||
|  |         reload: true, | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
| function editPart(pk, options={}) { | function editPart(pk, options={}) { | ||||||
|  |  | ||||||
|     var url = `/api/part/${pk}/`; |     var url = `/api/part/${pk}/`; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user