iro/model/utils.py
author Sandro Knauß <knauss@netzguerilla.net>
Thu, 29 Mar 2012 17:21:46 +0200
branchdevel
changeset 259 5d9c24c2cb8d
parent 122 b55754aa4f96
child 261 6b28b135a919
permissions -rw-r--r--
iro.model.utils: adding docstrings
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     1
from sqlalchemy.orm import sessionmaker
96
883b25b0b760 using nonblocking api for sqlalchemy
Sandro Knauß <knauss@netzguerilla.net>
parents: 93
diff changeset
     2
122
b55754aa4f96 nun typs query into session object
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
     3
from .session import IroSession
259
5d9c24c2cb8d iro.model.utils: adding docstrings
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
     4
class WithSession(object):
5d9c24c2cb8d iro.model.utils: adding docstrings
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
     5
    '''a with statement for a database session connection.'''
5d9c24c2cb8d iro.model.utils: adding docstrings
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
     6
    def __init__(self, engine, autocommit=False):
5d9c24c2cb8d iro.model.utils: adding docstrings
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
     7
        """
5d9c24c2cb8d iro.model.utils: adding docstrings
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
     8
        :param `sqlalchemy.engine.base.Engine` engine: a valid sqlalchemy engine object (normally created via :func:`sqlalchemy.create_engine`).
5d9c24c2cb8d iro.model.utils: adding docstrings
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
     9
        :param boolean autocommit: autocommit after running the function.
122
b55754aa4f96 nun typs query into session object
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
    10
259
5d9c24c2cb8d iro.model.utils: adding docstrings
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    11
        .. automethod:: __enter__
5d9c24c2cb8d iro.model.utils: adding docstrings
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    12
        """
107
f11520354165 controller.database -> model.utils
Sandro Knauß <knauss@netzguerilla.net>
parents: 106
diff changeset
    13
        self.engine = engine
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    14
        self.autocommit=autocommit
96
883b25b0b760 using nonblocking api for sqlalchemy
Sandro Knauß <knauss@netzguerilla.net>
parents: 93
diff changeset
    15
    
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    16
    def __enter__(self):
122
b55754aa4f96 nun typs query into session object
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
    17
        self.session = sessionmaker(bind=self.engine, class_ = IroSession)()
259
5d9c24c2cb8d iro.model.utils: adding docstrings
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    18
        """returns a vaild session object"""
5d9c24c2cb8d iro.model.utils: adding docstrings
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    19
        self.session = sessionmaker(bind=self.engine)()
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    20
        return self.session
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    21
    
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    22
    def __exit__(self,exc_type, exc_value, traceback):
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    23
        if exc_type is None:
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    24
            if self.autocommit:
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    25
                self.session.commit()
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    26
        else:
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    27
            self.session.rollback()
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    28
        self.session.close()
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    29
96
883b25b0b760 using nonblocking api for sqlalchemy
Sandro Knauß <knauss@netzguerilla.net>
parents: 93
diff changeset
    30
115
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents: 114
diff changeset
    31