summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBarry Warsaw2016-04-01 11:39:25 -0400
committerBarry Warsaw2016-04-01 11:39:25 -0400
commitafdd3b6deb32cd8cfdad291aba173a63064514f8 (patch)
treece040849bcc0d0feb27b312685f5f4afbbaa4f80 /src
parent1ac8bf8b92c92256ee9e6ec9d028ddfbd28a5982 (diff)
downloadmailman-afdd3b6deb32cd8cfdad291aba173a63064514f8.tar.gz
mailman-afdd3b6deb32cd8cfdad291aba173a63064514f8.tar.zst
mailman-afdd3b6deb32cd8cfdad291aba173a63064514f8.zip
Diffstat (limited to 'src')
-rw-r--r--src/mailman/database/alembic/versions/7b254d88f122_members_and_list_moderation_action.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/mailman/database/alembic/versions/7b254d88f122_members_and_list_moderation_action.py b/src/mailman/database/alembic/versions/7b254d88f122_members_and_list_moderation_action.py
index 45d1ee67f..09aedc640 100644
--- a/src/mailman/database/alembic/versions/7b254d88f122_members_and_list_moderation_action.py
+++ b/src/mailman/database/alembic/versions/7b254d88f122_members_and_list_moderation_action.py
@@ -10,16 +10,20 @@ fallback to the list's default.
"""
-# revision identifiers, used by Alembic.
-revision = '7b254d88f122'
-down_revision = 'd4fbb4fd34ca'
import sqlalchemy as sa
+
from alembic import op
from mailman.database.types import Enum
from mailman.interfaces.action import Action
from mailman.interfaces.member import MemberRole
+
+# revision identifiers, used by Alembic.
+revision = '7b254d88f122'
+down_revision = 'd4fbb4fd34ca'
+
+
mailinglist_table = sa.sql.table(
'mailinglist',
sa.sql.column('id', sa.Integer),
@@ -28,6 +32,7 @@ mailinglist_table = sa.sql.table(
sa.sql.column('default_nonmember_action', Enum(Action)),
)
+
member_table = sa.sql.table(
'member',
sa.sql.column('id', sa.Integer),
@@ -36,14 +41,17 @@ member_table = sa.sql.table(
sa.sql.column('moderation_action', Enum(Action)),
)
+
# This migration only considers members and nonmembers.
members_query = member_table.select().where(sa.or_(
member_table.c.role == MemberRole.member,
member_table.c.role == MemberRole.nonmember,
))
+
DEFAULT_ACTION_CACHE = {}
+
def _get_default_action(connection, member):
list_id = member['list_id']
propname = 'default_{}_action'.format(member['role'].name)
@@ -75,7 +83,7 @@ def upgrade():
def downgrade():
connection = op.get_bind()
for member in connection.execute(members_query.where(
- member_table.c.moderation_action == None)).fetchall():
+ member_table.c.moderation_action == None)).fetchall(): # noqa
default_action = _get_default_action(connection, member)
# Use the mailing list's default action
connection.execute(member_table.update().where(