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('b...@example.com')
         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'] = {
+            'a...@example.com': (2, 1612366744.399534),
+            'b...@example.com': (2, 1612366744.399534)}
+        import_config_pck(self._mlist, self._pckdict)
+        self.assertEqual(
+            self._mlist.owners.get_member('a...@example.com').delivery_status,
+            DeliveryStatus.enabled)
+        self.assertEqual(
+            self._mlist.moderators.get_member('b...@example.com').
+            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 -- mailman-checkins@python.org
To unsubscribe send an email to mailman-checkins-le...@python.org
https://mail.python.org/mailman3/lists/mailman-checkins.python.org/
Member address: arch...@jab.org

Reply via email to