From dbb59f74cc5da0f1a60088d12ba8b63576528d86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Fri, 15 Apr 2016 10:37:00 +0200 Subject: [PATCH] Fix import exception. --- taiga/export_import/dump_service.py | 3 --- taiga/export_import/tasks.py | 7 +++++-- taiga/projects/models.py | 16 +++++++++++----- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/taiga/export_import/dump_service.py b/taiga/export_import/dump_service.py index e7c8848f..243b9167 100644 --- a/taiga/export_import/dump_service.py +++ b/taiga/export_import/dump_service.py @@ -15,8 +15,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from django.db.transaction import atomic - from django.utils.decorators import method_decorator from django.utils.translation import ugettext as _ @@ -91,7 +89,6 @@ def store_tags_colors(project, data): return None -@method_decorator(atomic) def dict_to_project(data, owner=None): if owner: data["owner"] = owner.email diff --git a/taiga/export_import/tasks.py b/taiga/export_import/tasks.py index b5a4d8fe..79880ba4 100644 --- a/taiga/export_import/tasks.py +++ b/taiga/export_import/tasks.py @@ -90,10 +90,13 @@ def load_project_dump(user, dump): } email = mail_builder.import_error(user, ctx) email.send() - logger.error('Error loading dump %s (by %s)', - dump.get("slug", "-unknow-") if dump else "-unknow-", + logger.error('Error loading dump by %s <%s>', user, + user.email, exc_info=sys.exc_info()) + + # TODO: [Rollback] Remove project because it can be corrupted + else: # Success ctx = {"user": user, "project": project} diff --git a/taiga/projects/models.py b/taiga/projects/models.py index 59d16f9a..730a62e3 100644 --- a/taiga/projects/models.py +++ b/taiga/projects/models.py @@ -430,11 +430,16 @@ class Project(ProjectDefaults, TaggedMixin, models.Model): set_notify_policy_level_to_ignore(notify_policy) def delete_related_content(self): - from taiga.events.apps import connect_events_signals, disconnect_events_signals - from taiga.projects.tasks.apps import connect_all_tasks_signals, disconnect_all_tasks_signals - from taiga.projects.userstories.apps import connect_all_userstories_signals, disconnect_all_userstories_signals - from taiga.projects.issues.apps import connect_all_issues_signals, disconnect_all_issues_signals - from taiga.projects.apps import connect_memberships_signals, disconnect_memberships_signals + from taiga.events.apps import (connect_events_signals, + disconnect_events_signals) + from taiga.projects.tasks.apps import (connect_all_tasks_signals, + disconnect_all_tasks_signals) + from taiga.projects.userstories.apps import (connect_all_userstories_signals, + disconnect_all_userstories_signals) + from taiga.projects.issues.apps import (connect_all_issues_signals, + disconnect_all_issues_signals) + from taiga.projects.apps import (connect_memberships_signals, + disconnect_memberships_signals) disconnect_events_signals() disconnect_all_issues_signals() @@ -455,6 +460,7 @@ class Project(ProjectDefaults, TaggedMixin, models.Model): connect_all_userstories_signals() connect_memberships_signals() + class ProjectModulesConfig(models.Model): project = models.OneToOneField("Project", null=False, blank=False, related_name="modules_config", verbose_name=_("project"))