diff options
author | Ondřej Nový <novy@ondrej.org> | 2016-02-14 19:26:09 +0100 |
---|---|---|
committer | Ondřej Nový <novy@ondrej.org> | 2016-02-14 19:26:09 +0100 |
commit | a85231280accdfec8ef9cf67213ff706eb242889 (patch) | |
tree | c84bb817ccf5bae224e473bb15959a4fb97d41ba /factory/alchemy.py | |
parent | d92aeedcf27326270cb3dcd8b780566728a489a9 (diff) | |
parent | 41560aa54e83fe539c0a5a1935bcaaf6363a522c (diff) | |
download | factory-boy-a85231280accdfec8ef9cf67213ff706eb242889.tar factory-boy-a85231280accdfec8ef9cf67213ff706eb242889.tar.gz |
Merge tag '2.6.1' into debian/unstable
Release of factory_boy 2.6.1
Diffstat (limited to 'factory/alchemy.py')
-rw-r--r-- | factory/alchemy.py | 21 |
1 files changed, 3 insertions, 18 deletions
diff --git a/factory/alchemy.py b/factory/alchemy.py index 3c91411..a9aab23 100644 --- a/factory/alchemy.py +++ b/factory/alchemy.py @@ -19,7 +19,6 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. from __future__ import unicode_literals -from sqlalchemy.sql.functions import max from . import base @@ -28,6 +27,7 @@ class SQLAlchemyOptions(base.FactoryOptions): def _build_default_options(self): return super(SQLAlchemyOptions, self)._build_default_options() + [ base.OptionDefault('sqlalchemy_session', None, inherit=True), + base.OptionDefault('force_flush', False, inherit=True), ] @@ -38,27 +38,12 @@ class SQLAlchemyModelFactory(base.Factory): class Meta: abstract = True - _OLDSTYLE_ATTRIBUTES = base.Factory._OLDSTYLE_ATTRIBUTES.copy() - _OLDSTYLE_ATTRIBUTES.update({ - 'FACTORY_SESSION': 'sqlalchemy_session', - }) - - @classmethod - def _setup_next_sequence(cls, *args, **kwargs): - """Compute the next available PK, based on the 'pk' database field.""" - session = cls._meta.sqlalchemy_session - model = cls._meta.model - pk = getattr(model, model.__mapper__.primary_key[0].name) - max_pk = session.query(max(pk)).one()[0] - if isinstance(max_pk, int): - return max_pk + 1 if max_pk else 1 - else: - return 1 - @classmethod def _create(cls, model_class, *args, **kwargs): """Create an instance of the model, and save it to the database.""" session = cls._meta.sqlalchemy_session obj = model_class(*args, **kwargs) session.add(obj) + if cls._meta.force_flush: + session.flush() return obj |