parent
48f988acd7
commit
8df81571fc
@ -2,6 +2,10 @@
|
|||||||
Changelog
|
Changelog
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
Changes in 0.6.X
|
||||||
|
================
|
||||||
|
|
||||||
|
- Fixed FileField comparision (hmarr/mongoengine#547)
|
||||||
|
|
||||||
Changes in 0.6.18
|
Changes in 0.6.18
|
||||||
=================
|
=================
|
||||||
|
@ -907,6 +907,8 @@ class GridFSProxy(object):
|
|||||||
return '<%s: %s>' % (self.__class__.__name__, self.grid_id)
|
return '<%s: %s>' % (self.__class__.__name__, self.grid_id)
|
||||||
|
|
||||||
def __cmp__(self, other):
|
def __cmp__(self, other):
|
||||||
|
if not isinstance(other, GridFSProxy):
|
||||||
|
return -1
|
||||||
return cmp((self.grid_id, self.collection_name, self.db_alias),
|
return cmp((self.grid_id, self.collection_name, self.db_alias),
|
||||||
(other.grid_id, other.collection_name, other.db_alias))
|
(other.grid_id, other.collection_name, other.db_alias))
|
||||||
|
|
||||||
|
@ -1567,13 +1567,13 @@ class FieldTest(unittest.TestCase):
|
|||||||
"""Ensure that file fields can be written to and their data retrieved
|
"""Ensure that file fields can be written to and their data retrieved
|
||||||
"""
|
"""
|
||||||
class PutFile(Document):
|
class PutFile(Document):
|
||||||
file = FileField()
|
the_file = FileField()
|
||||||
|
|
||||||
class StreamFile(Document):
|
class StreamFile(Document):
|
||||||
file = FileField()
|
the_file = FileField()
|
||||||
|
|
||||||
class SetFile(Document):
|
class SetFile(Document):
|
||||||
file = FileField()
|
the_file = FileField()
|
||||||
|
|
||||||
text = 'Hello, World!'
|
text = 'Hello, World!'
|
||||||
more_text = 'Foo Bar'
|
more_text = 'Foo Bar'
|
||||||
@ -1584,14 +1584,14 @@ class FieldTest(unittest.TestCase):
|
|||||||
SetFile.drop_collection()
|
SetFile.drop_collection()
|
||||||
|
|
||||||
putfile = PutFile()
|
putfile = PutFile()
|
||||||
putfile.file.put(text, content_type=content_type)
|
putfile.the_file.put(text, content_type=content_type)
|
||||||
putfile.save()
|
putfile.save()
|
||||||
putfile.validate()
|
putfile.validate()
|
||||||
result = PutFile.objects.first()
|
result = PutFile.objects.first()
|
||||||
self.assertTrue(putfile == result)
|
self.assertTrue(putfile == result)
|
||||||
self.assertEquals(result.file.read(), text)
|
self.assertEquals(result.the_file.read(), text)
|
||||||
self.assertEquals(result.file.content_type, content_type)
|
self.assertEquals(result.the_file.content_type, content_type)
|
||||||
result.file.delete() # Remove file from GridFS
|
result.the_file.delete() # Remove file from GridFS
|
||||||
PutFile.objects.delete()
|
PutFile.objects.delete()
|
||||||
|
|
||||||
# Ensure file-like objects are stored
|
# Ensure file-like objects are stored
|
||||||
@ -1599,53 +1599,53 @@ class FieldTest(unittest.TestCase):
|
|||||||
putstring = StringIO.StringIO()
|
putstring = StringIO.StringIO()
|
||||||
putstring.write(text)
|
putstring.write(text)
|
||||||
putstring.seek(0)
|
putstring.seek(0)
|
||||||
putfile.file.put(putstring, content_type=content_type)
|
putfile.the_file.put(putstring, content_type=content_type)
|
||||||
putfile.save()
|
putfile.save()
|
||||||
putfile.validate()
|
putfile.validate()
|
||||||
result = PutFile.objects.first()
|
result = PutFile.objects.first()
|
||||||
self.assertTrue(putfile == result)
|
self.assertTrue(putfile == result)
|
||||||
self.assertEquals(result.file.read(), text)
|
self.assertEquals(result.the_file.read(), text)
|
||||||
self.assertEquals(result.file.content_type, content_type)
|
self.assertEquals(result.the_file.content_type, content_type)
|
||||||
result.file.delete()
|
result.the_file.delete()
|
||||||
|
|
||||||
streamfile = StreamFile()
|
streamfile = StreamFile()
|
||||||
streamfile.file.new_file(content_type=content_type)
|
streamfile.the_file.new_file(content_type=content_type)
|
||||||
streamfile.file.write(text)
|
streamfile.the_file.write(text)
|
||||||
streamfile.file.write(more_text)
|
streamfile.the_file.write(more_text)
|
||||||
streamfile.file.close()
|
streamfile.the_file.close()
|
||||||
streamfile.save()
|
streamfile.save()
|
||||||
streamfile.validate()
|
streamfile.validate()
|
||||||
result = StreamFile.objects.first()
|
result = StreamFile.objects.first()
|
||||||
self.assertTrue(streamfile == result)
|
self.assertTrue(streamfile == result)
|
||||||
self.assertEquals(result.file.read(), text + more_text)
|
self.assertEquals(result.the_file.read(), text + more_text)
|
||||||
self.assertEquals(result.file.content_type, content_type)
|
self.assertEquals(result.the_file.content_type, content_type)
|
||||||
result.file.seek(0)
|
result.the_file.seek(0)
|
||||||
self.assertEquals(result.file.tell(), 0)
|
self.assertEquals(result.the_file.tell(), 0)
|
||||||
self.assertEquals(result.file.read(len(text)), text)
|
self.assertEquals(result.the_file.read(len(text)), text)
|
||||||
self.assertEquals(result.file.tell(), len(text))
|
self.assertEquals(result.the_file.tell(), len(text))
|
||||||
self.assertEquals(result.file.read(len(more_text)), more_text)
|
self.assertEquals(result.the_file.read(len(more_text)), more_text)
|
||||||
self.assertEquals(result.file.tell(), len(text + more_text))
|
self.assertEquals(result.the_file.tell(), len(text + more_text))
|
||||||
result.file.delete()
|
result.the_file.delete()
|
||||||
|
|
||||||
# Ensure deleted file returns None
|
# Ensure deleted file returns None
|
||||||
self.assertTrue(result.file.read() == None)
|
self.assertTrue(result.the_file.read() == None)
|
||||||
|
|
||||||
setfile = SetFile()
|
setfile = SetFile()
|
||||||
setfile.file = text
|
setfile.the_file = text
|
||||||
setfile.save()
|
setfile.save()
|
||||||
setfile.validate()
|
setfile.validate()
|
||||||
result = SetFile.objects.first()
|
result = SetFile.objects.first()
|
||||||
self.assertTrue(setfile == result)
|
self.assertTrue(setfile == result)
|
||||||
self.assertEquals(result.file.read(), text)
|
self.assertEquals(result.the_file.read(), text)
|
||||||
|
|
||||||
# Try replacing file with new one
|
# Try replacing file with new one
|
||||||
result.file.replace(more_text)
|
result.the_file.replace(more_text)
|
||||||
result.save()
|
result.save()
|
||||||
result.validate()
|
result.validate()
|
||||||
result = SetFile.objects.first()
|
result = SetFile.objects.first()
|
||||||
self.assertTrue(setfile == result)
|
self.assertTrue(setfile == result)
|
||||||
self.assertEquals(result.file.read(), more_text)
|
self.assertEquals(result.the_file.read(), more_text)
|
||||||
result.file.delete()
|
result.the_file.delete()
|
||||||
|
|
||||||
PutFile.drop_collection()
|
PutFile.drop_collection()
|
||||||
StreamFile.drop_collection()
|
StreamFile.drop_collection()
|
||||||
@ -1653,7 +1653,7 @@ class FieldTest(unittest.TestCase):
|
|||||||
|
|
||||||
# Make sure FileField is optional and not required
|
# Make sure FileField is optional and not required
|
||||||
class DemoFile(Document):
|
class DemoFile(Document):
|
||||||
file = FileField()
|
the_file = FileField()
|
||||||
DemoFile.objects.create()
|
DemoFile.objects.create()
|
||||||
|
|
||||||
|
|
||||||
@ -1704,20 +1704,20 @@ class FieldTest(unittest.TestCase):
|
|||||||
"""
|
"""
|
||||||
class TestFile(Document):
|
class TestFile(Document):
|
||||||
name = StringField()
|
name = StringField()
|
||||||
file = FileField()
|
the_file = FileField()
|
||||||
|
|
||||||
# First instance
|
# First instance
|
||||||
testfile = TestFile()
|
test_file = TestFile()
|
||||||
testfile.name = "Hello, World!"
|
test_file.name = "Hello, World!"
|
||||||
testfile.file.put('Hello, World!')
|
test_file.the_file.put('Hello, World!')
|
||||||
testfile.save()
|
test_file.save()
|
||||||
|
|
||||||
# Second instance
|
# Second instance
|
||||||
testfiledupe = TestFile()
|
test_file_dupe = TestFile()
|
||||||
data = testfiledupe.file.read() # Should be None
|
data = test_file_dupe.the_file.read() # Should be None
|
||||||
|
|
||||||
self.assertTrue(testfile.name != testfiledupe.name)
|
self.assertTrue(test_file.name != test_file_dupe.name)
|
||||||
self.assertTrue(testfile.file.read() != data)
|
self.assertTrue(test_file.the_file.read() != data)
|
||||||
|
|
||||||
TestFile.drop_collection()
|
TestFile.drop_collection()
|
||||||
|
|
||||||
@ -1725,17 +1725,25 @@ class FieldTest(unittest.TestCase):
|
|||||||
"""Ensure that a boolean test of a FileField indicates its presence
|
"""Ensure that a boolean test of a FileField indicates its presence
|
||||||
"""
|
"""
|
||||||
class TestFile(Document):
|
class TestFile(Document):
|
||||||
file = FileField()
|
the_file = FileField()
|
||||||
|
|
||||||
testfile = TestFile()
|
test_file = TestFile()
|
||||||
self.assertFalse(bool(testfile.file))
|
self.assertFalse(bool(test_file.the_file))
|
||||||
testfile.file = 'Hello, World!'
|
test_file.the_file = 'Hello, World!'
|
||||||
testfile.file.content_type = 'text/plain'
|
test_file.the_file.content_type = 'text/plain'
|
||||||
testfile.save()
|
test_file.save()
|
||||||
self.assertTrue(bool(testfile.file))
|
self.assertTrue(bool(test_file.the_file))
|
||||||
|
|
||||||
TestFile.drop_collection()
|
TestFile.drop_collection()
|
||||||
|
|
||||||
|
def test_file_cmp(self):
|
||||||
|
"""Test comparing against other types"""
|
||||||
|
class TestFile(Document):
|
||||||
|
the_file = FileField()
|
||||||
|
|
||||||
|
test_file = TestFile()
|
||||||
|
self.assertFalse(test_file.the_file in [{"test": 1}])
|
||||||
|
|
||||||
def test_image_field(self):
|
def test_image_field(self):
|
||||||
|
|
||||||
class TestImage(Document):
|
class TestImage(Document):
|
||||||
@ -1799,30 +1807,30 @@ class FieldTest(unittest.TestCase):
|
|||||||
|
|
||||||
|
|
||||||
def test_file_multidb(self):
|
def test_file_multidb(self):
|
||||||
register_connection('testfiles', 'testfiles')
|
register_connection('test_files', 'test_files')
|
||||||
class TestFile(Document):
|
class TestFile(Document):
|
||||||
name = StringField()
|
name = StringField()
|
||||||
file = FileField(db_alias="testfiles",
|
the_file = FileField(db_alias="test_files",
|
||||||
collection_name="macumba")
|
collection_name="macumba")
|
||||||
|
|
||||||
TestFile.drop_collection()
|
TestFile.drop_collection()
|
||||||
|
|
||||||
# delete old filesystem
|
# delete old filesystem
|
||||||
get_db("testfiles").macumba.files.drop()
|
get_db("test_files").macumba.files.drop()
|
||||||
get_db("testfiles").macumba.chunks.drop()
|
get_db("test_files").macumba.chunks.drop()
|
||||||
|
|
||||||
# First instance
|
# First instance
|
||||||
testfile = TestFile()
|
test_file = TestFile()
|
||||||
testfile.name = "Hello, World!"
|
test_file.name = "Hello, World!"
|
||||||
testfile.file.put('Hello, World!',
|
test_file.the_file.put('Hello, World!',
|
||||||
name="hello.txt")
|
name="hello.txt")
|
||||||
testfile.save()
|
test_file.save()
|
||||||
|
|
||||||
data = get_db("testfiles").macumba.files.find_one()
|
data = get_db("test_files").macumba.files.find_one()
|
||||||
self.assertEquals(data.get('name'), 'hello.txt')
|
self.assertEquals(data.get('name'), 'hello.txt')
|
||||||
|
|
||||||
testfile = TestFile.objects.first()
|
test_file = TestFile.objects.first()
|
||||||
self.assertEquals(testfile.file.read(),
|
self.assertEquals(test_file.the_file.read(),
|
||||||
'Hello, World!')
|
'Hello, World!')
|
||||||
|
|
||||||
def test_geo_indexes(self):
|
def test_geo_indexes(self):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user