diff options
| author | Aurélien Bompard | 2016-03-23 15:48:44 +0100 |
|---|---|---|
| committer | Barry Warsaw | 2016-03-31 18:29:27 -0400 |
| commit | ac57c6747200078591f291e9f46f257b3d6c5542 (patch) | |
| tree | df9bc394c6f20b6e1beb57d5be6988b33e1432b0 /src | |
| parent | ed738199121d728f49960dd4fd89fd9641b01d21 (diff) | |
| download | mailman-ac57c6747200078591f291e9f46f257b3d6c5542.tar.gz mailman-ac57c6747200078591f291e9f46f257b3d6c5542.tar.zst mailman-ac57c6747200078591f291e9f46f257b3d6c5542.zip | |
Diffstat (limited to 'src')
| -rw-r--r-- | src/mailman/database/alembic/versions/7b254d88f122_members_and_list_moderation_action.py | 18 |
1 files changed, 14 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 fb02ccaed..45d1ee67f 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 @@ -1,7 +1,7 @@ """Members and list moderation action Revision ID: 7b254d88f122 -Revises: bfda02ab3a9b +Revises: d4fbb4fd34ca Create Date: 2016-02-10 11:31:04.233619 This is a data-only migration. If a member has the same moderation action as @@ -42,11 +42,21 @@ members_query = member_table.select().where(sa.or_( member_table.c.role == MemberRole.nonmember, )) +DEFAULT_ACTION_CACHE = {} def _get_default_action(connection, member): - mailing_list = connection.execute(mailinglist_table.select().where( - mailinglist_table.c.list_id == member['list_id'])).fetchone() - return mailing_list['default_{}_action'.format(member['role'].name)] + list_id = member['list_id'] + propname = 'default_{}_action'.format(member['role'].name) + try: + action = DEFAULT_ACTION_CACHE[list_id][propname] + except KeyError: + mailing_list = connection.execute(mailinglist_table.select().where( + mailinglist_table.c.list_id == list_id)).fetchone() + action = mailing_list[propname] + if list_id not in DEFAULT_ACTION_CACHE: + DEFAULT_ACTION_CACHE[list_id] = {} + DEFAULT_ACTION_CACHE[list_id][propname] = action + return action def upgrade(): |
