Fix generates decorator

This commit is contained in:
Konsta Vesterinen
2014-01-04 13:25:25 +02:00
parent 8945dc1fe5
commit 91d4c00a84
2 changed files with 15 additions and 15 deletions

View File

@@ -6,11 +6,23 @@ import six
class AttributeValueGenerator(object):
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()
def reset(self):
self.generator_registry = defaultdict(list)
self.listeners_registered = False
self.generator_registry = defaultdict(list)
def generator_wrapper(self, func, attr):
def wrapper(self, *args, **kwargs):
@@ -29,16 +41,8 @@ class AttributeValueGenerator(object):
def register_listeners(self):
if not self.listeners_registered:
sa.event.listen(
sa.orm.mapper,
'mapper_configured',
self.update_generator_registry
)
sa.event.listen(
sa.orm.session.Session,
'before_flush',
self.update_generated_properties
)
for args in self.listener_args:
sa.event.listen(*args)
self.listeners_registered = True
def update_generator_registry(self, mapper, class_):

View File

@@ -5,10 +5,6 @@ from tests import TestCase
class GeneratesTestCase(TestCase):
def teardown_method(self, method):
TestCase.teardown_method(self, method)
generator.reset()
def test_generates_value_before_flush(self):
article = self.Article()
article.name = u'some article name'