summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAbhilash Raj2014-09-18 19:21:57 +0530
committerAbhilash Raj2014-09-18 19:21:57 +0530
commitc928104c5e49f443ecbe6c21581ebd98175f2451 (patch)
treee72f07f4b52697d1dac58a86a312abb38baf3530 /src
parentf774c7d7fc1f67b80ac701b3d640e2fab24422b4 (diff)
downloadmailman-c928104c5e49f443ecbe6c21581ebd98175f2451.tar.gz
mailman-c928104c5e49f443ecbe6c21581ebd98175f2451.tar.zst
mailman-c928104c5e49f443ecbe6c21581ebd98175f2451.zip
reset database by purging all data instead of dropping schema and recreating it
Diffstat (limited to 'src')
-rw-r--r--src/mailman/database/model.py19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/mailman/database/model.py b/src/mailman/database/model.py
index ab071e1d3..dedd7a34b 100644
--- a/src/mailman/database/model.py
+++ b/src/mailman/database/model.py
@@ -24,10 +24,13 @@ __all__ = [
'Model',
]
+
+import contextlib
from operator import attrgetter
from sqlalchemy.ext.declarative import declarative_base
+from mailman.config import config
class ModelMeta(object):
"""Do more magic on table classes."""
@@ -51,14 +54,12 @@ class ModelMeta(object):
@staticmethod
def _reset(db):
- Model.metadata.drop_all(db.engine)
- Model.metadata.create_all(db.engine)
-
- # 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()
+ meta = Model.metadata
+ engine = config.db.engine
+ with contextlib.closing(engine.connect()) as con:
+ trans = con.begin()
+ for table in reversed(meta.sorted_tables):
+ con.execute(table.delete())
+ trans.commit()
Model = declarative_base(cls=ModelMeta)