def new(self, key=None, data=None, content_type='application/json', encoded_data=None): """ Create a new :class:`RiakObject <riak.riak_object.RiakObject>` that will be stored as JSON. A shortcut for manually instantiating a :class:`RiakObject <riak.riak_object.RiakObject>`. :param key: Name of the key. Leaving this to be None (default) will make Riak generate the key on store. :type key: string :param data: The data to store. :type data: object :rtype: :class:`RiakObject <riak.riak_object.RiakObject>` """ try: if isinstance(data, basestring): data = data.encode('ascii') except UnicodeError: raise TypeError('Unicode data values are not supported.') obj = RiakObject(self._client, self, key) obj.content_type = content_type if data is not None: obj.data = data if encoded_data is not None: obj.encoded_data = encoded_data return obj
def new(self, key=None, data=None, content_type='application/json', encoded_data=None): """A shortcut for manually instantiating a new :class:`~riak.riak_object.RiakObject` or a new :class:`~riak.datatypes.Datatype`, based on the presence and value of the :attr:`datatype <BucketType.datatype>` bucket property. When the bucket contains a :class:`~riak.datatypes.Datatype`, all arguments are ignored except ``key``, otherwise they are used to initialize the :class:`~riak.riak_object.RiakObject`. :param key: Name of the key. Leaving this to be None (default) will make Riak generate the key on store. :type key: str :param data: The data to store in a :class:`~riak.riak_object.RiakObject`, see :attr:`RiakObject.data <riak.riak_object.RiakObject.data>`. :type data: object :param content_type: The media type of the data stored in the :class:`~riak.riak_object.RiakObject`, see :attr:`RiakObject.content_type <riak.riak_object.RiakObject.content_type>`. :type content_type: str :param encoded_data: The encoded data to store in a :class:`~riak.riak_object.RiakObject`, see :attr:`RiakObject.encoded_data <riak.riak_object.RiakObject.encoded_data>`. :type encoded_data: str :rtype: :class:`~riak.riak_object.RiakObject` or :class:`~riak.datatypes.Datatype` """ if self.bucket_type.datatype: return TYPES[self.bucket_type.datatype](bucket=self, key=key) try: if isinstance(data, basestring): data = data.encode('ascii') except UnicodeError: raise TypeError('Unicode data values are not supported.') obj = RiakObject(self._client, self, key) obj.content_type = content_type if data is not None: obj.data = data if encoded_data is not None: obj.encoded_data = encoded_data return obj