diff options
| author | J08nY | 2017-06-09 17:41:24 +0200 |
|---|---|---|
| committer | J08nY | 2017-06-09 17:41:24 +0200 |
| commit | b932ba4a32f208aa934bad8b4039e8c871b6715f (patch) | |
| tree | c93f1277353928446dccaa4e16845fe9a83372b5 /src/mailman_pgp/database | |
| parent | 25487795779c05ff8e97680550948443924b98c0 (diff) | |
| download | mailman-pgp-b932ba4a32f208aa934bad8b4039e8c871b6715f.tar.gz mailman-pgp-b932ba4a32f208aa934bad8b4039e8c871b6715f.tar.zst mailman-pgp-b932ba4a32f208aa934bad8b4039e8c871b6715f.zip | |
Diffstat (limited to 'src/mailman_pgp/database')
| -rw-r--r-- | src/mailman_pgp/database/__init__.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/mailman_pgp/database/__init__.py b/src/mailman_pgp/database/__init__.py new file mode 100644 index 0000000..b799942 --- /dev/null +++ b/src/mailman_pgp/database/__init__.py @@ -0,0 +1,36 @@ +"""""" + +from contextlib import contextmanager + +from mailman.config import config as mailman_config +from mailman.utilities.string import expand +from public import public +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker + +from mailman_pgp.config import config +from mailman_pgp.model.base import Base + + +@public +class Database: + def __init__(self): + url = config.get('db', 'url') + self.url = expand(url, None, mailman_config.paths) + self.engine = create_engine(self.url) + Session = sessionmaker(bind=self.engine) + self.session = Session() + Base.metadata.create_all(self.engine) + self.session.commit() + + +@public +@contextmanager +def transaction(): + try: + yield + except: + config.db.session.abort() + raise + else: + config.db.session.commit() |
