def delete(self, extra=None): handler_data = self.find_handler('delete') self.handle_request_filters(handler_data.handler) args = [] if hasattr(handler_data.handler, 'expected_type'): if isinstance(self.data, (list, tuple)) and not handler_data.handler.expected_type_allow_multiple: raise HttpResponseException("Cannot accept multiple ids") data = Crud.delete(handler_data.handler.expected_type, self.data) if hasattr(handler_data.handler, 'expected_type_keys_only') and handler_data.handler.expected_type_keys_only: if isinstance(data, BaseModel): data = data.key else: data = [item.key for item in data] args.insert(0, data) needed_args = {} for key, val in handler_data.kwargs.iteritems(): if key in handler_data.handler.required_arg_keys: needed_args[key] = val result = handler_data.handler(*args, **needed_args) self.handle_response_filters(handler_data) self.write(result)
def put(self, extra=None): handler_data = self.find_handler('put') self.handle_request_filters(handler_data.handler) args = [] if hasattr(handler_data.handler, 'expected_type'): if isinstance(self.data, (list, tuple)) and not handler_data.handler.expected_type_allow_multiple: raise HttpResponseException("Cannot accept multiple items") data = Crud.update(handler_data.handler.expected_type, self.data) args.insert(0, data) for k, v in handler_data.kwargs.iteritems(): if k is None: del handler_data.kwargs[None] break needed_args = {} for key, val in handler_data.kwargs.iteritems(): if key in handler_data.handler.required_arg_keys: needed_args[key] = val result = handler_data.handler(*args, **needed_args) self.handle_response_filters(handler_data) self.write(result)