62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import pickle
 | |
| from datetime import datetime
 | |
| 
 | |
| from mongoengine import *
 | |
| from mongoengine import signals
 | |
| 
 | |
| 
 | |
| class PickleEmbedded(EmbeddedDocument):
 | |
|     date = DateTimeField(default=datetime.now)
 | |
| 
 | |
| 
 | |
| class PickleTest(Document):
 | |
|     number = IntField()
 | |
|     string = StringField(choices=(('One', '1'), ('Two', '2')))
 | |
|     embedded = EmbeddedDocumentField(PickleEmbedded)
 | |
|     lists = ListField(StringField())
 | |
|     photo = FileField()
 | |
| 
 | |
| 
 | |
| class NewDocumentPickleTest(Document):
 | |
|     number = IntField()
 | |
|     string = StringField(choices=(('One', '1'), ('Two', '2')))
 | |
|     embedded = EmbeddedDocumentField(PickleEmbedded)
 | |
|     lists = ListField(StringField())
 | |
|     photo = FileField()
 | |
|     new_field = StringField()
 | |
| 
 | |
| 
 | |
| class PickleDynamicEmbedded(DynamicEmbeddedDocument):
 | |
|     date = DateTimeField(default=datetime.now)
 | |
| 
 | |
| 
 | |
| class PickleDynamicTest(DynamicDocument):
 | |
|     number = IntField()
 | |
| 
 | |
| 
 | |
| class PickleSignalsTest(Document):
 | |
|     number = IntField()
 | |
|     string = StringField(choices=(('One', '1'), ('Two', '2')))
 | |
|     embedded = EmbeddedDocumentField(PickleEmbedded)
 | |
|     lists = ListField(StringField())
 | |
| 
 | |
|     @classmethod
 | |
|     def post_save(self, sender, document, created, **kwargs):
 | |
|         pickled = pickle.dumps(document)
 | |
| 
 | |
|     @classmethod
 | |
|     def post_delete(self, sender, document, **kwargs):
 | |
|         pickled = pickle.dumps(document)
 | |
| 
 | |
| 
 | |
| signals.post_save.connect(PickleSignalsTest.post_save, sender=PickleSignalsTest)
 | |
| signals.post_delete.connect(PickleSignalsTest.post_delete, sender=PickleSignalsTest)
 | |
| 
 | |
| 
 | |
| class Mixin(object):
 | |
|     name = StringField()
 | |
| 
 | |
| 
 | |
| class Base(Document):
 | |
|     meta = {'allow_inheritance': True}
 |