Fix generates decorator
This commit is contained in:
@@ -6,11 +6,23 @@ import six
|
|||||||
|
|
||||||
class AttributeValueGenerator(object):
|
class AttributeValueGenerator(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
self.listener_args = [
|
||||||
|
(
|
||||||
|
sa.orm.mapper,
|
||||||
|
'mapper_configured',
|
||||||
|
self.update_generator_registry
|
||||||
|
),
|
||||||
|
(
|
||||||
|
sa.orm.session.Session,
|
||||||
|
'before_flush',
|
||||||
|
self.update_generated_properties
|
||||||
|
)
|
||||||
|
]
|
||||||
self.reset()
|
self.reset()
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
self.generator_registry = defaultdict(list)
|
|
||||||
self.listeners_registered = False
|
self.listeners_registered = False
|
||||||
|
self.generator_registry = defaultdict(list)
|
||||||
|
|
||||||
def generator_wrapper(self, func, attr):
|
def generator_wrapper(self, func, attr):
|
||||||
def wrapper(self, *args, **kwargs):
|
def wrapper(self, *args, **kwargs):
|
||||||
@@ -29,16 +41,8 @@ class AttributeValueGenerator(object):
|
|||||||
|
|
||||||
def register_listeners(self):
|
def register_listeners(self):
|
||||||
if not self.listeners_registered:
|
if not self.listeners_registered:
|
||||||
sa.event.listen(
|
for args in self.listener_args:
|
||||||
sa.orm.mapper,
|
sa.event.listen(*args)
|
||||||
'mapper_configured',
|
|
||||||
self.update_generator_registry
|
|
||||||
)
|
|
||||||
sa.event.listen(
|
|
||||||
sa.orm.session.Session,
|
|
||||||
'before_flush',
|
|
||||||
self.update_generated_properties
|
|
||||||
)
|
|
||||||
self.listeners_registered = True
|
self.listeners_registered = True
|
||||||
|
|
||||||
def update_generator_registry(self, mapper, class_):
|
def update_generator_registry(self, mapper, class_):
|
||||||
|
@@ -5,10 +5,6 @@ from tests import TestCase
|
|||||||
|
|
||||||
|
|
||||||
class GeneratesTestCase(TestCase):
|
class GeneratesTestCase(TestCase):
|
||||||
def teardown_method(self, method):
|
|
||||||
TestCase.teardown_method(self, method)
|
|
||||||
generator.reset()
|
|
||||||
|
|
||||||
def test_generates_value_before_flush(self):
|
def test_generates_value_before_flush(self):
|
||||||
article = self.Article()
|
article = self.Article()
|
||||||
article.name = u'some article name'
|
article.name = u'some article name'
|
||||||
|
Reference in New Issue
Block a user