Made minor fixes over load_dump and dump_project commands

remotes/origin/issue/4795/notification_even_they_are_disabled
David Barragán Merino 2016-05-10 16:06:03 +02:00 committed by Alejandro Alonso
parent 7bbb90b61a
commit 9474a1174f
2 changed files with 24 additions and 19 deletions

View File

@ -24,7 +24,7 @@ import os
class Command(BaseCommand): class Command(BaseCommand):
help = "Export projects to json" help = "Export projects to a json file"
def add_arguments(self, parser): def add_arguments(self, parser):
parser.add_argument("project_slugs", parser.add_argument("project_slugs",
@ -56,7 +56,7 @@ class Command(BaseCommand):
raise CommandError("Project '{}' does not exist".format(project_slug)) raise CommandError("Project '{}' does not exist".format(project_slug))
dst_file = os.path.join(dst_dir, "{}.json".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) 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))

View File

@ -18,34 +18,39 @@
from django.core.management.base import BaseCommand from django.core.management.base import BaseCommand
from django.db import transaction from django.db import transaction
from django.db.models import signals from django.db.models import signals
from optparse import make_option
from taiga.base.utils import json from taiga.base.utils import json
from taiga.export_import import services from taiga.export_import import services
from taiga.export_import import exceptions as err from taiga.export_import import exceptions as err
from taiga.export_import.renderers import ExportRenderer
from taiga.projects.models import Project from taiga.projects.models import Project
from taiga.users.models import User from taiga.users.models import User
class Command(BaseCommand): class Command(BaseCommand):
args = '<dump_file> <owner-email>' help = 'Import a project from a json file'
help = 'Export a project to json'
renderer_context = {"indent": 4} def add_arguments(self, parser):
renderer = ExportRenderer() parser.add_argument("dump_file",
option_list = BaseCommand.option_list + ( help="The path to a dump file (.json).")
make_option('--overwrite',
action='store_true', parser.add_argument("owner_email",
dest='overwrite', help="The email of the new project owner.")
default=False,
help='Delete project if exists'), parser.add_argument("-o", '--overwrite',
) action='store_true',
dest='overwrite',
default=False,
help='Overwrite the project if exists')
def handle(self, *args, **options): 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: try:
with transaction.atomic(): with transaction.atomic():
if options["overwrite"]: if overwrite:
receivers_back = signals.post_delete.receivers receivers_back = signals.post_delete.receivers
signals.post_delete.receivers = [] signals.post_delete.receivers = []
try: try:
@ -60,7 +65,7 @@ class Command(BaseCommand):
pass pass
signals.post_delete.receivers = receivers_back 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) services.store_project_from_dict(data, user)
except err.TaigaImportError as e: except err.TaigaImportError as e:
if e.project: if e.project: