parent
700bc1b4bb
commit
84f9e44b6c
@ -5,6 +5,7 @@ Changelog
|
|||||||
Changes in dev
|
Changes in dev
|
||||||
==============
|
==============
|
||||||
|
|
||||||
|
- Fixed GridFS documents can now be pickled
|
||||||
- Added Now raises an InvalidDocumentError when declaring multiple fields with the same db_field
|
- Added Now raises an InvalidDocumentError when declaring multiple fields with the same db_field
|
||||||
- Added InvalidQueryError when calling with_id with a filter
|
- Added InvalidQueryError when calling with_id with a filter
|
||||||
- Added support for DBRefs in distinct()
|
- Added support for DBRefs in distinct()
|
||||||
|
@ -786,18 +786,25 @@ class GridFSProxy(object):
|
|||||||
.. versionchanged:: 0.6 - added collection name param
|
.. versionchanged:: 0.6 - added collection name param
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
_fs = None
|
||||||
|
|
||||||
def __init__(self, grid_id=None, key=None,
|
def __init__(self, grid_id=None, key=None,
|
||||||
instance=None,
|
instance=None,
|
||||||
db_alias=DEFAULT_CONNECTION_NAME,
|
db_alias=DEFAULT_CONNECTION_NAME,
|
||||||
collection_name='fs'):
|
collection_name='fs'):
|
||||||
self.fs = gridfs.GridFS(get_db(db_alias), collection_name) # Filesystem instance
|
self.grid_id = grid_id # Store GridFS id for file
|
||||||
self.newfile = None # Used for partial writes
|
|
||||||
self.grid_id = grid_id # Store GridFS id for file
|
|
||||||
self.gridout = None
|
|
||||||
self.key = key
|
self.key = key
|
||||||
self.instance = instance
|
self.instance = instance
|
||||||
|
self.db_alias = db_alias
|
||||||
|
self.collection_name = collection_name
|
||||||
|
self.newfile = None # Used for partial writes
|
||||||
|
self.gridout = None
|
||||||
|
|
||||||
def __getattr__(self, name):
|
def __getattr__(self, name):
|
||||||
|
attrs = ('_fs', 'grid_id', 'key', 'instance', 'db_alias',
|
||||||
|
'collection_name', 'newfile', 'gridout')
|
||||||
|
if name in attrs:
|
||||||
|
return self.__getattribute__(name)
|
||||||
obj = self.get()
|
obj = self.get()
|
||||||
if name in dir(obj):
|
if name in dir(obj):
|
||||||
return getattr(obj, name)
|
return getattr(obj, name)
|
||||||
@ -809,6 +816,17 @@ class GridFSProxy(object):
|
|||||||
def __nonzero__(self):
|
def __nonzero__(self):
|
||||||
return bool(self.grid_id)
|
return bool(self.grid_id)
|
||||||
|
|
||||||
|
def __getstate__(self):
|
||||||
|
self_dict = self.__dict__
|
||||||
|
self_dict['_fs'] = None
|
||||||
|
return self_dict
|
||||||
|
|
||||||
|
@property
|
||||||
|
def fs(self):
|
||||||
|
if not self._fs:
|
||||||
|
self._fs = gridfs.GridFS(get_db(self.db_alias), self.collection_name)
|
||||||
|
return self._fs
|
||||||
|
|
||||||
def get(self, id=None):
|
def get(self, id=None):
|
||||||
if id:
|
if id:
|
||||||
self.grid_id = id
|
self.grid_id = id
|
||||||
|
@ -12,6 +12,7 @@ class PickleTest(Document):
|
|||||||
string = StringField(choices=(('One', '1'), ('Two', '2')))
|
string = StringField(choices=(('One', '1'), ('Two', '2')))
|
||||||
embedded = EmbeddedDocumentField(PickleEmbedded)
|
embedded = EmbeddedDocumentField(PickleEmbedded)
|
||||||
lists = ListField(StringField())
|
lists = ListField(StringField())
|
||||||
|
photo = FileField()
|
||||||
|
|
||||||
|
|
||||||
class Mixin(object):
|
class Mixin(object):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user