@when(index, method='POST')
def post(self, *args, **kwargs):
- # TODO(kevinbenton): bulk!
- creator = getattr(request.plugin, 'create_%s' % request.resource_type)
- return {request.resource_type: creator(request.context,
- request.prepared_data)}
+ # TODO(kevinbenton): emulated bulk!
+ if request.bulk:
+ method = 'create_%s_bulk' % request.resource_type
+ else:
+ method = 'create_%s' % request.resource_type
+ creator = getattr(request.plugin, method)
+ key = self.collection if request.bulk else request.resource_type
+ return {key: creator(request.context, request.prepared_data)}
class ItemController(object):
request.member_action)
return member_action_method(request.context, self.item,
request.prepared_data)
- # TODO(kevinbenton): bulk?
updater = getattr(request.plugin, 'update_%s' % request.resource_type)
return updater(request.context, self.item, request.prepared_data)
@when(index, method='DELETE')
def delete(self):
- # TODO(kevinbenton): bulk?
deleter = getattr(request.plugin, 'delete_%s' % request.resource_type)
return deleter(request.context, self.item)
state.request.prepared_data = (
v2base.Controller.prepare_request_body(
state.request.context, state.request.json, is_create,
- resource, _attributes_for_resource(resource)))
+ resource, _attributes_for_resource(resource),
+ allow_bulk=True))
+ # TODO(kevinbenton): conditional allow_bulk
state.request.resources = _extract_resources_from_state(state)
# make the original object available:
if not is_create and not state.request.member_action:
data = state.request.prepared_data
# single item
if resource_type in data:
+ state.request.bulk = False
return [data[resource_type]]
# multiple items
if _plural(resource_type) in data:
- return data[_plural(resource_type)]
+ state.request.bulk = True
+ return [x[resource_type] for x in data[_plural(resource_type)]]
return []