示例#1
0
		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)
示例#2
0
		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)