-
-
Notifications
You must be signed in to change notification settings - Fork 683
Closed
Description
Tandoor Version
2.0.0-alpha-1
Setup
Docker / Docker-Compose
Reverse Proxy
SWAG
Other
No response
Bug description
Recipes with headlines in the ingredient list can't be added to the shopping list in bulk.
Relevant logs
Internal Server Error: /api/shopping-list-recipe/9/bulk_create_entries/
Traceback (most recent call last):
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
psycopg2.errors.NotNullViolation: null value in column "food_id" of relation "cookbook_shoppinglistentry" violates not-null constraint
DETAIL: Failing row contains (70, 0.0000000000000000, 0, f, null, 9, null, null, 2025-04-12 10:11:26.123935+00, 1, 1, 6713, null, 2025-04-12 10:11:26.123956+00).
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/recipes/venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
File "/opt/recipes/venv/lib/python3.13/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/opt/recipes/venv/lib/python3.13/site-packages/django/views/decorators/csrf.py", line 56, in wrapper_view
return view_func(*args, **kwargs)
File "/opt/recipes/venv/lib/python3.13/site-packages/rest_framework/viewsets.py", line 124, in view
return self.dispatch(request, *args, **kwargs)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/recipes/venv/lib/python3.13/site-packages/rest_framework/views.py", line 509, in dispatch
response = self.handle_exception(exc)
File "/opt/recipes/venv/lib/python3.13/site-packages/rest_framework/views.py", line 469, in handle_exception
self.raise_uncaught_exception(exc)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^
File "/opt/recipes/venv/lib/python3.13/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
raise exc
File "/opt/recipes/venv/lib/python3.13/site-packages/rest_framework/views.py", line 506, in dispatch
response = handler(request, *args, **kwargs)
File "/opt/recipes/cookbook/views/api.py", line 1391, in bulk_create_entries
ShoppingListEntry.objects.bulk_create(entries)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/models/manager.py", line 87, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/models/query.py", line 803, in bulk_create
returned_columns = self._batched_insert(
objs_without_pk,
...<4 lines>...
unique_fields=unique_fields,
)
::ffff:172.30.0.2 - - [12/Apr/2025:12:11:26 +0200] "POST /api/shopping-list-recipe/9/bulk_create_entries/ HTTP/1.1" 500 228934 "https://recipes.reintjes.xyz/mealplan" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.3 Safari/605.1.15"
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/models/query.py", line 1831, in _batched_insert
self._insert(
~~~~~~~~~~~~^
item,
^^^^^
...<2 lines>...
returning_fields=self.model._meta.db_returning_fields,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/models/query.py", line 1805, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/models/sql/compiler.py", line 1822, in execute_sql
cursor.execute(sql, params)
~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 102, in execute
return super().execute(sql, params)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 67, in execute
return self._execute_with_wrappers(
~~~~~~~~~~~~~~~~~~~~~~~~~~~^
sql, params, many=False, executor=self._execute
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 80, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 84, in _execute
with self.db.wrap_database_errors:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/utils.py", line 91, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
django.db.utils.IntegrityError: null value in column "food_id" of relation "cookbook_shoppinglistentry" violates not-null constraint
DETAIL: Failing row contains (70, 0.0000000000000000, 0, f, null, 9, null, null, 2025-04-12 10:11:26.123935+00, 1, 1, 6713, null, 2025-04-12 10:11:26.123956+00).
ERROR:django.request:Internal Server Error: /api/shopping-list-recipe/9/bulk_create_entries/
Traceback (most recent call last):
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
psycopg2.errors.NotNullViolation: null value in column "food_id" of relation "cookbook_shoppinglistentry" violates not-null constraint
DETAIL: Failing row contains (70, 0.0000000000000000, 0, f, null, 9, null, null, 2025-04-12 10:11:26.123935+00, 1, 1, 6713, null, 2025-04-12 10:11:26.123956+00).
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/recipes/venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
File "/opt/recipes/venv/lib/python3.13/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/opt/recipes/venv/lib/python3.13/site-packages/django/views/decorators/csrf.py", line 56, in wrapper_view
return view_func(*args, **kwargs)
File "/opt/recipes/venv/lib/python3.13/site-packages/rest_framework/viewsets.py", line 124, in view
return self.dispatch(request, *args, **kwargs)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/recipes/venv/lib/python3.13/site-packages/rest_framework/views.py", line 509, in dispatch
response = self.handle_exception(exc)
File "/opt/recipes/venv/lib/python3.13/site-packages/rest_framework/views.py", line 469, in handle_exception
self.raise_uncaught_exception(exc)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^
File "/opt/recipes/venv/lib/python3.13/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
raise exc
File "/opt/recipes/venv/lib/python3.13/site-packages/rest_framework/views.py", line 506, in dispatch
response = handler(request, *args, **kwargs)
File "/opt/recipes/cookbook/views/api.py", line 1391, in bulk_create_entries
ShoppingListEntry.objects.bulk_create(entries)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/models/manager.py", line 87, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/models/query.py", line 803, in bulk_create
returned_columns = self._batched_insert(
objs_without_pk,
...<4 lines>...
unique_fields=unique_fields,
)
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/models/query.py", line 1831, in _batched_insert
self._insert(
~~~~~~~~~~~~^
item,
^^^^^
...<2 lines>...
returning_fields=self.model._meta.db_returning_fields,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/models/query.py", line 1805, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/models/sql/compiler.py", line 1822, in execute_sql
cursor.execute(sql, params)
~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 102, in execute
return super().execute(sql, params)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 67, in execute
return self._execute_with_wrappers(
~~~~~~~~~~~~~~~~~~~~~~~~~~~^
sql, params, many=False, executor=self._execute
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 80, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 84, in _execute
with self.db.wrap_database_errors:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/utils.py", line 91, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/opt/recipes/venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
django.db.utils.IntegrityError: null value in column "food_id" of relation "cookbook_shoppinglistentry" violates not-null constraint
DETAIL: Failing row contains (70, 0.0000000000000000, 0, f, null, 9, null, null, 2025-04-12 10:11:26.123935+00, 1, 1, 6713, null, 2025-04-12 10:11:26.123956+00).
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
Status
Done