diff --git a/mayan/apps/common/javascript.py b/mayan/apps/common/javascript.py index 401fdf23ee..f25bc67a36 100644 --- a/mayan/apps/common/javascript.py +++ b/mayan/apps/common/javascript.py @@ -68,15 +68,16 @@ class NPMPackage(object): os.path.join(self.registry.module_directory, self.name) ) - def install(self): + def install(self, include_dependencies=False): print 'Installing package: {}@{}'.format(self.name, self.version) self._download() self._extract() - for name, version in self.metadata.get('dependencies', {}).items(): - package = NPMPackage(registry=self.registry, name=name, version=version[1:]) - package.install() + if include_dependencies: + for name, version in self.metadata.get('dependencies', {}).items(): + package = NPMPackage(registry=self.registry, name=name, version=version) + package.install() @property def tar_filename(self): @@ -95,7 +96,8 @@ class NPMPackage(object): @property def metadata(self): if not hasattr(self, '_metadata'): - self._metadata = requests.get(url=self.get_url()).json() + response = requests.get(url=self.get_url()) + self._metadata = response.json() return self._metadata def get_url(self): @@ -134,12 +136,17 @@ class NPMRegistry(object): self._read_package() for name, version in self._package_data['dependencies'].items(): - self._install_package(name=name, version=version[1:]) + self._install_package(name=name, version=version) class JSDependencyManager(object): - def install(self): - for app in apps.get_app_configs(): + def install(self, app_name=None): + if app_name: + app_config_list = [apps.get_app_config(app_label=app_name)] + else: + app_config_list = apps.get_app_configs() + + for app in app_config_list: for root, dirs, files in os.walk(os.path.join(app.path, 'static')): if 'package.json' in files and not any(map(lambda x: x in root, ['node_modules', 'packages', 'vendors'])): print 'Installing JavaScript packages for app: {} - {}'.format(app.label, root) diff --git a/mayan/apps/common/management/commands/installjavascript.py b/mayan/apps/common/management/commands/installjavascript.py index 722b7fb6c2..84ed196005 100644 --- a/mayan/apps/common/management/commands/installjavascript.py +++ b/mayan/apps/common/management/commands/installjavascript.py @@ -1,6 +1,7 @@ from __future__ import unicode_literals from django.core import management +from django.utils.translation import ugettext_lazy as _ from ...javascript import JSDependencyManager @@ -8,6 +9,12 @@ from ...javascript import JSDependencyManager class Command(management.BaseCommand): help = 'Install JavaScript dependencies.' + def add_arguments(self, parser): + parser.add_argument( + '--app', action='store', dest='app', + help=_('Process a specific app.'), + ) + def handle(self, *args, **options): js_manager = JSDependencyManager() - js_manager.install() + js_manager.install(app_name=options['app'])