54 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| .. _signals:
 | |
| 
 | |
| Signals
 | |
| =======
 | |
| 
 | |
| .. versionadded:: 0.5
 | |
| 
 | |
| .. note::
 | |
| 
 | |
|   Signal support is provided by the excellent `blinker`_ library and
 | |
|   will gracefully fall back if it is not available.
 | |
| 
 | |
| 
 | |
| The following document signals exist in MongoEngine and are pretty self-explanatory:
 | |
| 
 | |
|   * `mongoengine.signals.pre_init`
 | |
|   * `mongoengine.signals.post_init`
 | |
|   * `mongoengine.signals.pre_save`
 | |
|   * `mongoengine.signals.post_save`
 | |
|   * `mongoengine.signals.pre_delete`
 | |
|   * `mongoengine.signals.post_delete`
 | |
|   * `mongoengine.signals.pre_bulk_insert`
 | |
|   * `mongoengine.signals.post_bulk_insert`
 | |
| 
 | |
| Example usage::
 | |
| 
 | |
|     from mongoengine import *
 | |
|     from mongoengine import signals
 | |
| 
 | |
|     class Author(Document):
 | |
|         name = StringField()
 | |
| 
 | |
|         def __unicode__(self):
 | |
|             return self.name
 | |
| 
 | |
|         @classmethod
 | |
|         def pre_save(cls, sender, document, **kwargs):
 | |
|             logging.debug("Pre Save: %s" % document.name)
 | |
| 
 | |
|         @classmethod
 | |
|         def post_save(cls, sender, document, **kwargs):
 | |
|             logging.debug("Post Save: %s" % document.name)
 | |
|             if 'created' in kwargs:
 | |
|                 if kwargs['created']:
 | |
|                     logging.debug("Created")
 | |
|                 else:
 | |
|                     logging.debug("Updated")
 | |
| 
 | |
|     signals.pre_save.connect(Author.pre_save, sender=Author)
 | |
|     signals.post_save.connect(Author.post_save, sender=Author)
 | |
| 
 | |
| 
 | |
| .. _blinker: http://pypi.python.org/pypi/blinker
 |