2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-12-16 17:28:11 +00:00

Merge branch 'generic-parameters' of github.com:SchrodingersGat/InvenTree into generic-parameters

This commit is contained in:
Oliver Walters
2025-11-26 01:38:01 +00:00
4 changed files with 38 additions and 37 deletions

View File

@@ -32,7 +32,7 @@ from InvenTree.unit_test import (
PluginMixin, PluginMixin,
addUserPermission, addUserPermission,
) )
from part.models import Part, PartParameterTemplate from part.models import Part
from plugin import registry from plugin import registry
from .api import WebhookView from .api import WebhookView
@@ -45,6 +45,7 @@ from .models import (
NotesImage, NotesImage,
NotificationEntry, NotificationEntry,
NotificationMessage, NotificationMessage,
ParameterTemplate,
ProjectCode, ProjectCode,
SelectionList, SelectionList,
SelectionListEntry, SelectionListEntry,
@@ -2055,27 +2056,37 @@ class SelectionListTest(InvenTreeAPITestCase):
# Add to parameter # Add to parameter
part = Part.objects.get(pk=1) part = Part.objects.get(pk=1)
template = PartParameterTemplate.objects.create( template = ParameterTemplate.objects.create(
name='test_parameter', units='', selectionlist=self.list name='test_parameter', units='', selectionlist=self.list
) )
rsp = self.get( rsp = self.get(
reverse('api-part-parameter-template-detail', kwargs={'pk': template.pk}) reverse('api-parameter-template-detail', kwargs={'pk': template.pk})
) )
self.assertEqual(rsp.data['name'], 'test_parameter') self.assertEqual(rsp.data['name'], 'test_parameter')
self.assertEqual(rsp.data['choices'], '') self.assertEqual(rsp.data['choices'], '')
# Add to part # Add to part
url = reverse('api-part-parameter-list') url = reverse('api-parameter-list')
response = self.post( response = self.post(
url, url,
{'part': part.pk, 'template': template.pk, 'data': 70}, {
'model_id': part.pk,
'model_type': 'part.part',
'template': template.pk,
'data': 70,
},
expected_code=400, expected_code=400,
) )
self.assertIn('Invalid choice for parameter value', response.data['data']) self.assertIn('Invalid choice for parameter value', response.data['data'])
response = self.post( response = self.post(
url, url,
{'part': part.pk, 'template': template.pk, 'data': self.entry1.value}, {
'model_id': part.pk,
'model_type': 'part.part',
'template': template.pk,
'data': self.entry1.value,
},
expected_code=201, expected_code=201,
) )
self.assertEqual(response.data['data'], self.entry1.value) self.assertEqual(response.data['data'], self.entry1.value)

View File

@@ -18,7 +18,7 @@ import build.models
import company.models import company.models
import order.models import order.models
from build.status_codes import BuildStatus from build.status_codes import BuildStatus
from common.models import InvenTreeSetting from common.models import InvenTreeSetting, ParameterTemplate
from company.models import Company, SupplierPart from company.models import Company, SupplierPart
from InvenTree.config import get_testfolder_dir from InvenTree.config import get_testfolder_dir
from InvenTree.unit_test import InvenTreeAPITestCase from InvenTree.unit_test import InvenTreeAPITestCase
@@ -29,8 +29,6 @@ from part.models import (
Part, Part,
PartCategory, PartCategory,
PartCategoryParameterTemplate, PartCategoryParameterTemplate,
PartParameter,
PartParameterTemplate,
PartRelated, PartRelated,
PartSellPriceBreak, PartSellPriceBreak,
PartTestTemplate, PartTestTemplate,
@@ -235,23 +233,16 @@ class PartCategoryAPITest(InvenTreeAPITestCase):
self.assertEqual(len(response.data), 2) self.assertEqual(len(response.data), 2)
# Add some more category templates via the API # Add some more category templates via the API
n = PartParameterTemplate.objects.count() n = ParameterTemplate.objects.count()
raise ValueError('This test must be refactored...')
# Ensure validation of parameter values is disabled for these checks # Ensure validation of parameter values is disabled for these checks
InvenTreeSetting.set_setting( InvenTreeSetting.set_setting(
'PART_PARAMETER_ENFORCE_UNITS', False, change_user=None 'PART_PARAMETER_ENFORCE_UNITS', False, change_user=None
) )
for template in PartParameterTemplate.objects.all(): for template in ParameterTemplate.objects.all():
response = self.post( response = self.post(
url, url, {'category': 2, 'template': template.pk, 'default_value': '123'}
{
'category': 2,
'parameter_template': template.pk,
'default_value': 'xyz',
},
) )
# Total number of category templates should have increased # Total number of category templates should have increased
@@ -275,8 +266,8 @@ class PartCategoryAPITest(InvenTreeAPITestCase):
'pk', 'pk',
'category', 'category',
'category_detail', 'category_detail',
'parameter_template', 'template',
'parameter_template_detail', 'template_detail',
'default_value', 'default_value',
]: ]:
self.assertIn(key, data.keys()) self.assertIn(key, data.keys())
@@ -1647,7 +1638,7 @@ class PartCreationTests(PartAPITestBase):
# Add some parameter template to the parent category # Add some parameter template to the parent category
for pk in [1, 2, 3]: for pk in [1, 2, 3]:
PartCategoryParameterTemplate.objects.create( PartCategoryParameterTemplate.objects.create(
parameter_template=PartParameterTemplate.objects.get(pk=pk), template=ParameterTemplate.objects.get(pk=pk),
category=cat, category=cat,
default_value=f'Value {pk}', default_value=f'Value {pk}',
) )
@@ -3240,8 +3231,6 @@ class PartMetadataAPITest(InvenTreeAPITestCase):
'api-part-category-metadata': PartCategory, 'api-part-category-metadata': PartCategory,
'api-part-test-template-metadata': PartTestTemplate, 'api-part-test-template-metadata': PartTestTemplate,
'api-part-related-metadata': PartRelated, 'api-part-related-metadata': PartRelated,
'api-part-parameter-template-metadata': PartParameterTemplate,
'api-part-parameter-metadata': PartParameter,
'api-part-metadata': Part, 'api-part-metadata': Part,
'api-bom-substitute-metadata': BomItemSubstitute, 'api-bom-substitute-metadata': BomItemSubstitute,
'api-bom-item-metadata': BomItem, 'api-bom-item-metadata': BomItem,

View File

@@ -3,9 +3,9 @@
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.test import TestCase from django.test import TestCase
from common.models import InvenTreeSetting from common.models import InvenTreeSetting, Parameter, ParameterTemplate
from .models import Part, PartCategory, PartParameter, PartParameterTemplate from .models import Part, PartCategory
class CategoryTest(TestCase): class CategoryTest(TestCase):
@@ -164,8 +164,8 @@ class CategoryTest(TestCase):
for fastener in fasteners: for fastener in fasteners:
self.assertIsInstance(fastener, Part) self.assertIsInstance(fastener, Part)
for parameter in fastener.parameters.all(): for parameter in fastener.parameters.all():
self.assertIsInstance(parameter, PartParameter) self.assertIsInstance(parameter, Parameter)
self.assertIsInstance(parameter.template, PartParameterTemplate) self.assertIsInstance(parameter.template, ParameterTemplate)
# Test number of unique parameters # Test number of unique parameters
self.assertEqual( self.assertEqual(

View File

@@ -15,7 +15,7 @@ from PIL import Image
from common.models import InvenTreeSetting from common.models import InvenTreeSetting
from InvenTree.config import get_testfolder_dir from InvenTree.config import get_testfolder_dir
from InvenTree.unit_test import InvenTreeTestCase from InvenTree.unit_test import InvenTreeTestCase
from part.models import Part, PartParameter, PartParameterTemplate from part.models import Part # TODO fix import: PartParameter, PartParameterTemplate
from part.test_api import PartImageTestMixin from part.test_api import PartImageTestMixin
from report.templatetags import barcode as barcode_tags from report.templatetags import barcode as barcode_tags
from report.templatetags import report as report_tags from report.templatetags import report as report_tags
@@ -406,15 +406,16 @@ class ReportTagTest(PartImageTestMixin, InvenTreeTestCase):
def test_part_parameter(self): def test_part_parameter(self):
"""Test the part_parameter template tag.""" """Test the part_parameter template tag."""
# Test with a valid part # TODO fix import: PartParameter, PartParameterTemplate
part = Part.objects.create(name='test', description='test') # # Test with a valid part
t1 = PartParameterTemplate.objects.create(name='Template 1', units='mm') # part = Part.objects.create(name='test', description='test')
parameter = PartParameter.objects.create(part=part, template=t1, data='test') # t1 = PartParameterTemplate.objects.create(name='Template 1', units='mm')
# parameter = PartParameter.objects.create(part=part, template=t1, data='test')
self.assertEqual(report_tags.part_parameter(part, 'name'), None) # self.assertEqual(report_tags.part_parameter(part, 'name'), None)
self.assertEqual(report_tags.part_parameter(part, 'Template 1'), parameter) # self.assertEqual(report_tags.part_parameter(part, 'Template 1'), parameter)
# Test with an invalid part # # Test with an invalid part
self.assertEqual(report_tags.part_parameter(None, 'name'), None) # self.assertEqual(report_tags.part_parameter(None, 'name'), None)
def test_render_currency(self): def test_render_currency(self):
"""Test the render_currency template tag.""" """Test the render_currency template tag."""