WeblateOrg / weblate

Web based localization tool with tight version control integration.
https://weblate.org/
GNU General Public License v3.0
4.54k stars 1.01k forks source link

ValueError at /admin/trans/subproject/add/ #1005

Closed ricardotedim closed 8 years ago

ricardotedim commented 8 years ago

Steps to reproduce

When trying to add a new component to an existing project I get the following error:

ValueError at /admin/trans/subproject/add/ save() prohibited to prevent data loss due to unsaved related object 'subproject'.

This only happens in one of my components. The others work fine.

Environment:

Request Method: POST Request URL: http://.../admin/trans/subproject/add/?_changelist_filters=project__id__exact%3D12

Django Version: 1.9.4 Python Version: 2.7.10 Installed Applications: (u'django.contrib.auth', u'django.contrib.contenttypes', u'django.contrib.sessions', u'django.contrib.sites', u'django.contrib.messages', u'django.contrib.staticfiles', u'django.contrib.admin', u'django.contrib.admindocs', u'django.contrib.sitemaps', u'social.apps.django_app.default', u'crispy_forms', u'compressor', u'weblate.trans', u'weblate.lang', u'weblate.accounts', u'weblate') Installed Middleware: (u'django.contrib.sessions.middleware.SessionMiddleware', u'django.middleware.common.CommonMiddleware', u'django.middleware.locale.LocaleMiddleware', u'django.middleware.csrf.CsrfViewMiddleware', u'django.contrib.auth.middleware.AuthenticationMiddleware', u'django.contrib.messages.middleware.MessageMiddleware', u'django.middleware.clickjacking.XFrameOptionsMiddleware', u'social.apps.django_app.middleware.SocialAuthExceptionMiddleware', u'weblate.accounts.middleware.RequireLoginMiddleware')

Traceback:

File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response

  1. response = self.process_exception_by_middleware(e, request)

File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response

  1. response = wrapped_callback(request, _callback_args, *_callback_kwargs)

File "/usr/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in wrapper

  1. return self.admin_site.admin_view(view)(_args, *_kwargs)

File "/usr/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view

  1. response = view_func(request, _args, *_kwargs)

File "/usr/local/lib/python2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func

  1. response = view_func(request, _args, *_kwargs)

File "/usr/local/lib/python2.7/site-packages/django/contrib/admin/sites.py" in inner

  1. return view(request, _args, *_kwargs)

File "/usr/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in add_view

  1. return self.changeform_view(request, None, form_url, extra_context)

File "/usr/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapper

  1. return bound_func(_args, *_kwargs)

File "/usr/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view

  1. response = view_func(request, _args, *_kwargs)

File "/usr/local/lib/python2.7/site-packages/django/utils/decorators.py" in bound_func

  1. return func.get(self, type(self))(_args2, *_kwargs2)

File "/usr/local/lib/python2.7/site-packages/django/utils/decorators.py" in inner

  1. return func(_args, *_kwargs)

File "/usr/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in changeform_view

  1. if form.is_valid():

File "/usr/local/lib/python2.7/site-packages/django/forms/forms.py" in is_valid

  1. return self.is_bound and not self.errors

File "/usr/local/lib/python2.7/site-packages/django/forms/forms.py" in errors

  1. self.full_clean()

File "/usr/local/lib/python2.7/site-packages/django/forms/forms.py" in full_clean

  1. self._post_clean()

File "/usr/local/lib/python2.7/site-packages/django/forms/models.py" in _post_clean

  1. self.instance.full_clean(exclude=exclude, validate_unique=False)

File "/usr/local/lib/python2.7/site-packages/django/db/models/base.py" in full_clean

  1. self.clean()

File "/weblate/weblate/trans/models/subproject.py" in clean

  1. self.clean_template()

File "/weblate/weblate/trans/models/subproject.py" in clean_template

  1. self.template_store

File "/weblate/weblate/trans/models/subproject.py" in template_store

  1. self.handle_parse_error(exc)

File "/weblate/weblate/trans/models/subproject.py" in handle_parse_error

  1. action=Change.ACTION_PARSE_ERROR,

File "/weblate/weblate/trans/models/changes.py" in create

  1. return super(ChangeManager, self).create(user=user, **kwargs)

File "/usr/local/lib/python2.7/site-packages/django/db/models/manager.py" in manager_method

  1. return getattr(self.get_queryset(), name)(_args, *_kwargs)

File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py" in create

  1. obj.save(force_insert=True, using=self.db)

File "/weblate/weblate/trans/models/changes.py" in save

  1. super(Change, self).save(_args, *_kwargs)

File "/usr/local/lib/python2.7/site-packages/django/db/models/base.py" in save

  1. "unsaved related object '%s'." % field.name

Exception Type: ValueError at /admin/trans/subproject/add/ Exception Value: save() prohibited to prevent data loss due to unsaved related object 'subproject'.

ricardotedim commented 8 years ago

Already tried the fix and it worked beautifully. Thanks!