kopia lustrzana https://gitlab.com/marnanel/chapeau
70 wiersze
1.9 KiB
Python
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,))
|
|
|