summaryrefslogtreecommitdiff
path: root/src/mailman/database/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/database/base.py')
-rw-r--r--src/mailman/database/base.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/mailman/database/base.py b/src/mailman/database/base.py
index e360dcedf..e49d512c0 100644
--- a/src/mailman/database/base.py
+++ b/src/mailman/database/base.py
@@ -25,6 +25,8 @@ __all__ = [
import logging
+from alembic import command
+from alembic.config import Config
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from zope.interface import implementer
@@ -32,6 +34,7 @@ from zope.interface import implementer
from mailman.config import config
from mailman.interfaces.database import IDatabase
from mailman.utilities.string import expand
+from mailman.utilities.modules import expand_path
log = logging.getLogger('mailman.config')
@@ -89,6 +92,18 @@ class SABaseDatabase:
"""
pass
+ def stamp(self, debug=False):
+ """Stamp the database with the latest Alembic version."""
+ # Newly created databases don't need migrations from Alembic, since
+ # create_all() ceates the latest schema. This patches the database
+ # with the latest Alembic version to add an entry in the
+ # alembic_version table.
+ alembic_cfg = Config()
+ alembic_cfg.set_main_option(
+ 'script_location', expand_path(config.database['alembic_scripts']))
+ command.stamp(alembic_cfg, 'head')
+
+
def initialize(self, debug=None):
"""See `IDatabase`."""
# Calculate the engine url.