summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mailman/database/base.py57
-rw-r--r--src/mailman/database/model.py1
-rw-r--r--src/mailman/database/sqlite.py2
-rw-r--r--src/mailman/model/address.py1
-rw-r--r--src/mailman/model/listmanager.py4
5 files changed, 21 insertions, 44 deletions
diff --git a/src/mailman/database/base.py b/src/mailman/database/base.py
index 0bc530e6b..b66513a2c 100644
--- a/src/mailman/database/base.py
+++ b/src/mailman/database/base.py
@@ -31,6 +31,7 @@ from lazr.config import as_boolean
from pkg_resources import resource_listdir, resource_string
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
+from sqlalchemy.orm.session import Session
from zope.interface import implementer
from mailman.config import config
@@ -55,6 +56,7 @@ class SABaseDatabase:
def __init__(self):
self.url = None
self.store = None
+ self.transaction = None
def begin(self):
pass
@@ -101,10 +103,22 @@ class SABaseDatabase:
self.url = url
self._prepare(url)
self.engine = create_engine(url)
- Session = sessionmaker(bind=self.engine)
- self.store = Session()
+ session = sessionmaker(bind=self.engine)
+ self.store = session()
self.store.commit()
+ # def initialize_testing(self):
+ # url = expand(config.database.url, config.paths)
+ # log.debug('Database url: %s', url)
+ # self.url = url
+ # self._prepare(url)
+ # self.engine = create_engine(url)
+ # connection = self.engine.connect()
+ # self.transaction = connection.begin_nested()
+ # self.store = Session(connection)
+ # self.store.commit()
+
+
def load_migrations(self, until=None):
"""Load schema migrations.
@@ -114,45 +128,6 @@ class SABaseDatabase:
"""
from mailman.database.model import Model
Model.metadata.create_all(self.engine)
- # migrations_path = config.database.migrations_path
- # if '.' in migrations_path:
- # parent, dot, child = migrations_path.rpartition('.')
- # else:
- # parent = migrations_path
- # child = ''
- # # If the database does not yet exist, load the base schema.
- # filenames = sorted(resource_listdir(parent, child))
- # # Find out which schema migrations have already been loaded.
- # if self._database_exists(self.store):
- # versions = set(version.version for version in
- # self.store.query(Version, component='schema'))
- # else:
- # versions = set()
- # for filename in filenames:
- # module_fn, extension = os.path.splitext(filename)
- # if extension != '.py':
- # continue
- # parts = module_fn.split('_')
- # if len(parts) < 2:
- # continue
- # version = parts[1].strip()
- # if len(version) == 0:
- # # Not a schema migration file.
- # continue
- # if version in versions:
- # log.debug('already migrated to %s', version)
- # continue
- # if until is not None and version > until:
- # # We're done.
- # break
- # module_path = migrations_path + '.' + module_fn
- # __import__(module_path)
- # upgrade = getattr(sys.modules[module_path], 'upgrade', None)
- # if upgrade is None:
- # continue
- # log.debug('migrating db to %s: %s', version, module_path)
- # upgrade(self, self.store, version, module_path)
- # self.commit()
def load_sql(self, store, sql):
"""Load the given SQL into the store.
diff --git a/src/mailman/database/model.py b/src/mailman/database/model.py
index 0cb60b7cd..ab071e1d3 100644
--- a/src/mailman/database/model.py
+++ b/src/mailman/database/model.py
@@ -57,6 +57,7 @@ class ModelMeta(object):
# Make sure this is deterministic, by sorting on the storm table name.
# classes = sorted(ModelMeta._class_registry,
# key=attrgetter('__tablename__'))
+ # print("\n\n" + str(classes) + "\n\n")
# for model_class in classes:
# store.query(model_class).delete()
diff --git a/src/mailman/database/sqlite.py b/src/mailman/database/sqlite.py
index ec404b9c3..0594d9091 100644
--- a/src/mailman/database/sqlite.py
+++ b/src/mailman/database/sqlite.py
@@ -72,7 +72,7 @@ def _cleanup(self, tempdir):
def make_temporary(database):
"""Adapts by monkey patching an existing SQLite IDatabase."""
tempdir = tempfile.mkdtemp()
- url = 'sqlite:///' + os.path.join(tempdir, 'mailman.db')
+ url = 'sqlite:///' + os.path.join(tempdir, 'mailman.db')
with configuration('database', url=url):
database.initialize()
database._cleanup = types.MethodType(
diff --git a/src/mailman/model/address.py b/src/mailman/model/address.py
index 7203a31a5..fbe862829 100644
--- a/src/mailman/model/address.py
+++ b/src/mailman/model/address.py
@@ -60,6 +60,7 @@ class Address(Model):
backref=backref('Address', uselist=False))
def __init__(self, email, display_name):
+ super(Address, self).__init__()
getUtility(IEmailValidator).validate(email)
lower_case = email.lower()
self.email = lower_case
diff --git a/src/mailman/model/listmanager.py b/src/mailman/model/listmanager.py
index 1279de6cc..3806f9497 100644
--- a/src/mailman/model/listmanager.py
+++ b/src/mailman/model/listmanager.py
@@ -99,7 +99,7 @@ class ListManager:
@dbconnection
def names(self, store):
"""See `IListManager`."""
- result_set = store.query(MailingList).all()
+ result_set = store.query(MailingList)
for mail_host, list_name in result_set.values(MailingList.mail_host,
MailingList.list_name):
yield '{0}@{1}'.format(list_name, mail_host)
@@ -108,7 +108,7 @@ class ListManager:
@dbconnection
def list_ids(self, store):
"""See `IListManager`."""
- result_set = store.query(MailingList).all()
+ result_set = store.query(MailingList)
for list_id in result_set.values(MailingList._list_id):
yield list_id