Пример #1
0
		def post(self, extra=None):
			handler_data = self.find_handler('post')
			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")

				unique_props = ()
				if handler_data.handler.expected_type_unique_props:
					unique_props = handler_data.handler.expected_type_unique_props
				data = Crud.create(handler_data.handler.expected_type, self.data, unique_props)
				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)