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

Duplicating regions not working #967

Closed timobrembeck closed 2 years ago

timobrembeck commented 3 years ago

Describe the Bug

At the moment, duplicating regions won't work.

Steps to Reproduce

  1. Go to regions
  2. Create new region
  3. Select another region in the field "Duplicate content of another region"
  4. Save region

Expected Behavior

The new regions should be saved and all content should be duplicated

Actual Behavior

An error occurs:

ValidationError at /regions/new

{'slug': ['This field cannot be blank.'], 'creator': ['This field cannot be blank.']}

Additional Information

Traceback ``` Environment: Request Method: POST Request URL: http://localhost:8000/regions/new Django Version: 3.2.7 Python Version: 3.7.11 Installed Applications: ['cms.apps.CmsConfig', 'gvz_api.apps.GvzApiConfig', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.messages', 'django.contrib.sessions', 'django.contrib.sitemaps', 'django.contrib.staticfiles', 'corsheaders', 'linkcheck', 'mptt', 'rules.apps.AutodiscoverRulesConfig', 'webpack_loader', 'widget_tweaks', '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', 'cms.middleware.timezone_middleware.TimezoneMiddleware'] Traceback (most recent call last): File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.7/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.7/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.7/site-packages/django/views/generic/base.py", line 70, in view return self.dispatch(request, *args, **kwargs) File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.7/site-packages/django/utils/decorators.py", line 43, in _wrapper return bound_method(*args, **kwargs) File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.7/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/.venv/lib/python3.7/site-packages/django/utils/decorators.py", line 43, in _wrapper return bound_method(*args, **kwargs) File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.7/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/.venv/lib/python3.7/site-packages/django/utils/decorators.py", line 43, in _wrapper return bound_method(*args, **kwargs) File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.7/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/.venv/lib/python3.7/site-packages/django/views/generic/base.py", line 98, in dispatch return handler(request, *args, **kwargs) File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.7/site-packages/django/utils/decorators.py", line 43, in _wrapper return bound_method(*args, **kwargs) File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.7/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/src/cms/views/regions/region_view.py", line 91, in post form.save() File "/home/timo/job/integreat/integreat-cms/src/cms/forms/regions/region_form.py", line 107, in save duplicate_pages(source_region, region) File "/home/timo/job/integreat/integreat-cms/src/cms/forms/regions/region_form.py", line 283, in duplicate_pages source_region, target_region, source_page_id, target_page, level + 2 File "/home/timo/job/integreat/integreat-cms/src/cms/forms/regions/region_form.py", line 273, in duplicate_pages page_translation.full_clean() File "/home/timo/job/integreat/integreat-cms/.venv/lib/python3.7/site-packages/django/db/models/base.py", line 1238, in full_clean raise ValidationError(errors) Exception Type: ValidationError at /regions/new Exception Value: {'slug': ['This field cannot be blank.'], 'creator': ['This field cannot be blank.']} ```
david-venhoff commented 2 years ago

Strangely, I cannot reproduce this issue. @timoludwig can you please check if you still get this problem?

timobrembeck commented 2 years ago

@david-venhoff Oh, you're right, this problem only exists on the dev system, I cannot reproduce it locally as well. Then it's probably a problem with the data export from wordpress - if the page translations are already imported without a creator, they cannot be duplicated because the clean-method fails.