diff --git a/taiga/export_import/management/commands/dump_project.py b/taiga/export_import/management/commands/dump_project.py index d1248ad4..0b8938bc 100644 --- a/taiga/export_import/management/commands/dump_project.py +++ b/taiga/export_import/management/commands/dump_project.py @@ -24,7 +24,7 @@ import os class Command(BaseCommand): - help = "Export projects to json" + help = "Export projects to a json file" def add_arguments(self, parser): parser.add_argument("project_slugs", @@ -56,7 +56,7 @@ class Command(BaseCommand): raise CommandError("Project '{}' does not exist".format(project_slug)) dst_file = os.path.join(dst_dir, "{}.json".format(project_slug)) - with open(src_file, "w") as f: + with open(dst_file, "w") as f: render_project(project, f) - print("-> Generate dump of project '{}' in '{}'".format(project.name, src_file)) + print("-> Generate dump of project '{}' in '{}'".format(project.name, dst_file)) diff --git a/taiga/export_import/management/commands/load_dump.py b/taiga/export_import/management/commands/load_dump.py index fe6c4f9a..61209862 100644 --- a/taiga/export_import/management/commands/load_dump.py +++ b/taiga/export_import/management/commands/load_dump.py @@ -18,34 +18,39 @@ from django.core.management.base import BaseCommand from django.db import transaction from django.db.models import signals -from optparse import make_option from taiga.base.utils import json from taiga.export_import import services from taiga.export_import import exceptions as err -from taiga.export_import.renderers import ExportRenderer from taiga.projects.models import Project from taiga.users.models import User class Command(BaseCommand): - args = ' ' - help = 'Export a project to json' - renderer_context = {"indent": 4} - renderer = ExportRenderer() - option_list = BaseCommand.option_list + ( - make_option('--overwrite', - action='store_true', - dest='overwrite', - default=False, - help='Delete project if exists'), - ) + help = 'Import a project from a json file' + + def add_arguments(self, parser): + parser.add_argument("dump_file", + help="The path to a dump file (.json).") + + parser.add_argument("owner_email", + help="The email of the new project owner.") + + parser.add_argument("-o", '--overwrite', + action='store_true', + dest='overwrite', + default=False, + help='Overwrite the project if exists') def handle(self, *args, **options): - data = json.loads(open(args[0], 'r').read()) + dump_file_path = options["dump_file"] + owner_email = options["owner_email"] + overwrite = options["overwrite"] + + data = json.loads(open(dump_file_path, 'r').read()) try: with transaction.atomic(): - if options["overwrite"]: + if overwrite: receivers_back = signals.post_delete.receivers signals.post_delete.receivers = [] try: @@ -60,7 +65,7 @@ class Command(BaseCommand): pass signals.post_delete.receivers = receivers_back - user = User.objects.get(email=args[1]) + user = User.objects.get(email=owner_email) services.store_project_from_dict(data, user) except err.TaigaImportError as e: if e.project: