/src/djapian/utils/commiter.py
http://djapian.googlecode.com/ · Python · 42 lines · 31 code · 11 blank · 0 comment · 3 complexity · 14a8681c74aeb8adcc643c866d0f495d MD5 · raw file
- class Commiter(object):
- def __init__(self, begin, commit, cancel):
- self._begin = begin
- self._commit = commit
- self._cancel = cancel
- def begin_page(self):
- pass
- def begin_object(self):
- pass
- def commit_page(self):
- pass
- def commit_object(self):
- pass
- def cancel_page(self):
- pass
- def cancel_object(self):
- pass
- @classmethod
- def create(cls, commit_each):
- class _ConcreteCommiter(cls):
- pass
- prefix = commit_each and 'object' or 'page'
- for name in ('begin', 'commit', 'cancel'):
- def make_method(name):
- return lambda self: getattr(self, '_%s' % name)()
- setattr(
- _ConcreteCommiter,
- '%s_%s' % (name, prefix),
- make_method(name)
- )
- return _ConcreteCommiter