Mark Sapiro pushed to branch master at GNU Mailman / Mailman Core
Commits:
69e94561 by Mark Sapiro at 2022-02-11T02:14:08+00:00
Always import owners/moderators with delivery enabled.
- - - - -
8bbffb6b by Mark Sapiro at 2022-02-11T02:14:08+00:00
Merge branch 'import' into 'master'
Always import owners/moderators with delivery enabled.
See merge request mailman/mailman!960
- - - - -
3 changed files:
- src/mailman/docs/NEWS.rst
- src/mailman/utilities/importer.py
- src/mailman/utilities/tests/test_import.py
Changes:
=====================================
src/mailman/docs/NEWS.rst
=====================================
@@ -35,6 +35,8 @@ Bugs fixed
can cause Mailman to crash trying to disable that plugin. (Closes #724)
* Fix a bug where the ``PIDWatcher()`` iterates over internal dict while
it can be updated during that time. (Closes #724)
+* The ``mailman import21`` now always imports owners/moderators with
+ ``DeliveryStatus.enabled``. (Closes #977)
REST
====
=====================================
src/mailman/utilities/importer.py
=====================================
@@ -682,18 +682,23 @@ def _import_roster(mlist, config_dict, members, role,
action=None):
# if email in config_dict.get('passwords', {}):
# user.password = config.password_context.encrypt(
# config_dict['passwords'][email])
- # delivery_status
- oldds = config_dict.get('delivery_status', {}).get(email, (0, 0))[0]
- if oldds == 0:
+ # delivery_status - for members. owners/moderators are always enabled.
+ if role in (MemberRole.owner, MemberRole.moderator):
member.preferences.delivery_status = DeliveryStatus.enabled
- elif oldds == 1:
- member.preferences.delivery_status = DeliveryStatus.unknown
- elif oldds == 2:
- member.preferences.delivery_status = DeliveryStatus.by_user
- elif oldds == 3:
- member.preferences.delivery_status = DeliveryStatus.by_moderator
- elif oldds == 4:
- member.preferences.delivery_status = DeliveryStatus.by_bounces
+ else:
+ oldds = config_dict.get(
+ 'delivery_status', {}).get(email, (0, 0))[0]
+ if oldds == 0:
+ member.preferences.delivery_status = DeliveryStatus.enabled
+ elif oldds == 1:
+ member.preferences.delivery_status = DeliveryStatus.unknown
+ elif oldds == 2:
+ member.preferences.delivery_status = DeliveryStatus.by_user
+ elif oldds == 3:
+ member.preferences.delivery_status = \
+ DeliveryStatus.by_moderator
+ elif oldds == 4:
+ member.preferences.delivery_status = DeliveryStatus.by_bounces
# Moderation.
if prefs is not None:
# We're adding a member.
=====================================
src/mailman/utilities/tests/test_import.py
=====================================
@@ -1130,6 +1130,21 @@ class TestRosterImport(unittest.TestCase):
member = self._mlist.members.get_member('[email protected]')
self.assertEqual(member.user, user)
+ def test_owner_and_moderator_delivery_enabled(self):
+ # If an owner or moderator is a member with delivery disabled, the
+ # imported owner/moderator must have delivery enabled.
+ # Set anne and bob's delivery status disabled by user.
+ self._pckdict['delivery_status'] = {
+ '[email protected]': (2, 1612366744.399534),
+ '[email protected]': (2, 1612366744.399534)}
+ import_config_pck(self._mlist, self._pckdict)
+ self.assertEqual(
+ self._mlist.owners.get_member('[email protected]').delivery_status,
+ DeliveryStatus.enabled)
+ self.assertEqual(
+ self._mlist.moderators.get_member('[email protected]').
+ delivery_status, DeliveryStatus.enabled)
+
def test_owner_and_moderator_not_lowercase(self):
# In the v2.1 pickled dict, the owner and moderator lists are not
# necessarily lowercased already.
View it on GitLab:
https://gitlab.com/mailman/mailman/-/compare/ede58f0209cbdc360a4a93584da4f165c3580531...8bbffb6b0bca6207b567ecf24cdf503516b46d39
--
View it on GitLab:
https://gitlab.com/mailman/mailman/-/compare/ede58f0209cbdc360a4a93584da4f165c3580531...8bbffb6b0bca6207b567ecf24cdf503516b46d39
You're receiving this email because of your account on gitlab.com.
_______________________________________________
Mailman-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/mailman-checkins.python.org/
Member address: [email protected]