diff --git a/mayan/apps/dependencies/management/commands/generaterequirements.py b/mayan/apps/dependencies/management/commands/generaterequirements.py new file mode 100644 index 0000000000..5cf24603a4 --- /dev/null +++ b/mayan/apps/dependencies/management/commands/generaterequirements.py @@ -0,0 +1,47 @@ +from __future__ import unicode_literals + +from django.core import management +from django.utils.translation import ugettext_lazy as _ + +from ...classes import PythonDependency, DependencyGroup + + +class Command(management.BaseCommand): + help = 'Generate Python requirement files.' + + def add_arguments(self, parser): + parser.add_argument('environment', nargs='?', help='Environment name') + parser.add_argument( + '--exclude', action='store', dest='exclude', help=_( + 'Comma separated names of dependencies to exclude from the ' + 'list generated.' + ), + ) + parser.add_argument( + '--only', action='store', dest='only', help=_( + 'Comma separated names of dependencies to show in the list ' + 'while excluding every other one.' + ), + ) + + def handle(self, *args, **options): + dependency_list = PythonDependency.get_for_attribute( + attribute_name='environment__name', + attribute_value=options['environment'], subclass_only=True + ) + exclude_list = (options['exclude'] or '').split(',') + only_list = (options['only'] or '').split(',') + result = [] + + for dependency in dependency_list: + if only_list != ['']: + if dependency.name in only_list: + result.append(dependency) + else: + result.append(dependency) + + for dependency in result: + if dependency.name not in exclude_list: + print( + '{}{}'.format(dependency.name, dependency.version_string) + )