Added pre_save_post_validation signal (#345)
This commit is contained in:
parent
ef4b32aca7
commit
4244e7569b
@ -5,6 +5,7 @@ Changelog
|
|||||||
|
|
||||||
Changes in 0.8.2
|
Changes in 0.8.2
|
||||||
================
|
================
|
||||||
|
- Added pre_save_post_validation signal (#345)
|
||||||
- DateTimeField now auto converts valid datetime isostrings into dates (#343)
|
- DateTimeField now auto converts valid datetime isostrings into dates (#343)
|
||||||
- DateTimeField now uses dateutil for parsing if available (#343)
|
- DateTimeField now uses dateutil for parsing if available (#343)
|
||||||
- Fixed Doc.objects(read_preference=X) not setting read preference (#352)
|
- Fixed Doc.objects(read_preference=X) not setting read preference (#352)
|
||||||
|
@ -195,7 +195,7 @@ class Document(BaseDocument):
|
|||||||
the cascade save using cascade_kwargs which overwrites the
|
the cascade save using cascade_kwargs which overwrites the
|
||||||
existing kwargs with custom values
|
existing kwargs with custom values
|
||||||
"""
|
"""
|
||||||
signals.pre_save_validation.send(self.__class__, document=self)
|
signals.pre_save.send(self.__class__, document=self)
|
||||||
|
|
||||||
if validate:
|
if validate:
|
||||||
self.validate(clean=clean)
|
self.validate(clean=clean)
|
||||||
@ -207,7 +207,7 @@ class Document(BaseDocument):
|
|||||||
|
|
||||||
created = ('_id' not in doc or self._created or force_insert)
|
created = ('_id' not in doc or self._created or force_insert)
|
||||||
|
|
||||||
signals.pre_save.send(self.__class__, document=self, created=created)
|
signals.pre_save_post_validation.send(self.__class__, document=self, created=created)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
collection = self._get_collection()
|
collection = self._get_collection()
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
__all__ = ['pre_init', 'post_init', 'pre_save_validation', 'pre_save',
|
__all__ = ['pre_init', 'post_init', 'pre_save', 'pre_save_post_validation',
|
||||||
'post_save', 'pre_delete', 'post_delete']
|
'post_save', 'pre_delete', 'post_delete']
|
||||||
|
|
||||||
signals_available = False
|
signals_available = False
|
||||||
@ -38,8 +38,8 @@ _signals = Namespace()
|
|||||||
|
|
||||||
pre_init = _signals.signal('pre_init')
|
pre_init = _signals.signal('pre_init')
|
||||||
post_init = _signals.signal('post_init')
|
post_init = _signals.signal('post_init')
|
||||||
pre_save_validation = _signals.signal('pre_save_validation')
|
|
||||||
pre_save = _signals.signal('pre_save')
|
pre_save = _signals.signal('pre_save')
|
||||||
|
pre_save_post_validation = _signals.signal('pre_save_post_validation')
|
||||||
post_save = _signals.signal('post_save')
|
post_save = _signals.signal('post_save')
|
||||||
pre_delete = _signals.signal('pre_delete')
|
pre_delete = _signals.signal('pre_delete')
|
||||||
post_delete = _signals.signal('post_delete')
|
post_delete = _signals.signal('post_delete')
|
||||||
|
2
setup.py
2
setup.py
@ -57,7 +57,7 @@ if sys.version_info[0] == 3:
|
|||||||
extra_opts['packages'].append("tests")
|
extra_opts['packages'].append("tests")
|
||||||
extra_opts['package_data'] = {"tests": ["fields/mongoengine.png", "fields/mongodb_leaf.png"]}
|
extra_opts['package_data'] = {"tests": ["fields/mongoengine.png", "fields/mongodb_leaf.png"]}
|
||||||
else:
|
else:
|
||||||
extra_opts['tests_require'] = ['nose', 'coverage', 'blinker', 'django>=1.4.2', 'PIL', 'jinja2==2.6', 'python-dateutil==1.5']
|
extra_opts['tests_require'] = ['nose', 'coverage', 'blinker', 'django>=1.4.2', 'PIL', 'jinja2==2.6', 'python-dateutil']
|
||||||
extra_opts['packages'] = find_packages(exclude=('tests',))
|
extra_opts['packages'] = find_packages(exclude=('tests',))
|
||||||
|
|
||||||
setup(name='mongoengine',
|
setup(name='mongoengine',
|
||||||
|
@ -40,12 +40,12 @@ class SignalTests(unittest.TestCase):
|
|||||||
signal_output.append('post_init signal, %s' % document)
|
signal_output.append('post_init signal, %s' % document)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def pre_save_validation(cls, sender, document, **kwargs):
|
def pre_save(cls, sender, document, **kwargs):
|
||||||
signal_output.append('pre_save_validation signal, %s' % document)
|
signal_output.append('pre_save signal,, %s' % document)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def pre_save(cls, sender, document, **kwargs):
|
def pre_save_post_validation(cls, sender, document, **kwargs):
|
||||||
signal_output.append('pre_save signal, %s' % document)
|
signal_output.append('pre_save_post_validation signal, %s' % document)
|
||||||
if 'created' in kwargs:
|
if 'created' in kwargs:
|
||||||
if kwargs['created']:
|
if kwargs['created']:
|
||||||
signal_output.append('Is created')
|
signal_output.append('Is created')
|
||||||
@ -98,13 +98,13 @@ class SignalTests(unittest.TestCase):
|
|||||||
def post_init(cls, sender, document, **kwargs):
|
def post_init(cls, sender, document, **kwargs):
|
||||||
signal_output.append('post_init Another signal, %s' % document)
|
signal_output.append('post_init Another signal, %s' % document)
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def pre_save_validation(cls, sender, document, **kwargs):
|
|
||||||
signal_output.append('pre_save_validation Another signal, %s' % document)
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def pre_save(cls, sender, document, **kwargs):
|
def pre_save(cls, sender, document, **kwargs):
|
||||||
signal_output.append('pre_save Another signal, %s' % document)
|
signal_output.append('pre_save Another signal, %s' % document)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def pre_save_post_validation(cls, sender, document, **kwargs):
|
||||||
|
signal_output.append('pre_save_post_validation Another signal, %s' % document)
|
||||||
if 'created' in kwargs:
|
if 'created' in kwargs:
|
||||||
if kwargs['created']:
|
if kwargs['created']:
|
||||||
signal_output.append('Is created')
|
signal_output.append('Is created')
|
||||||
@ -150,8 +150,8 @@ class SignalTests(unittest.TestCase):
|
|||||||
self.pre_signals = (
|
self.pre_signals = (
|
||||||
len(signals.pre_init.receivers),
|
len(signals.pre_init.receivers),
|
||||||
len(signals.post_init.receivers),
|
len(signals.post_init.receivers),
|
||||||
len(signals.pre_save_validation.receivers),
|
|
||||||
len(signals.pre_save.receivers),
|
len(signals.pre_save.receivers),
|
||||||
|
len(signals.pre_save_post_validation.receivers),
|
||||||
len(signals.post_save.receivers),
|
len(signals.post_save.receivers),
|
||||||
len(signals.pre_delete.receivers),
|
len(signals.pre_delete.receivers),
|
||||||
len(signals.post_delete.receivers),
|
len(signals.post_delete.receivers),
|
||||||
@ -161,8 +161,8 @@ class SignalTests(unittest.TestCase):
|
|||||||
|
|
||||||
signals.pre_init.connect(Author.pre_init, sender=Author)
|
signals.pre_init.connect(Author.pre_init, sender=Author)
|
||||||
signals.post_init.connect(Author.post_init, sender=Author)
|
signals.post_init.connect(Author.post_init, sender=Author)
|
||||||
signals.pre_save_validation.connect(Author.pre_save_validation, sender=Author)
|
|
||||||
signals.pre_save.connect(Author.pre_save, sender=Author)
|
signals.pre_save.connect(Author.pre_save, sender=Author)
|
||||||
|
signals.pre_save_post_validation.connect(Author.pre_save_post_validation, sender=Author)
|
||||||
signals.post_save.connect(Author.post_save, sender=Author)
|
signals.post_save.connect(Author.post_save, sender=Author)
|
||||||
signals.pre_delete.connect(Author.pre_delete, sender=Author)
|
signals.pre_delete.connect(Author.pre_delete, sender=Author)
|
||||||
signals.post_delete.connect(Author.post_delete, sender=Author)
|
signals.post_delete.connect(Author.post_delete, sender=Author)
|
||||||
@ -171,8 +171,8 @@ class SignalTests(unittest.TestCase):
|
|||||||
|
|
||||||
signals.pre_init.connect(Another.pre_init, sender=Another)
|
signals.pre_init.connect(Another.pre_init, sender=Another)
|
||||||
signals.post_init.connect(Another.post_init, sender=Another)
|
signals.post_init.connect(Another.post_init, sender=Another)
|
||||||
signals.pre_save_validation.connect(Another.pre_save_validation, sender=Another)
|
|
||||||
signals.pre_save.connect(Another.pre_save, sender=Another)
|
signals.pre_save.connect(Another.pre_save, sender=Another)
|
||||||
|
signals.pre_save_post_validation.connect(Another.pre_save_post_validation, sender=Another)
|
||||||
signals.post_save.connect(Another.post_save, sender=Another)
|
signals.post_save.connect(Another.post_save, sender=Another)
|
||||||
signals.pre_delete.connect(Another.pre_delete, sender=Another)
|
signals.pre_delete.connect(Another.pre_delete, sender=Another)
|
||||||
signals.post_delete.connect(Another.post_delete, sender=Another)
|
signals.post_delete.connect(Another.post_delete, sender=Another)
|
||||||
@ -185,8 +185,8 @@ class SignalTests(unittest.TestCase):
|
|||||||
signals.post_delete.disconnect(self.Author.post_delete)
|
signals.post_delete.disconnect(self.Author.post_delete)
|
||||||
signals.pre_delete.disconnect(self.Author.pre_delete)
|
signals.pre_delete.disconnect(self.Author.pre_delete)
|
||||||
signals.post_save.disconnect(self.Author.post_save)
|
signals.post_save.disconnect(self.Author.post_save)
|
||||||
|
signals.pre_save_post_validation.disconnect(self.Author.pre_save_post_validation)
|
||||||
signals.pre_save.disconnect(self.Author.pre_save)
|
signals.pre_save.disconnect(self.Author.pre_save)
|
||||||
signals.pre_save_validation.disconnect(self.Author.pre_save_validation)
|
|
||||||
signals.pre_bulk_insert.disconnect(self.Author.pre_bulk_insert)
|
signals.pre_bulk_insert.disconnect(self.Author.pre_bulk_insert)
|
||||||
signals.post_bulk_insert.disconnect(self.Author.post_bulk_insert)
|
signals.post_bulk_insert.disconnect(self.Author.post_bulk_insert)
|
||||||
|
|
||||||
@ -195,8 +195,8 @@ class SignalTests(unittest.TestCase):
|
|||||||
signals.post_delete.disconnect(self.Another.post_delete)
|
signals.post_delete.disconnect(self.Another.post_delete)
|
||||||
signals.pre_delete.disconnect(self.Another.pre_delete)
|
signals.pre_delete.disconnect(self.Another.pre_delete)
|
||||||
signals.post_save.disconnect(self.Another.post_save)
|
signals.post_save.disconnect(self.Another.post_save)
|
||||||
|
signals.pre_save_post_validation.disconnect(self.Another.pre_save_post_validation)
|
||||||
signals.pre_save.disconnect(self.Another.pre_save)
|
signals.pre_save.disconnect(self.Another.pre_save)
|
||||||
signals.pre_save_validation.disconnect(self.Another.pre_save_validation)
|
|
||||||
|
|
||||||
signals.post_save.disconnect(self.ExplicitId.post_save)
|
signals.post_save.disconnect(self.ExplicitId.post_save)
|
||||||
|
|
||||||
@ -204,8 +204,8 @@ class SignalTests(unittest.TestCase):
|
|||||||
post_signals = (
|
post_signals = (
|
||||||
len(signals.pre_init.receivers),
|
len(signals.pre_init.receivers),
|
||||||
len(signals.post_init.receivers),
|
len(signals.post_init.receivers),
|
||||||
len(signals.pre_save_validation.receivers),
|
|
||||||
len(signals.pre_save.receivers),
|
len(signals.pre_save.receivers),
|
||||||
|
len(signals.pre_save_post_validation.receivers),
|
||||||
len(signals.post_save.receivers),
|
len(signals.post_save.receivers),
|
||||||
len(signals.pre_delete.receivers),
|
len(signals.pre_delete.receivers),
|
||||||
len(signals.post_delete.receivers),
|
len(signals.post_delete.receivers),
|
||||||
@ -239,8 +239,8 @@ class SignalTests(unittest.TestCase):
|
|||||||
|
|
||||||
a1 = self.Author(name='Bill Shakespeare')
|
a1 = self.Author(name='Bill Shakespeare')
|
||||||
self.assertEqual(self.get_signal_output(a1.save), [
|
self.assertEqual(self.get_signal_output(a1.save), [
|
||||||
"pre_save_validation signal, Bill Shakespeare",
|
"pre_save signal,, Bill Shakespeare",
|
||||||
"pre_save signal, Bill Shakespeare",
|
"pre_save_post_validation signal, Bill Shakespeare",
|
||||||
"Is created",
|
"Is created",
|
||||||
"post_save signal, Bill Shakespeare",
|
"post_save signal, Bill Shakespeare",
|
||||||
"Is created"
|
"Is created"
|
||||||
@ -249,8 +249,8 @@ class SignalTests(unittest.TestCase):
|
|||||||
a1.reload()
|
a1.reload()
|
||||||
a1.name = 'William Shakespeare'
|
a1.name = 'William Shakespeare'
|
||||||
self.assertEqual(self.get_signal_output(a1.save), [
|
self.assertEqual(self.get_signal_output(a1.save), [
|
||||||
"pre_save_validation signal, William Shakespeare",
|
"pre_save signal,, William Shakespeare",
|
||||||
"pre_save signal, William Shakespeare",
|
"pre_save_post_validation signal, William Shakespeare",
|
||||||
"Is updated",
|
"Is updated",
|
||||||
"post_save signal, William Shakespeare",
|
"post_save signal, William Shakespeare",
|
||||||
"Is updated"
|
"Is updated"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user