33 lines
1 KiB
Python
33 lines
1 KiB
Python
|
from django.core.management.base import BaseCommand, CommandError
|
||
|
|
||
|
from orchestra.utils.python import import_class
|
||
|
|
||
|
from ... import keep_state, get_id, get_name
|
||
|
|
||
|
|
||
|
class Command(BaseCommand):
|
||
|
help = 'Runs Orchestra method.'
|
||
|
|
||
|
def add_arguments(self, parser):
|
||
|
parser.add_argument('method',
|
||
|
help='Python path to the method to execute.')
|
||
|
parser.add_argument('args', nargs='*',
|
||
|
help='Additional arguments passed to the method.')
|
||
|
|
||
|
def handle(self, *args, **options):
|
||
|
method = import_class(options['method'])
|
||
|
kwargs = {}
|
||
|
arguments = []
|
||
|
for arg in args:
|
||
|
if '=' in args:
|
||
|
name, value = arg.split('=')
|
||
|
if value.isdigit():
|
||
|
value = int(value)
|
||
|
kwargs[name] = value
|
||
|
else:
|
||
|
if arg.isdigit():
|
||
|
arg = int(arg)
|
||
|
arguments.append(arg)
|
||
|
args = arguments
|
||
|
keep_state(method)(get_id(), get_name(method), *args, **kwargs)
|