aboutsummaryrefslogtreecommitdiff
path: root/src/mailman_pgp/database
diff options
context:
space:
mode:
authorJ08nY2017-06-09 17:41:24 +0200
committerJ08nY2017-06-09 17:41:24 +0200
commitb932ba4a32f208aa934bad8b4039e8c871b6715f (patch)
treec93f1277353928446dccaa4e16845fe9a83372b5 /src/mailman_pgp/database
parent25487795779c05ff8e97680550948443924b98c0 (diff)
downloadmailman-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__.py36
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()