-
Notifications
You must be signed in to change notification settings - Fork 608
Open
Description
Describe the bug
I'm creating a threats template to import. Used convert_library_v2 to create the yaml.
Import fails with generic errors in the UI.
After looking at the logs from the app I found it is a problem with a field size limited to 200 chars (I was at 231).
To Reproduce
Steps to reproduce the behavior:
- Crate a template with a "name" column longet than 200 chars
- Use convert_library_v2 to crate the yaml
- Procedure is successful, file is not usable
my-backend | ::: Getting Dependencies :::
my-backend | ::: Dependencies are ok :::
my-backend | 2026-02-18T16:21:12.197781Z [error ] Library import error [library.utils] ciso_assistant_url=https://my-url error=DataError('value too long for type character varying(200)\n') ip=172.20.0.2 library=<StoredLibrary: my-company-threats - my-company - Minacce ISO 27001> request_id=44eacb20-97e7-466f-ad1e-c9cc31900ae4 user_id=None
my-backend | 2026-02-18T16:21:12.198143Z [error ] Unexpected exception while loading newly uploaded library, removing stored entry [library.views] ciso_assistant_url=https://my-url ip=172.20.0.2 request_id=44eacb20-97e7-466f-ad1e-c9cc31900ae4 urn=urn:my-company:risk:library:my-company-threats user_id=None
my-backend | Traceback (most recent call last):
my-backend | File "/code/.venv/lib/python3.14/site-packages/django/db/backends/utils.py", line 105, in _execute
my-backend | return self.cursor.execute(sql, params)
my-backend | ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
my-backend | psycopg2.errors.StringDataRightTruncation: value too long for type character varying(200)
my-backend |
my-backend |
my-backend | The above exception was the direct cause of the following exception:
my-backend |
my-backend | Traceback (most recent call last):
my-backend | File "/code/library/views.py", line 467, in upload_library
my-backend | load_error = library.load()
my-backend | File "/code/core/models.py", line 467, in load
my-backend | error_msg = library_importer.import_library()
my-backend | File "/code/library/utils.py", line 908, in import_library
my-backend | raise e
my-backend | File "/code/library/utils.py", line 899, in import_library
my-backend | self._import_library()
my-backend | ~~~~~~~~~~~~~~~~~~~~^^
my-backend | File "/usr/local/lib/python3.14/contextlib.py", line 85, in inner
my-backend | return func(*args, **kwds)
my-backend | File "/code/library/utils.py", line 881, in _import_library
my-backend | self.import_objects(library_object)
my-backend | ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
my-backend | File "/code/library/utils.py", line 861, in import_objects
my-backend | threat.import_threat(library_object)
my-backend | ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
my-backend | File "/code/library/utils.py", line 345, in import_threat
my-backend | Threat.objects.create(
my-backend | ~~~~~~~~~~~~~~~~~~~~~^
my-backend | library=library_object,
my-backend | ^^^^^^^^^^^^^^^^^^^^^^^
my-backend | ...<8 lines>...
my-backend | default_locale=library_object.default_locale, # Change this in the future ?
my-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
my-backend | )
my-backend | ^
my-backend | File "/code/.venv/lib/python3.14/site-packages/django/db/models/manager.py", line 87, in manager_method
my-backend | return getattr(self.get_queryset(), name)(*args, **kwargs)
my-backend | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
my-backend | File "/code/.venv/lib/python3.14/site-packages/django/db/models/query.py", line 665, in create
my-backend | obj.save(force_insert=True, using=self.db)
my-backend | ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
my-backend | File "/code/core/base_models.py", line 120, in save
my-backend | super().save(*args, **kwargs)
my-backend | ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
my-backend | File "/code/iam/models.py", line 417, in save
my-backend | super().save(*args, **kwargs)
my-backend | ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
my-backend | File "/code/.venv/lib/python3.14/site-packages/django/db/models/base.py", line 902, in save
my-backend | self.save_base(
my-backend | ~~~~~~~~~~~~~~^
my-backend | using=using,
my-backend | ^^^^^^^^^^^^
my-backend | ...<2 lines>...
my-backend | update_fields=update_fields,
my-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
my-backend | )
my-backend | ^
my-backend | File "/code/.venv/lib/python3.14/site-packages/django/db/models/base.py", line 1008, in save_base
my-backend | updated = self._save_table(
my-backend | raw,
my-backend | ...<4 lines>...
my-backend | update_fields,
my-backend | )
my-backend | File "/code/.venv/lib/python3.14/site-packages/django/db/models/base.py", line 1169, in _save_table
my-backend | results = self._do_insert(
my-backend | cls._base_manager, using, fields, returning_fields, raw
my-backend | )
my-backend | File "/code/.venv/lib/python3.14/site-packages/django/db/models/base.py", line 1210, in _do_insert
my-backend | return manager._insert(
my-backend | ~~~~~~~~~~~~~~~^
my-backend | [self],
my-backend | ^^^^^^^
my-backend | ...<3 lines>...
my-backend | raw=raw,
my-backend | ^^^^^^^^
my-backend | )
my-backend | ^
my-backend | File "/code/.venv/lib/python3.14/site-packages/django/db/models/manager.py", line 87, in manager_method
my-backend | return getattr(self.get_queryset(), name)(*args, **kwargs)
my-backend | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
my-backend | File "/code/.venv/lib/python3.14/site-packages/django/db/models/query.py", line 1873, in _insert
my-backend | return query.get_compiler(using=using).execute_sql(returning_fields)
my-backend | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
my-backend | File "/code/.venv/lib/python3.14/site-packages/django/db/models/sql/compiler.py", line 1882, in execute_sql
my-backend | cursor.execute(sql, params)
my-backend | ~~~~~~~~~~~~~~^^^^^^^^^^^^^
my-backend | File "/code/.venv/lib/python3.14/site-packages/django/db/backends/utils.py", line 79, in execute
my-backend | return self._execute_with_wrappers(
my-backend | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
my-backend | sql, params, many=False, executor=self._execute
my-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
my-backend | )
my-backend | ^
my-backend | File "/code/.venv/lib/python3.14/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
my-backend | return executor(sql, params, many, context)
my-backend | File "/code/.venv/lib/python3.14/site-packages/django/db/backends/utils.py", line 100, in _execute
my-backend | with self.db.wrap_database_errors:
my-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
my-backend | File "/code/.venv/lib/python3.14/site-packages/django/db/utils.py", line 91, in __exit__
my-backend | raise dj_exc_value.with_traceback(traceback) from exc_value
my-backend | File "/code/.venv/lib/python3.14/site-packages/django/db/backends/utils.py", line 105, in _execute
my-backend | return self.cursor.execute(sql, params)
my-backend | ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
my-backend | django.db.utils.DataError: value too long for type character varying(200)
my-backend |
my-backend | 2026-02-18T16:21:12.211780Z [warning ] request_finished [django_structlog.middlewares.request] ciso_assistant_url=https://my-url code=422 ip=172.20.0.2 request=POST /api/stored-libraries/upload/ request_id=44eacb20-97e7-466f-ad1e-c9cc31900ae4 user_id=1763e24d-d810-4422-9975-b296cc4178d2
my-backend | Unprocessable Content: /api/stored-libraries/upload/
my-frontend | {
my-frontend | error: 'libraryLoadFailed',
my-frontend | detail: 'An unexpected error occurred while loading the library.'
my-frontend | }
Expected behavior
Convert library stops and tells there's an error
Environment (please complete the following information):
- 3.11.1 on Linux/Docker
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels