From 72533e6e277c976f2bf0a05a50f9b7d9fc1d1b5d Mon Sep 17 00:00:00 2001 From: Anze Vavpetic Date: Wed, 1 Apr 2015 14:23:35 +0200 Subject: [PATCH] added support for exporting external packages to a custom folder --- .../management/commands/export_package.py | 30 +++++++++++++------ workflows/management/commands/import_all.py | 1 - 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/workflows/management/commands/export_package.py b/workflows/management/commands/export_package.py index 5eed199..0a6ef7e 100755 --- a/workflows/management/commands/export_package.py +++ b/workflows/management/commands/export_package.py @@ -71,13 +71,18 @@ def serialize_category(c): data['fields'].pop('user') return data -def export_package(package_name,writer): +def export_package(package_name,writer,dest_folder=None): style = color_style() + + external = package_name in settings.INSTALLED_APPS_EXTERNAL_PACKAGES + + if external and not dest_folder: + raise CommandError("You must provide a destination folder when exporting external packages.") - if package_name in settings.INSTALLED_APPS_EXTERNAL_PACKAGES: - raise CommandError("You cannot export external packages.") + if not external and dest_folder: + raise CommandError("You can't use a custom destination folder when exporting local packages.") - if 'workflows.'+package_name not in settings.INSTALLED_APPS: + if 'workflows.'+package_name not in settings.INSTALLED_APPS and not external: raise CommandError("Package not found in INSTALLED_APPS.") #here we check the integrity of the package @@ -92,7 +97,10 @@ def export_package(package_name,writer): #first we check if package_data directory exists and make it if it doesn't - package_directory = os.path.join(os.path.dirname(os.path.realpath(__file__)),'../../'+package_name+"/package_data/") + if external: + package_directory = dest_folder + else: + package_directory = os.path.join(os.path.dirname(os.path.realpath(__file__)),'../../'+package_name+"/package_data/") ensure_dir(package_directory) widgets_directory = os.path.join(package_directory,"widgets") deprecated_widgets_directory = os.path.join(package_directory,"deprecated_widgets") @@ -182,15 +190,19 @@ def export_package(package_name,writer): class Command(BaseCommand): - args = 'package_name' + args = 'package_name [external_destination_folder]' help = 'Exports the package "package_name".' def handle(self, *args, **options): - if (len(args) < 1): + if len(args) < 1: raise CommandError('Argument "package_name" is required.') + dest_folder = None + if len(args) == 2: + dest_folder = args[1] + package_name = args[0] writer = self.stdout - export_package(package_name,writer) - writer.write('Thanks for using the new export command. You rock.\n') \ No newline at end of file + export_package(package_name,writer,dest_folder=dest_folder) + writer.write('Thanks for using the new export command. You rock.\n') diff --git a/workflows/management/commands/import_all.py b/workflows/management/commands/import_all.py index 5b1657f..ea6432b 100755 --- a/workflows/management/commands/import_all.py +++ b/workflows/management/commands/import_all.py @@ -22,7 +22,6 @@ class Command(BaseCommand): package_name = app.split('workflows.')[1] packages.append(package_name) elif app in settings.INSTALLED_APPS_EXTERNAL_PACKAGES: - print app extern_packages.append(app) for package in packages: -- GitLab