chapeau/kepi/bowler_pub/management/commands/kepi-new.py

70 wiersze
1.9 KiB
Python

from kepi.bowler_pub.create import create
from kepi.bowler_pub.management import KepiCommand
import logging
logger = logging.Logger('kepi')
class Command(KepiCommand):
help = 'create an object'
def add_arguments(self, parser):
super().add_arguments(parser)
parser.add_argument('spec',
help='fields of new object',
nargs='+',
metavar='FIELD=VALUE',
)
parser.add_argument('--no-side-effects',
help='don\'t run side effects on activities',
action='store_true',
)
parser.add_argument('--no-delivery',
help='don\'t attempt to deliver the new object',
action='store_true',
)
def handle(self, *args, **options):
super().handle(*args, **options)
spec = {}
for arg in options['spec']:
if '=' not in arg:
self.stdout.write(self.style.ERROR(
'options to "create" must be in the form '+\
'"field=value": %s' % (
arg,
)))
return
field, value = arg.split('=', 1)
spec[field] = value
logger.debug('Creating object with spec %s',
spec)
result = create(
value=spec,
is_local_user = True,
run_side_effects = not options['no_side_effects'],
run_delivery = not options['no_delivery'],
)
logger.info('Created object: %s',
result)
if result is None:
self.stdout.write(self.style.WARNING(
'No object was created. (Try --debug-mode to discover why.)',
))
else:
self.stdout.write('Created: %s' % (result,))