Merge pull request #721 from taigaio/fix/load_and_dump_project_commands
Made minor fixes over load_dump and dump_project commandsremotes/origin/issue/4795/notification_even_they_are_disabled
commit
ab91c47781
|
@ -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))
|
||||||
|
|
|
@ -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',
|
|
||||||
|
parser.add_argument("owner_email",
|
||||||
|
help="The email of the new project owner.")
|
||||||
|
|
||||||
|
parser.add_argument("-o", '--overwrite',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
dest='overwrite',
|
dest='overwrite',
|
||||||
default=False,
|
default=False,
|
||||||
help='Delete project if exists'),
|
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:
|
||||||
|
|
Loading…
Reference in New Issue