code: def put_file(self, file, object_type, object_id, width, height, mimetype,
                   reproducible):
          
          raise NotImplementedError('put_file() has to be implemented')
docs: Puts the ``file`` of the image.
  
          :param file: the image file to put
          :type file: file-like object, :class:`file`
          :param object_type: the object type of the image to put
                              e.g. ``'comics.cover'``
          :type object_type: :class:`str`
          :param object_id: the object identifier number of the image to put
          :type object_id: :class:`numbers.Integral`
          :param width: the width of the image to put
          :type width: :class:`numbers.Integral`
          :param height: the height of the image to put
          :type height: :class:`numbers.Integral`
          :param mimetype: the mimetype of the image to put
                           e.g. ``'image/jpeg'``
          :type mimetype: :class:`str`
          :param reproducible: :const:`True` only if it's reproducible by
                               computing e.g. resized thumbnails.
                               :const:`False` if it cannot be reproduced
                               e.g. original images
          :type reproducible: :class:`bool`
  
          .. note::
  
             This is an abstract method which has to be implemented
             (overridden) by subclasses.
  
             It's not for consumers but implementations, so consumers
             should use :meth:`store()` method instead of this.