def post(self, batch_id, group=None, task=None): """ Adds a particular configuration of a task to the batch identified by *batch_id*. ** Request ** POST /batch/:batch_id/:group/:task { kwarg_1: "value", kwarg_2: 10, kwarg_3: 'true', kwarg_4: ["a", "b"], kwarg_5: '/pages/:batch_id/path' } ** Response ** .. sourcecode:: http HTTP/1.1 201 CREATED To post files as arguments use their URL returned by the call that created them on the batch. Booleans are strings containing either the values 'True'/'true' or 'False'/'false'. :status 201: task created :status 404: batch, group, or task not found. """ log.debug('Routing to task {}.{} of {} (POST)'.format(group, task, batch_id)) try: batch = SimpleBatch(batch_id) except: return {'message': 'Batch Not Found: {}'.format(batch_id)}, 404 try: def arg_conversion(s): # JSON does not support booleans if s in ['True', 'true']: return True elif s in ['False', 'false']: return False # XXX: find a nicer way to rewrite page URLs base_url = url_for('api.page', batch=batch_id, file='') if isinstance(s, basestring) and s.startswith(base_url): rem = s.replace(base_url, '', 1) return (batch_id, rem) return s kwargs = {k: arg_conversion(v) for k, v in request.get_json().iteritems()} batch.add_task(group, task, **kwargs) except Exception as e: log.debug('Adding task {} to {} failed: {}'.format(task, batch_id, str(e))) return {'message': str(e)}, 422 return {}, 201
def post(self, batch_id, group=None, task=None): """ Adds a particular configuration of a task to the batch identified by *batch_id*. ** Request ** POST /batch/:batch_id/:group/:task { kwarg_1: "value", kwarg_2: 10, kwarg_3: 'true', kwarg_4: ["a", "b"], kwarg_5: '/pages/:batch_id/path' } ** Response ** .. sourcecode:: http HTTP/1.1 201 CREATED To post files as arguments use their URL returned by the call that created them on the batch. Booleans are strings containing either the values 'True'/'true' or 'False'/'false'. :status 201: task created :status 404: batch, group, or task not found. """ log.debug('Routing to task {}.{} of {} (POST)'.format( group, task, batch_id)) try: batch = SimpleBatch(batch_id) except: return {'message': 'Batch Not Found: {}'.format(batch_id)}, 404 try: def arg_conversion(s): # JSON does not support booleans if s in ['True', 'true']: return True elif s in ['False', 'false']: return False # XXX: find a nicer way to rewrite page URLs base_url = url_for('api.page', batch=batch_id, file='') if isinstance(s, basestring) and s.startswith(base_url): rem = s.replace(base_url, '', 1) return (batch_id, rem) return s kwargs = { k: arg_conversion(v) for k, v in request.get_json().iteritems() } batch.add_task(group, task, **kwargs) except Exception as e: log.debug('Adding task {} to {} failed: {}'.format( task, batch_id, str(e))) return {'message': str(e)}, 422 return {}, 201