digitalfabrik / integreat-cms

Simplified content management back end for the Integreat App - a multilingual information platform for newcomers
https://digitalfabrik.github.io/integreat-cms/
Apache License 2.0
56 stars 35 forks source link

Delete multiple feedback with different types #1290

Closed melegiul closed 2 years ago

melegiul commented 2 years ago

Describe the Bug

Delete multiple feedback with differnt types does not work

Steps to Reproduce

  1. Go to the region feedback view
  2. Select at least 2 feedback entries with different types
  3. Click on bulk delete

Expected Behavior

Selected feedback should be removed

Actual Behavior

Selected feedback persists also after cache clearing, persists on database

Additional Information

No traceback or error message Deleting multiple feedback with same type works fine

timobrembeck commented 2 years ago

Thanks for the report! I can reproduce this issue with the following traceback:

Traceback ``` Environment: Request Method: POST Request URL: http://localhost:8000/augsburg/feedback/delete/ Django Version: 3.2.12 Python Version: 3.9.10 Installed Applications: ['integreat_cms.cms', 'integreat_cms.gvz_api', 'integreat_cms.linkcheck.apps.ModifiedLinkcheckConfig', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.messages', 'django.contrib.sessions', 'django.contrib.sitemaps', 'django.contrib.staticfiles', 'corsheaders', 'rules.apps.AutodiscoverRulesConfig', 'treebeard', 'webpack_loader', 'widget_tweaks', 'polymorphic', 'django.contrib.admin', 'debug_toolbar'] Installed Middleware: ['debug_toolbar.middleware.DebugToolbarMiddleware', 'corsheaders.middleware.CorsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'integreat_cms.core.middleware.RegionMiddleware', 'integreat_cms.core.middleware.AccessControlMiddleware', 'integreat_cms.cms.middleware.TimezoneMiddleware', 'integreat_cms.api.middleware.JsonDebugToolbarMiddleware'] Traceback (most recent call last): File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 242, in _commit return self.connection.commit() The above exception (update or delete on table "cms_feedback" violates foreign key constraint "cms_poifeedback_feedback_ptr_id_4a60f7d9_fk_cms_feedback_id" on table "cms_poifeedback" DETAIL: Key (id)=(2) is still referenced from table "cms_poifeedback". ) was the direct cause of the following exception: File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.9/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.9/site-packages/django/core/handlers/base.py", line 181, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.9/site-packages/django/views/decorators/http.py", line 40, in inner return func(request, *args, **kwargs) File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.9/site-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view return view_func(request, *args, **kwargs) File "/home/timo/job/integreat/integreat-cms/integreat_cms/cms/views/feedback/region_feedback_actions.py", line 102, in delete_region_feedback Feedback.objects.filter( File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.9/site-packages/django/db/models/query.py", line 746, in delete deleted, _rows_count = collector.delete() File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.9/site-packages/django/db/models/deletion.py", line 435, in delete signals.post_delete.send( File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.9/site-packages/django/db/transaction.py", line 246, in __exit__ connection.commit() File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.9/site-packages/django/utils/asyncio.py", line 33, in inner return func(*args, **kwargs) File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 266, in commit self._commit() File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 242, in _commit return self.connection.commit() File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.9/site-packages/django/db/utils.py", line 90, in __exit__ raise dj_exc_value.with_traceback(traceback) from exc_value File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 242, in _commit return self.connection.commit() Exception Type: IntegrityError at /augsburg/feedback/delete/ Exception Value: update or delete on table "cms_feedback" violates foreign key constraint "cms_poifeedback_feedback_ptr_id_4a60f7d9_fk_cms_feedback_id" on table "cms_poifeedback" DETAIL: Key (id)=(2) is still referenced from table "cms_poifeedback". ```