[BUG] Supplier SKU not validated against length in "New Part" form

This issue has been tracked since 2023-01-27.

Please verify that this bug has NOT been raised before.

  • I checked and didn't find a similar issue

Describe the bug*

When adding a supplier part directly in the [New Part] modal form, there is no length validation run against the Supplier SKU field. When submitting the form with a longer SKU (more than 100 characters), there is an internal error thrown in the notification box and no part is created.

Steps to Reproduce

  1. open the [New Part] form
  2. add a part and also input a supplier and supplier part SKU
  3. choose a SKU with >100 characters
  4. submit form

Expected behaviour

run a form input validation for length in the SKU field

Deployment Method

  • Docker
  • Bare metal

Version Information

Version Information:

InvenTree-Version: 0.10.0 dev
Django Version: 3.2.16
Commit Hash: 26f71b3
Commit Date: 2023-01-26
Database: postgresql
Debug-Mode: False
Deployed using Docker: True
Active plugins: [{'name': 'IPNAutoGenerator', 'slug': 'ipnautogenerator', 'version': None}, {'name': 'Brother Labels', 'slug': 'brother', 'version': '0.6.0'}]

Relevant log output

Traceback (most recent call last):

File "/root/.local/lib/python3.9/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)

psycopg2.errors.StringDataRightTruncation: value too long for type character varying(100)



The above exception was the direct cause of the following exception:


Traceback (most recent call last):

File "/root/.local/lib/python3.9/site-packages/rest_framework/views.py", line 506, in dispatch
response = handler(request, *args, **kwargs)

File "/root/.local/lib/python3.9/site-packages/rest_framework/generics.py", line 242, in post
return self.create(request, *args, **kwargs)

File "/usr/local/lib/python3.9/contextlib.py", line 79, in inner
return func(*args, **kwds)

File "/home/inventree/InvenTree/part/api.py", line 1358, in create
SupplierPart.objects.create(

File "/root/.local/lib/python3.9/site-packages/django/db/models/manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)

File "/root/.local/lib/python3.9/site-packages/django/db/models/query.py", line 453, in create
obj.save(force_insert=True, using=self.db)

File "/home/inventree/InvenTree/company/models.py", line 484, in save
super().save(*args, **kwargs)

File "/root/.local/lib/python3.9/site-packages/django/db/models/base.py", line 739, in save
self.save_base(using=using, force_insert=force_insert,

File "/root/.local/lib/python3.9/site-packages/django/db/models/base.py", line 776, in save_base
updated = self._save_table(

File "/root/.local/lib/python3.9/site-packages/django/db/models/base.py", line 881, in _save_table
results = self._do_insert(cls._base_manager, using, fields, returning_fields, raw)

File "/root/.local/lib/python3.9/site-packages/django/db/models/base.py", line 919, in _do_insert
return manager._insert(

File "/root/.local/lib/python3.9/site-packages/django/db/models/manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)

File "/root/.local/lib/python3.9/site-packages/django/db/models/query.py", line 1270, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)

File "/root/.local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1416, in execute_sql
cursor.execute(sql, params)

File "/root/.local/lib/python3.9/site-packages/django/db/backends/utils.py", line 66, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)

File "/root/.local/lib/python3.9/site-packages/django/db/backends/utils.py", line 75, in _execute_with_wrappers
return executor(sql, params, many, context)

File "/root/.local/lib/python3.9/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)

File "/root/.local/lib/python3.9/site-packages/django/db/utils.py", line 90, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value

File "/root/.local/lib/python3.9/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)

django.db.utils.DataError: value too long for type character varying(100)
SchrodingersGat wrote this answer on 2023-01-30

@simonkuehling thanks for reporting this :) Fix is incoming

SchrodingersGat wrote this answer on 2023-02-05

@simonkuehling should be good to go now (in latest master)! Although note that we are currently having some issues with docker builds so it might not be available until after the weekend

More Details About Repo
Owner Name inventree
Repo Name InvenTree
Full Name inventree/InvenTree
Language Python
Created Date 2017-03-23
Updated Date 2023-03-31
Star Count 2586
Watcher Count 61
Fork Count 411
Issue Count 141

YOU MAY BE INTERESTED

Issue Title Created Date Updated Date