relates to (#710)

- Update gridfs.rst to make it clearer that you should save the Document hosting the GridFSProxy after calling .delete() or .replace() on the GridFSProxy
- updated GridFSProxy.__str__ so that it would always print both the filename and the grid_id. This should improve debugging
This commit is contained in:
Bastien Gérard 2018-08-19 22:54:37 +02:00 committed by Bastien Gérard
parent 36c5f02bfb
commit 461b789515
2 changed files with 7 additions and 5 deletions

View File

@ -53,7 +53,8 @@ Deletion
Deleting stored files is achieved with the :func:`delete` method:: Deleting stored files is achieved with the :func:`delete` method::
marmot.photo.delete() marmot.photo.delete() # Deletes the GridFS document
marmot.save() # Saves the GridFS reference (being None) contained in the marmot instance
.. warning:: .. warning::
@ -71,4 +72,5 @@ Files can be replaced with the :func:`replace` method. This works just like
the :func:`put` method so even metadata can (and should) be replaced:: the :func:`put` method so even metadata can (and should) be replaced::
another_marmot = open('another_marmot.png', 'rb') another_marmot = open('another_marmot.png', 'rb')
marmot.photo.replace(another_marmot, content_type='image/png') marmot.photo.replace(another_marmot, content_type='image/png') # Replaces the GridFS document
marmot.save() # Replaces the GridFS reference contained in marmot instance

View File

@ -1528,9 +1528,9 @@ class GridFSProxy(object):
return '<%s: %s>' % (self.__class__.__name__, self.grid_id) return '<%s: %s>' % (self.__class__.__name__, self.grid_id)
def __str__(self): def __str__(self):
name = getattr( gridout = self.get()
self.get(), 'filename', self.grid_id) if self.get() else '(no file)' filename = getattr(gridout, 'filename') if gridout else '<no file>'
return '<%s: %s>' % (self.__class__.__name__, name) return '<%s: %s (%s)>' % (self.__class__.__name__, filename, self.grid_id)
def __eq__(self, other): def __eq__(self, other):
if isinstance(other, GridFSProxy): if isinstance(other, GridFSProxy):