mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-11-04 07:05:41 +00:00 
			
		
		
		
	First step into managing Category Parameters to InvenTree settings
This commit is contained in:
		@@ -75,6 +75,7 @@ settings_urls = [
 | 
				
			|||||||
   
 | 
					   
 | 
				
			||||||
    url(r'^global/?', SettingsView.as_view(template_name='InvenTree/settings/global.html'), name='settings-global'),
 | 
					    url(r'^global/?', SettingsView.as_view(template_name='InvenTree/settings/global.html'), name='settings-global'),
 | 
				
			||||||
    url(r'^currency/?', SettingsView.as_view(template_name='InvenTree/settings/currency.html'), name='settings-currency'),
 | 
					    url(r'^currency/?', SettingsView.as_view(template_name='InvenTree/settings/currency.html'), name='settings-currency'),
 | 
				
			||||||
 | 
					    url(r'^category/?', SettingsView.as_view(template_name='InvenTree/settings/category.html'), name='settings-category'),
 | 
				
			||||||
    url(r'^part/?', SettingsView.as_view(template_name='InvenTree/settings/part.html'), name='settings-part'),
 | 
					    url(r'^part/?', SettingsView.as_view(template_name='InvenTree/settings/part.html'), name='settings-part'),
 | 
				
			||||||
    url(r'^stock/?', SettingsView.as_view(template_name='InvenTree/settings/stock.html'), name='settings-stock'),
 | 
					    url(r'^stock/?', SettingsView.as_view(template_name='InvenTree/settings/stock.html'), name='settings-stock'),
 | 
				
			||||||
    url(r'^build/?', SettingsView.as_view(template_name='InvenTree/settings/build.html'), name='settings-build'),
 | 
					    url(r'^build/?', SettingsView.as_view(template_name='InvenTree/settings/build.html'), name='settings-build'),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,6 +16,7 @@ from django.utils.translation import ugettext as _
 | 
				
			|||||||
from .models import Part, PartCategory, PartAttachment
 | 
					from .models import Part, PartCategory, PartAttachment
 | 
				
			||||||
from .models import BomItem
 | 
					from .models import BomItem
 | 
				
			||||||
from .models import PartParameterTemplate, PartParameter
 | 
					from .models import PartParameterTemplate, PartParameter
 | 
				
			||||||
 | 
					from .models import PartCategoryParameterTemplate
 | 
				
			||||||
from .models import PartTestTemplate
 | 
					from .models import PartTestTemplate
 | 
				
			||||||
from .models import PartSellPriceBreak
 | 
					from .models import PartSellPriceBreak
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -247,6 +248,18 @@ class EditCategoryForm(HelperForm):
 | 
				
			|||||||
        ]
 | 
					        ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class EditCategoryParameterTemplateForm(HelperForm):
 | 
				
			||||||
 | 
					    """ Form for editing a PartParameterTemplate object """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    class Meta:
 | 
				
			||||||
 | 
					        model = PartCategoryParameterTemplate
 | 
				
			||||||
 | 
					        fields = [
 | 
				
			||||||
 | 
					            'category',
 | 
				
			||||||
 | 
					            'parameter_template',
 | 
				
			||||||
 | 
					            'default_value',
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class EditBomItemForm(HelperForm):
 | 
					class EditBomItemForm(HelperForm):
 | 
				
			||||||
    """ Form for editing a BomItem object """
 | 
					    """ Form for editing a BomItem object """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -74,10 +74,18 @@ part_detail_urls = [
 | 
				
			|||||||
    url(r'^.*$', views.PartDetail.as_view(), name='part-detail'),
 | 
					    url(r'^.*$', views.PartDetail.as_view(), name='part-detail'),
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					category_parameter_urls = [
 | 
				
			||||||
 | 
					    url(r'^new/', views.CategoryParameterTemplateCreate.as_view(), name='category-param-template-create'),
 | 
				
			||||||
 | 
					    # url(r'^(?P<pk>\d+)/edit/', views.PartParameterTemplateEdit.as_view(), name='category-param-template-edit'),
 | 
				
			||||||
 | 
					    # url(r'^(?P<pk>\d+)/delete/', views.PartParameterTemplateDelete.as_view(), name='category-param-template-edit'),
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
part_category_urls = [
 | 
					part_category_urls = [
 | 
				
			||||||
    url(r'^edit/?', views.CategoryEdit.as_view(), name='category-edit'),
 | 
					    url(r'^edit/?', views.CategoryEdit.as_view(), name='category-edit'),
 | 
				
			||||||
    url(r'^delete/?', views.CategoryDelete.as_view(), name='category-delete'),
 | 
					    url(r'^delete/?', views.CategoryDelete.as_view(), name='category-delete'),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    url(r'^template/', include(category_parameter_urls)),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    url(r'^parametric/?', views.CategoryParametric.as_view(), name='category-parametric'),
 | 
					    url(r'^parametric/?', views.CategoryParametric.as_view(), name='category-parametric'),
 | 
				
			||||||
    url(r'^.*$', views.CategoryDetail.as_view(), name='category-detail'),
 | 
					    url(r'^.*$', views.CategoryDetail.as_view(), name='category-detail'),
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,6 +23,7 @@ from decimal import Decimal, InvalidOperation
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
from .models import PartCategory, Part, PartAttachment
 | 
					from .models import PartCategory, Part, PartAttachment
 | 
				
			||||||
from .models import PartParameterTemplate, PartParameter
 | 
					from .models import PartParameterTemplate, PartParameter
 | 
				
			||||||
 | 
					from .models import PartCategoryParameterTemplate
 | 
				
			||||||
from .models import BomItem
 | 
					from .models import BomItem
 | 
				
			||||||
from .models import match_part_names
 | 
					from .models import match_part_names
 | 
				
			||||||
from .models import PartTestTemplate
 | 
					from .models import PartTestTemplate
 | 
				
			||||||
@@ -2137,6 +2138,45 @@ class CategoryCreate(AjaxCreateView):
 | 
				
			|||||||
        return initials
 | 
					        return initials
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CategoryParameterTemplateCreate(AjaxCreateView):
 | 
				
			||||||
 | 
					    """ View for creating a new PartCategoryParameterTemplate """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    role_required = 'part.add'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    model = PartCategoryParameterTemplate
 | 
				
			||||||
 | 
					    form_class = part_forms.EditCategoryParameterTemplateForm
 | 
				
			||||||
 | 
					    ajax_form_title = _('Create Category Parameter Template')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def get_initial(self):
 | 
				
			||||||
 | 
					        """ Get initial data for Category """
 | 
				
			||||||
 | 
					        initials = super().get_initial().copy()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        category_id = self.kwargs.get('pk', None)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if category_id:
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
 | 
					                initials['category'] = PartCategory.objects.get(pk=category_id)
 | 
				
			||||||
 | 
					            except (PartCategory.DoesNotExist, ValueError):
 | 
				
			||||||
 | 
					                pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return initials
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def get_form(self):
 | 
				
			||||||
 | 
					        """ Create a form to upload a new CategoryParameterTemplate
 | 
				
			||||||
 | 
					        - Hide the 'category' field (parent part)
 | 
				
			||||||
 | 
					        - Display parameter templates which are not yet related
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        form = super(AjaxCreateView, self).get_form()
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        form.fields['category'].widget = HiddenInput()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if form.is_valid():
 | 
				
			||||||
 | 
					            form.cleaned_data['category'] = self.kwargs.get('pk', None)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return form
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class BomItemDetail(InvenTreeRoleMixin, DetailView):
 | 
					class BomItemDetail(InvenTreeRoleMixin, DetailView):
 | 
				
			||||||
    """ Detail view for BomItem """
 | 
					    """ Detail view for BomItem """
 | 
				
			||||||
    context_object_name = 'item'
 | 
					    context_object_name = 'item'
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										40
									
								
								InvenTree/templates/InvenTree/settings/category.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								InvenTree/templates/InvenTree/settings/category.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					{% extends "InvenTree/settings/settings.html" %}
 | 
				
			||||||
 | 
					{% load i18n %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% block tabs %}
 | 
				
			||||||
 | 
					{% include "InvenTree/settings/tabs.html" with tab='part' %}
 | 
				
			||||||
 | 
					{% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% block subtitle %}
 | 
				
			||||||
 | 
					{% trans "Category Settings" %}
 | 
				
			||||||
 | 
					{% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% block settings %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<h4>{% trans "Category Parameter Templates" %}</h4>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<h5>{% trans "Category: XXX (id = 1)" %}</h5>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div id='param-buttons'>
 | 
				
			||||||
 | 
					    <button class='btn btn-success' id='new-param'>
 | 
				
			||||||
 | 
					        <span class='fas fa-plus-circle'></span> {% trans "New Parameter" %}
 | 
				
			||||||
 | 
					    </button>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<table class='table table-striped table-condensed' id='param-table' data-toolbar='#param-buttons'>
 | 
				
			||||||
 | 
					</table>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% block js_ready %}
 | 
				
			||||||
 | 
					{{ block.super }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						$("#new-param").click(function() {
 | 
				
			||||||
 | 
					        launchModalForm("{% url 'category-param-template-create' 1 %}", {
 | 
				
			||||||
 | 
					            success: function() {
 | 
				
			||||||
 | 
					                $("#param-table").bootstrapTable('refresh');
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% endblock %}
 | 
				
			||||||
@@ -18,6 +18,9 @@
 | 
				
			|||||||
    <li{% ifequal tab 'currency' %} class='active'{% endifequal %}>
 | 
					    <li{% ifequal tab 'currency' %} class='active'{% endifequal %}>
 | 
				
			||||||
        <a href="{% url 'settings-currency' %}"><span class='fas fa-dollar-sign'></span> {% trans "Currency" %}</a>
 | 
					        <a href="{% url 'settings-currency' %}"><span class='fas fa-dollar-sign'></span> {% trans "Currency" %}</a>
 | 
				
			||||||
    </li>
 | 
					    </li>
 | 
				
			||||||
 | 
					    <li{% ifequal tab 'category' %} class='active'{% endifequal %}>
 | 
				
			||||||
 | 
					        <a href="{% url 'settings-category' %}"><span class='fa fa-sitemap'></span> {% trans "Categories" %}</a>
 | 
				
			||||||
 | 
					    </li>
 | 
				
			||||||
    <li{% ifequal tab 'part' %} class='active'{% endifequal %}>
 | 
					    <li{% ifequal tab 'part' %} class='active'{% endifequal %}>
 | 
				
			||||||
        <a href="{% url 'settings-part' %}"><span class='fas fa-shapes'></span> {% trans "Parts" %}</a>
 | 
					        <a href="{% url 'settings-part' %}"><span class='fas fa-shapes'></span> {% trans "Parts" %}</a>
 | 
				
			||||||
    </li>
 | 
					    </li>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -57,6 +57,7 @@ class RuleSet(models.Model):
 | 
				
			|||||||
            'part_parttesttemplate',
 | 
					            'part_parttesttemplate',
 | 
				
			||||||
            'part_partparametertemplate',
 | 
					            'part_partparametertemplate',
 | 
				
			||||||
            'part_partparameter',
 | 
					            'part_partparameter',
 | 
				
			||||||
 | 
					            'part_partcategoryparametertemplate',
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        'stock': [
 | 
					        'stock': [
 | 
				
			||||||
            'stock_stockitem',
 | 
					            'stock_stockitem',
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user