Hello community,

here is the log from the commit of package python-django-mailman3 for 
openSUSE:Factory checked in at 2020-08-04 20:23:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-django-mailman3 (Old)
 and      /work/SRC/openSUSE:Factory/.python-django-mailman3.new.3592 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-django-mailman3"

Tue Aug  4 20:23:38 2020 rev:3 rq:824276 version:1.3.4

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-django-mailman3/python-django-mailman3.changes
    2020-05-13 22:56:37.631072800 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-django-mailman3.new.3592/python-django-mailman3.changes
  2020-08-04 20:23:51.629012678 +0200
@@ -1,0 +2,7 @@
+Tue Aug  4 02:04:03 UTC 2020 - Stasiek Michalski <stas...@michalski.cc>
+
+- Update to 1.3.4
+  * Fix a bug caused by bumping to Mailman API 3.1 in version 1.3.3 which
+    resulted in 404 errors for some users. 
+
+-------------------------------------------------------------------

Old:
----
  django-mailman3-1.3.3rc1.tar.gz

New:
----
  django-mailman3-1.3.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-django-mailman3.spec ++++++
--- /var/tmp/diff_new_pack.da3OvS/_old  2020-08-04 20:23:53.485012915 +0200
+++ /var/tmp/diff_new_pack.da3OvS/_new  2020-08-04 20:23:53.489012915 +0200
@@ -19,7 +19,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define skip_python2 1
 Name:           python-django-mailman3
-Version:        1.3.3rc1
+Version:        1.3.4
 Release:        0
 Summary:        Django library to help interaction with Mailman
 License:        GPL-3.0-only

++++++ django-mailman3-1.3.3rc1.tar.gz -> django-mailman3-1.3.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-mailman3-1.3.3rc1/PKG-INFO 
new/django-mailman3-1.3.4/PKG-INFO
--- old/django-mailman3-1.3.3rc1/PKG-INFO       2020-05-10 02:21:24.000000000 
+0200
+++ new/django-mailman3-1.3.4/PKG-INFO  2020-06-05 22:21:52.866937900 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: django-mailman3
-Version: 1.3.3rc1
+Version: 1.3.4
 Summary: Django library to help interaction with Mailman
 Home-page: https://gitlab.com/mailman/django-mailman3
 Maintainer: Mailman Developers
@@ -20,14 +20,24 @@
         NEWS
         ====
         
-        1.3.3rc1 (2020-05-09)
-        ---------------------
+        1.3.4 (2020-06-05)
+        ------------------
+        * Fix a bug caused by bumping to Mailman API 3.1 in version 1.3.3 which
+          resulted in 404 errors for some users. (Closes #35)
+        
+        
+        1.3.3 (2020-06-01)
+        ------------------
         
         - Hide "Account Connections" tab in accounts if no social account 
providers are
           installed. (See !54)
         - Use bold font for form labels (See !82)
         - Update a user's preferred_address in Mailman Core when a user 
updates their
           primary address in Profile. (Closes #32)
+        - Use Mailman's API version 3.1 to get Hex UUIDs instead of integer.
+        - Caught a LookupError when scrubbing an attachment with an unknown 
charset.
+          (Closes #12)
+        - Properly scrub the content of message/rfc822 parts.  (Closes #34)
         
         License
         =======
@@ -35,7 +45,7 @@
         Django-mailman is licensed under the
         `GPL v3.0 <http://www.gnu.org/licenses/gpl-3.0.html>`_
         
-        Copyright (C) 2017-2019 by the Free Software Foundation, Inc.
+        Copyright (C) 2017-2020 by the Free Software Foundation, Inc.
         
 Keywords: mailman django
 Platform: UNKNOWN
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-mailman3-1.3.3rc1/README.rst 
new/django-mailman3-1.3.4/README.rst
--- old/django-mailman3-1.3.3rc1/README.rst     2020-05-10 02:20:30.000000000 
+0200
+++ new/django-mailman3-1.3.4/README.rst        2020-06-05 22:21:30.000000000 
+0200
@@ -12,14 +12,24 @@
 NEWS
 ====
 
-1.3.3rc1 (2020-05-09)
----------------------
+1.3.4 (2020-06-05)
+------------------
+* Fix a bug caused by bumping to Mailman API 3.1 in version 1.3.3 which
+  resulted in 404 errors for some users. (Closes #35)
+
+
+1.3.3 (2020-06-01)
+------------------
 
 - Hide "Account Connections" tab in accounts if no social account providers are
   installed. (See !54)
 - Use bold font for form labels (See !82)
 - Update a user's preferred_address in Mailman Core when a user updates their
   primary address in Profile. (Closes #32)
+- Use Mailman's API version 3.1 to get Hex UUIDs instead of integer.
+- Caught a LookupError when scrubbing an attachment with an unknown charset.
+  (Closes #12)
+- Properly scrub the content of message/rfc822 parts.  (Closes #34)
 
 License
 =======
@@ -27,4 +37,4 @@
 Django-mailman is licensed under the
 `GPL v3.0 <http://www.gnu.org/licenses/gpl-3.0.html>`_
 
-Copyright (C) 2017-2019 by the Free Software Foundation, Inc.
+Copyright (C) 2017-2020 by the Free Software Foundation, Inc.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-mailman3-1.3.3rc1/django_mailman3/lib/mailman.py 
new/django-mailman3-1.3.4/django_mailman3/lib/mailman.py
--- old/django-mailman3-1.3.3rc1/django_mailman3/lib/mailman.py 2020-05-10 
01:19:33.000000000 +0200
+++ new/django-mailman3-1.3.4/django_mailman3/lib/mailman.py    2020-06-05 
22:07:12.000000000 +0200
@@ -35,7 +35,7 @@
 logger = logging.getLogger(__name__)
 
 
-def get_mailman_client(api_version='3.0'):
+def get_mailman_client(api_version='3.1'):
     """Return an instance of Mailman Client.
 
     :param api_version: The API version for Mailman Core to use.
@@ -51,13 +51,36 @@
 
 
 def get_mailman_user(user):
+    """Given a Django user, return the Mailman's user object.
+
+    If the user does not exist, we will try to create one.  If neither of the
+    get or create options work, perhaps because API is un-reachable, we return
+    a None value.
+
+    :param user: Instance of a Django user.
+    :returns: Mailman user or None if Mailman API isn't available.
+    :rtype: :class:`mailmanclient.User`
+    """
     # Only cache the mailman user_id, not the whole user instance, because
     # mailmanclient is not pickle-safe
     cache_key = "User:%s:mailman_user_id" % user.id
     mm_user_id = cache.get(cache_key)
     try:
         mm_client = get_mailman_client()
-        if mm_user_id is None:
+        mm_user = None
+        if mm_user_id is not None:
+            # Due upgrade from Mailman API 3.0 to 3.1, integer user_id can
+            # return 404 if the API version used was 3.1 (which has user_ids as
+            # UUIDs). So, we are going to lookup with email if the cached
+            # user_id returns 404.
+            try:
+                mm_user = mm_client.get_user(mm_user_id)
+            except HTTPError as e:
+                if e.code != 404:
+                    raise
+        # So, either the user_id wasn't cached or the cached user_id didn't
+        # return a valid user. Now lookup with user's email.
+        if mm_user is None:
             try:
                 mm_user = mm_client.get_user(user.email)
             except HTTPError as e:
@@ -69,10 +92,9 @@
                 # know if the registration that was used verified it.
                 logger.info("Created Mailman user for %s (%s)",
                             user.username, user.email)
+            # Update the cache to avoid a lookup next time.
             cache.set(cache_key, mm_user.user_id, None)
-            return mm_user
-        else:
-            return mm_client.get_user(mm_user_id)
+        return mm_user
     except (HTTPError, MailmanConnectionError) as e:
         logger.warning(
             "Error getting or creating the Mailman user of %s (%s): %s",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-mailman3-1.3.3rc1/django_mailman3/lib/scrub.py 
new/django-mailman3-1.3.4/django_mailman3/lib/scrub.py
--- old/django-mailman3-1.3.3rc1/django_mailman3/lib/scrub.py   2019-03-27 
07:08:58.000000000 +0100
+++ new/django-mailman3-1.3.4/django_mailman3/lib/scrub.py      2020-06-05 
19:02:23.000000000 +0200
@@ -92,14 +92,14 @@
             if ctype == 'text/plain':
                 if part.is_attachment():
                     attachments.append(self._parse_attachment(part, part_num))
-                    part.set_content('')
+                    part.set_content('\n')
             elif (ctype == 'text/html' and self.sanitize ==
                   Sanitize.SANITIZE_HTML):
                 attachments.append(self._parse_attachment(part, part_num))
-                part.set_content('')
+                part.set_content('\n')
             elif ctype == 'message/rfc822':
                 attachments.append(self._parse_attachment(part, part_num))
-                part.set_content('')
+                part.set_content('\n')
             elif part.get_payload() and not part.is_multipart():
                 attachments.append(self._parse_attachment(part, part_num))
         return attachments
@@ -150,21 +150,28 @@
         :type filter_html: Bool
         """
         ctype = part.get_content_type()
-        # Get the charset of the message, if not set, try to guess it's value.
-        # When guess is True, it will never return None.
         charset = self._get_charset(part, default=None, guess=False)
-        payload = part.get_content()
-        # get_content can give either bytes or str, based on whether it was
-        # able to decode the payload. If it is str, return it as it is,
-        # otherwise, try to decode it using the guessed charset.
-        if not isinstance(payload, str):
-            decodedpayload = part.get_payload(decode=True)
+        try:
+            payload = part.get_content()
+        except LookupError as e:
+            payload = "Can't retrieve content: {}".format(e)
+        # get_content will raise KeyError if called on a multipart part.  We
+        # never call _parse_attachment() on multipart parts, so that's OK.
+        # We have seen LookupError if the part's charset is unknown, so catch
+        # that and just return a message.
+        # XXX We could try some known charsets, but for now we just punt.
+        #
+        # get_content will return a string for text/* parts, an
+        # EmailMessage object for message/rfc822 parts and bytes for other
+        # content types.  text/* parts will be CTE decoded and decoded per
+        # their declared charset.  Other parts will be CTE decoded.
+        if ctype == 'message/rfc822':
+            # Return message/rfc822 parts as a string.
+            decodedpayload = str(payload)
         else:
-            # It is also a str, just return it as it is.
+            # It is a str or bytes, just return it as it is.
             decodedpayload = payload
         filename = self._get_attachment_filename(part, ctype)
-        if ctype == 'message/rfc822':
-            decodedpayload = str(decodedpayload)
         return (part_num, filename, ctype, charset, decodedpayload)
 
     def _guess_all_extensions(self, ctype):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-mailman3-1.3.3rc1/django_mailman3/locale/pl/LC_MESSAGES/django.po 
new/django-mailman3-1.3.4/django_mailman3/locale/pl/LC_MESSAGES/django.po
--- 
old/django-mailman3-1.3.3rc1/django_mailman3/locale/pl/LC_MESSAGES/django.po    
    2020-04-04 21:22:11.000000000 +0200
+++ new/django-mailman3-1.3.4/django_mailman3/locale/pl/LC_MESSAGES/django.po   
2020-06-05 19:02:23.000000000 +0200
@@ -8,8 +8,8 @@
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: mailman-develop...@python.org\n"
 "POT-Creation-Date: 2019-06-22 10:59+0200\n"
-"PO-Revision-Date: 2020-01-05 15:21+0000\n"
-"Last-Translator: kakiremora <piotrek.pastuszak2...@gmail.com>\n"
+"PO-Revision-Date: 2020-05-13 19:20+0000\n"
+"Last-Translator: Szylu <chipol...@gmail.com>\n"
 "Language-Team: Polish <https://hosted.weblate.org/projects/gnu-mailman/";
 "django-mailman3/pl/>\n"
 "Language: pl\n"
@@ -19,72 +19,74 @@
 "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<"
 "12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) "
 "|| (n%100>=12 && n%100<=14) ? 2 : 3);\n"
-"X-Generator: Weblate 3.10\n"
+"X-Generator: Weblate 4.1-dev\n"
 
 #: forms.py:43
 msgid "A user with that username already exists."
-msgstr ""
+msgstr "Użytkownik z tą nazwą już istnieje."
 
 #: templates/account/email.html:6
 #: templates/django_mailman3/profile/base.html:16
 #: templates/django_mailman3/profile/base.html:17
 msgid "Account"
-msgstr ""
+msgstr "Konto"
 
 #: templates/account/email.html:11
 msgid "The following e-mail addresses are associated with your account:"
-msgstr ""
+msgstr "Z Twoim kontem powiązane są następujące adresy e-mail:"
 
 #: templates/account/email.html:25
 msgid "Verified"
-msgstr ""
+msgstr "Zweryfikowany"
 
 #: templates/account/email.html:27
 msgid "Unverified"
-msgstr ""
+msgstr "Niezweryfikowany"
 
 #: templates/account/email.html:29
 msgid "Primary"
-msgstr ""
+msgstr "Podstawowy"
 
 #: templates/account/email.html:35
 msgid "Make Primary"
-msgstr ""
+msgstr "Uczyń podstawowym"
 
 #: templates/account/email.html:36
 msgid "Re-send Verification"
-msgstr ""
+msgstr "Prześlij ponownie weryfikację"
 
 #: templates/account/email.html:37 templates/socialaccount/connections.html:34
 msgid "Remove"
-msgstr ""
+msgstr "Usuń"
 
 #: templates/account/email.html:44
 msgid "Warning:"
-msgstr ""
+msgstr "Ostrzeżenie:"
 
 #: templates/account/email.html:44
 msgid ""
 "You currently do not have any e-mail address set up. You should really add "
 "an e-mail address so you can receive notifications, reset your password, etc."
 msgstr ""
+"Obecnie nie masz skonfigurowanego adresu e-mail. Naprawdę powinieneś dodać "
+"adres e-mail, aby otrzymywać powiadomienia, resetować hasło itp."
 
 #: templates/account/email.html:49
 msgid "Add E-mail Address"
-msgstr ""
+msgstr "Dodaj adres email"
 
 #: templates/account/email.html:55
 msgid "Add E-mail"
-msgstr ""
+msgstr "Dodaj email"
 
 #: templates/account/email.html:66
 msgid "Do you really want to remove the selected e-mail address?"
-msgstr ""
+msgstr "Czy na pewno chcesz usunąć zaznaczone adresy email?"
 
 #: templates/account/email_confirm.html:6
 #: templates/account/email_confirm.html:10
 msgid "Confirm E-mail Address"
-msgstr ""
+msgstr "Potwierdź adres email"
 
 #: templates/account/email_confirm.html:16
 #, python-format
@@ -92,6 +94,8 @@
 "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an e-mail "
 "address for user %(user_display)s."
 msgstr ""
+"Potwierdź, że <a href=\"mailto:%(email)s\">%(email)s</a> to adres e-mail "
+"użytkownika %(user_display)s."
 
 #: templates/account/email_confirm.html:20
 msgid "Confirm"
@@ -103,11 +107,13 @@
 "This e-mail confirmation link expired or is invalid. Please <a href="
 "\"%(email_url)s\">issue a new e-mail confirmation request</a>."
 msgstr ""
+"Ten link potwierdzający e-mail wygasł lub jest nieprawidłowy. <a href=\""
+"%(email_url)s\">wystaw nową prośbę o potwierdzenie e-mailem</a>."
 
 #: templates/account/login.html:7 templates/account/login.html:11
 #: templates/account/login.html:48
 msgid "Sign In"
-msgstr ""
+msgstr "Zaloguj się"
 
 #: templates/account/login.html:18
 #, python-format
@@ -117,11 +123,15 @@
 "up</a>\n"
 "for a %(site_name)s account and sign in below:"
 msgstr ""
+"Zaloguj się za pomocą jednego\n"
+"z twoich istniejących kont stron trzecich. Lub <a href=\"%(signup_url)s\">"
+"zarejestruj się</a>\n"
+"dla konta %(site_name)s i zaloguj się poniżej:"
 
 #: templates/account/login.html:30
 #: templates/django_mailman3/profile/profile.html:67
 msgid "or"
-msgstr ""
+msgstr "lub"
 
 #: templates/account/login.html:37
 #, python-format
@@ -129,19 +139,21 @@
 "If you have not created an account yet, then please\n"
 "<a href=\"%(signup_url)s\">sign up</a> first."
 msgstr ""
+"Jeśli nie utworzyłeś jeszcze konta, \n"
+"<a href=\"%(signup_url)s\">zarejestruj się</a> najpierw."
 
 #: templates/account/login.html:50
 msgid "Forgot Password?"
-msgstr ""
+msgstr "Zapomniałeś hasła?"
 
 #: templates/account/logout.html:5 templates/account/logout.html:8
 #: templates/account/logout.html:17
 msgid "Sign Out"
-msgstr ""
+msgstr "Wyloguj się"
 
 #: templates/account/logout.html:10
 msgid "Are you sure you want to sign out?"
-msgstr ""
+msgstr "Jesteś pewny, że chcesz się wylogować?"
 
 #: templates/account/password_change.html:12
 #: templates/account/password_reset_from_key.html:6
@@ -149,30 +161,33 @@
 #: templates/django_mailman3/profile/base.html:20
 #: templates/django_mailman3/profile/base.html:21
 msgid "Change Password"
-msgstr ""
+msgstr "Zmień hasło"
 
 #: templates/account/password_reset.html:7
 #: templates/account/password_reset.html:11
 msgid "Password Reset"
-msgstr ""
+msgstr "Reset hasła"
 
 #: templates/account/password_reset.html:16
 msgid ""
 "Forgotten your password? Enter your e-mail address below, and we'll send you "
 "an e-mail allowing you to reset it."
 msgstr ""
+"Zapomniałeś hasła? Wprowadź swój adres email poniżej, a my wyślemy Ci maila "
+"umożliwiającego zresetowanie go."
 
 #: templates/account/password_reset.html:22
 msgid "Reset My Password"
-msgstr ""
+msgstr "Zresertuj moje hasło"
 
 #: templates/account/password_reset.html:27
 msgid "Please contact us if you have any trouble resetting your password."
 msgstr ""
+"Skontaktuj się z nami, jeśli masz problemy ze zresetowaniem swojego hasła."
 
 #: templates/account/password_reset_from_key.html:9
 msgid "Bad Token"
-msgstr ""
+msgstr "Zły token"
 
 #: templates/account/password_reset_from_key.html:13
 #, python-format
@@ -181,132 +196,139 @@
 "used.  Please request a <a href=\"%(passwd_reset_url)s\">new password reset</"
 "a>."
 msgstr ""
+"Link do resetowania hasła był nieprawidłowy, prawdopodobnie dlatego, że "
+"został już użyty. Poproś o <a href=\"%(passwd_reset_url)s\">zresetowanie "
+"nowego hasła</a>."
 
 #: templates/account/password_reset_from_key.html:20
 msgid "change password"
-msgstr ""
+msgstr "zmień hasło"
 
 #: templates/account/password_reset_from_key.html:25
 msgid "Your password is now changed."
-msgstr ""
+msgstr "Hasło zostało zmienione."
 
 #: templates/account/password_set.html:12
 msgid "Set Password"
-msgstr ""
+msgstr "Ustaw hasło"
 
 #: templates/account/signup.html:6 templates/socialaccount/signup.html:6
 msgid "Signup"
-msgstr ""
+msgstr "Rejestracja"
 
 #: templates/account/signup.html:9 templates/account/signup.html:20
 #: templates/socialaccount/signup.html:9 templates/socialaccount/signup.html:21
 msgid "Sign Up"
-msgstr ""
+msgstr "Zarejestruj się"
 
 #: templates/account/signup.html:11
 #, python-format
 msgid ""
 "Already have an account? Then please <a href=\"%(login_url)s\">sign in</a>."
 msgstr ""
+"Posiadasz już konto? W takim razie <a href=\"%(login_url)s\">zaloguj się</a>."
 
 #: templates/django_mailman3/paginator/pagination.html:41
 msgid "Jump to page:"
-msgstr ""
+msgstr "Przeskocz do strony:"
 
 #: templates/django_mailman3/paginator/pagination.html:59
 msgid "Results per page:"
-msgstr ""
+msgstr "Wyników na stronę:"
 
 #: templates/django_mailman3/paginator/pagination.html:75
 #: templates/django_mailman3/profile/profile.html:66
 msgid "Update"
-msgstr ""
+msgstr "Aktualizuj"
 
 #: templates/django_mailman3/profile/base.html:5
 msgid "User Profile"
-msgstr ""
+msgstr "Profil użytkownika"
 
 #: templates/django_mailman3/profile/base.html:12
 msgid "User profile"
-msgstr ""
+msgstr "Profil użytkownika"
 
 #: templates/django_mailman3/profile/base.html:12
 msgid "for"
-msgstr ""
+msgstr "dla"
 
 #: templates/django_mailman3/profile/base.html:24
 #: templates/django_mailman3/profile/base.html:25
 msgid "E-mail Addresses"
-msgstr ""
+msgstr "Adresy email"
 
 #: templates/django_mailman3/profile/base.html:29
 #: templates/django_mailman3/profile/base.html:30
 msgid "Account Connections"
-msgstr ""
+msgstr "Połączenia konta"
 
 #: templates/django_mailman3/profile/base.html:33
 #: templates/django_mailman3/profile/base.html:34
 #: templates/django_mailman3/profile/delete_profile.html:18
 msgid "Delete Account"
-msgstr ""
+msgstr "Usuń konto"
 
 #: templates/django_mailman3/profile/delete_profile.html:13
 msgid ""
 "Are you sure you want to delete your account? This will remove your account "
 "along with all your subscriptions."
 msgstr ""
+"Jesteś pewny, że chcesz usunąć konto? Usuniesz konto wraz ze wszystkimi "
+"swoimi subskrypcjami."
 
 #: templates/django_mailman3/profile/profile.html:18
 #: templates/django_mailman3/profile/profile.html:53
 msgid "Edit on"
-msgstr ""
+msgstr "Edytuj"
 
 #: templates/django_mailman3/profile/profile.html:25
 msgid "Primary email:"
-msgstr ""
+msgstr "Główny email:"
 
 #: templates/django_mailman3/profile/profile.html:31
 msgid "Other emails:"
-msgstr ""
+msgstr "Inne emaile:"
 
 #: templates/django_mailman3/profile/profile.html:37
 msgid "(no other email)"
-msgstr ""
+msgstr "(brak innych email)"
 
 #: templates/django_mailman3/profile/profile.html:42
 msgid "Link another address"
-msgstr ""
+msgstr "Połącz inny adres"
 
 #: templates/django_mailman3/profile/profile.html:49
 msgid "Avatar:"
-msgstr ""
+msgstr "Awatar:"
 
 #: templates/django_mailman3/profile/profile.html:58
 msgid "Joined on:"
-msgstr ""
+msgstr "Dołączono:"
 
 #: templates/django_mailman3/profile/profile.html:67
 msgid "cancel"
-msgstr ""
+msgstr "anuluj"
 
 #: templates/openid/login.html:10
 msgid "OpenID Sign In"
-msgstr ""
+msgstr "Logowanie OpenID"
 
 #: templates/socialaccount/connections.html:9
 msgid ""
 "You can sign in to your account using any of the following third party "
 "accounts:"
-msgstr ""
+msgstr "Możesz się zalogować do swojego konta używając następujących kont:"
 
 #: templates/socialaccount/connections.html:42
 msgid ""
 "You currently have no social network accounts connected to this account."
 msgstr ""
+"Obecnie nie masz żadnych kont społecznościowych połączonych z tym kontem."
 
 #: templates/socialaccount/connections.html:45
 msgid "Add a 3rd Party Account"
-msgstr ""
+msgstr "Dodaj konto dodatkowe"
 
 #: templates/socialaccount/signup.html:11
 #, python-format
@@ -314,31 +336,33 @@
 "You are about to use your %(provider_name)s account to login to\n"
 "%(site_name)s. As a final step, please complete the following form:"
 msgstr ""
+"Za chwilę użyjesz konta %(provider_name)s, aby się zalogować do\n"
+"%(site_name)s. W ostatnim kroku wypełnij następujący formularz:"
 
 #: templatetags/pagination.py:43
 msgid "Newer"
-msgstr ""
+msgstr "Nowsze"
 
 #: templatetags/pagination.py:44
 msgid "Older"
-msgstr ""
+msgstr "Starsze"
 
 #: templatetags/pagination.py:46
 msgid "Previous"
-msgstr ""
+msgstr "Poprzedni"
 
 #: templatetags/pagination.py:47
 msgid "Next"
-msgstr ""
+msgstr "Następny"
 
 #: views/profile.py:73
 msgid "The profile was successfully updated."
-msgstr ""
+msgstr "Profil został pomyślnie zaktualizowany."
 
 #: views/profile.py:75
 msgid "No change detected."
-msgstr ""
+msgstr "Nie wykryto zmian."
 
 #: views/profile.py:108
 msgid "Successfully deleted account"
-msgstr ""
+msgstr "Pomyślnie usunięto konto"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-mailman3-1.3.3rc1/django_mailman3/locale/ru/LC_MESSAGES/django.po 
new/django-mailman3-1.3.4/django_mailman3/locale/ru/LC_MESSAGES/django.po
--- 
old/django-mailman3-1.3.3rc1/django_mailman3/locale/ru/LC_MESSAGES/django.po    
    2020-05-10 01:19:33.000000000 +0200
+++ new/django-mailman3-1.3.4/django_mailman3/locale/ru/LC_MESSAGES/django.po   
2020-06-05 19:02:23.000000000 +0200
@@ -8,18 +8,18 @@
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: mailman-develop...@python.org\n"
 "POT-Creation-Date: 2019-06-22 10:59+0200\n"
-"PO-Revision-Date: 2020-04-13 16:21+0000\n"
-"Last-Translator: Вероника Заглотова <zelenar...@gmail.com>\n"
+"PO-Revision-Date: 2020-05-31 04:16+0000\n"
+"Last-Translator: Margo Radzivilava <margoih...@gmail.com>\n"
 "Language-Team: Russian <https://hosted.weblate.org/projects/gnu-mailman/";
 "django-mailman3/ru/>\n"
 "Language: ru\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
-"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
-"(n%100>=11 && n%100<=14)? 2 : 3);\n"
-"X-Generator: Weblate 4.0-dev\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
+"%100>=11 && n%100<=14)? 2 : 3);\n"
+"X-Generator: Weblate 4.1-dev\n"
 
 #: forms.py:43
 msgid "A user with that username already exists."
@@ -291,7 +291,7 @@
 
 #: templates/django_mailman3/profile/profile.html:67
 msgid "cancel"
-msgstr "Отмена"
+msgstr "отмена"
 
 #: templates/openid/login.html:10
 msgid "OpenID Sign In"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-mailman3-1.3.3rc1/django_mailman3/tests/test_mailman.py 
new/django-mailman3-1.3.4/django_mailman3/tests/test_mailman.py
--- old/django-mailman3-1.3.3rc1/django_mailman3/tests/test_mailman.py  
2020-05-10 01:19:33.000000000 +0200
+++ new/django-mailman3-1.3.4/django_mailman3/tests/test_mailman.py     
2020-06-05 22:07:12.000000000 +0200
@@ -23,6 +23,7 @@
 from urllib.error import HTTPError
 
 from django.contrib.auth.models import User
+from django.core.cache import cache
 from django.db import IntegrityError
 
 from allauth.account.models import EmailAddress
@@ -80,6 +81,32 @@
         mm_user_id = mailman.get_mailman_user_id(self.user)
         self.assertEqual(mm_user_id, "dummy")
 
+    def test_bad_cached_user_id(self):
+        # Test that we lookup a user via email if the cached user_id is invalid
+        # and doesn't return a valid user.
+        new_mm_user = Mock()
+        new_mm_user.user_id = "dummy3"
+
+        def side_effect(user_id):
+            if user_id == '4':
+                raise HTTPError(
+                    url='', code=404, msg='No user with id 4',
+                    hdrs=None, fp=None)
+            elif user_id == 't...@example.com':
+                return new_mm_user
+            return None
+
+        self.mailman_client.get_user.side_effect = side_effect
+        # Now, also set integer user_id 4 in the cache.
+        cache.set("User:{0}:mailman_user_id".format(self.user.id), '4', None)
+
+        mm_user = mailman.get_mailman_user(self.user)
+        self.assertIsNotNone(mm_user)
+        self.assertEqual(mm_user, new_mm_user)
+
+        expected = [call('4'), call('t...@example.com')]
+        self.mailman_client.get_user.call_args_list == expected
+
 
 class AddUserToMailmanTestCase(TestCase):
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-mailman3-1.3.3rc1/django_mailman3/tests/test_scrub.py 
new/django-mailman3-1.3.4/django_mailman3/tests/test_scrub.py
--- old/django-mailman3-1.3.3rc1/django_mailman3/tests/test_scrub.py    
2019-03-27 07:08:58.000000000 +0100
+++ new/django-mailman3-1.3.4/django_mailman3/tests/test_scrub.py       
2020-06-05 19:02:23.000000000 +0200
@@ -129,9 +129,9 @@
             scrubber = Scrubber(msg)
             contents = scrubber.scrub()[0]
             self.assertTrue(isinstance(contents, str))
-            self.assertEqual(contents,
-                'This message contains non-ascii characters:\n\xe9 \xe8 \xe7 
\xe0 \xee \xef \xeb \u20ac\n'  # noqa
-            )
+            self.assertEqual(
+                contents,
+                'This message contains non-ascii characters:\n\xe9 \xe8 \xe7 
\xe0 \xee \xef \xeb \u20ac\n')  # noqa: E501
 
     def test_non_ascii_payload_utf8(self):
         """Scrubber must handle non-ascii messages"""
@@ -154,6 +154,19 @@
             self.fail(e)  # codec not found
         self.assertTrue(isinstance(contents, str))
 
+    def test_bad_charset_html(self):
+        """Scrubber must handle unknown charsets in html parts too."""
+        with open(get_test_file("bad_charset.txt")) as email_file:
+            msg = message_from_file(email_file, policy=policy.SMTP)
+        scrubber = Scrubber(msg)
+        try:
+            contents = scrubber.scrub()[0]
+        except LookupError as e:
+            import traceback
+            print(traceback.format_exc())
+            self.fail(e)  # codec not found
+        self.assertTrue(isinstance(contents, str))
+
     def test_attachment_4(self):
         with open(get_test_file("attachment-4.txt")) as email_file:
             msg = message_from_file(email_file, policy=policy.SMTP)
@@ -195,6 +208,19 @@
             'accented letters : \xe9 \xe8 \xe7 \xe0.\nAnd an '
             'attachment with an accented filename\n\n\n\n\n\n')
 
+    def test_attachedMmessage_rfc822(self):
+        with open(get_test_file("attached_message.txt")) as email_file:
+            msg = message_from_file(email_file, policy=policy.SMTP)
+        scrubber = Scrubber(msg)
+        contents, attachments = scrubber.scrub()
+        self.assertEqual(len(attachments), 1)
+        self.assertEqual(
+            attachments[0][0:4],
+            (2, "Moderation.eml", "message/rfc822", None))
+        self.assertEqual(len(attachments[0][4]), 462)
+        self.assertEqual(contents, 'See the attached.\n\n\n')
+        self.assertIn('Message-ID: <1d3c4594-1268', attachments[0][4])
+
     def test_attachment_name_badly_encoded(self):
         with open(get_test_file("email-bad-filename.txt"), 'rb') as email_file:
             msg = message_from_binary_file(email_file, policy=policy.SMTP)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-mailman3-1.3.3rc1/django_mailman3/tests/testdata/attached_message.txt
 new/django-mailman3-1.3.4/django_mailman3/tests/testdata/attached_message.txt
--- 
old/django-mailman3-1.3.3rc1/django_mailman3/tests/testdata/attached_message.txt
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/django-mailman3-1.3.4/django_mailman3/tests/testdata/attached_message.txt   
    2020-06-05 19:02:23.000000000 +0200
@@ -0,0 +1,38 @@
+Subject: Fwd: [MM3-users] Emergency Moderation
+To: t...@example.com
+From: Mark Sapiro <m...@example.com>
+Message-ID: <06099ccc-48bc-c4fa-5d2a-0bdb597d5...@example.com>
+Date: Thu, 21 May 2020 17:20:31 -0700
+MIME-Version: 1.0
+Content-Type: multipart/mixed;
+ boundary="------------9FF0FA65F7F9D51E428470D4"
+
+This is a multi-part message in MIME format.
+--------------9FF0FA65F7F9D51E428470D4
+Content-Type: text/plain; charset=utf-8
+Content-Transfer-Encoding: 7bit
+
+See the attached.
+
+--------------9FF0FA65F7F9D51E428470D4
+Content-Type: message/rfc822;
+ name="Moderation.eml"
+Content-Transfer-Encoding: 7bit
+Content-Disposition: attachment;
+ filename="Moderation.eml"
+
+Subject: Re: [MM3-users] Emergency Moderation
+To: mailman-us...@mailman3.org
+From: Mark Sapiro <m...@example.com>
+Message-ID: <1d3c4594-1268-f235-8ac1-9c1cc835f...@example.com>
+Date: Thu, 21 May 2020 15:30:10 -0700
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf-8
+Content-Transfer-Encoding: 7bit
+
+It's in core and it's just recently been exposed in REST
+https://gitlab.com/mailman/mailman/-/merge_requests/643 but it's not in
+Postorius yet.
+
+--------------9FF0FA65F7F9D51E428470D4--
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-mailman3-1.3.3rc1/django_mailman3/tests/testdata/bad_charset.txt 
new/django-mailman3-1.3.4/django_mailman3/tests/testdata/bad_charset.txt
--- old/django-mailman3-1.3.3rc1/django_mailman3/tests/testdata/bad_charset.txt 
1970-01-01 01:00:00.000000000 +0100
+++ new/django-mailman3-1.3.4/django_mailman3/tests/testdata/bad_charset.txt    
2020-06-05 19:02:23.000000000 +0200
@@ -0,0 +1,10 @@
+MIME-Version: 1.0
+From: Web AWS Services <i...@example.com>
+Subject: Resolved ID 90165632
+To: p...@python.org
+Content-Transfer-Encoding: base64
+Content-Type: text/html; charset="UTF-8-Base64"
+Date: Thu, 21 May 2020 06:50:04 +0300
+Message-Id: <49sgbb0559zp...@mail.python.org>
+
+U29tZSBjb250ZW50IGZvciB0aGUgdGVzdC4K
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-mailman3-1.3.3rc1/django_mailman3.egg-info/PKG-INFO 
new/django-mailman3-1.3.4/django_mailman3.egg-info/PKG-INFO
--- old/django-mailman3-1.3.3rc1/django_mailman3.egg-info/PKG-INFO      
2020-05-10 02:21:24.000000000 +0200
+++ new/django-mailman3-1.3.4/django_mailman3.egg-info/PKG-INFO 2020-06-05 
22:21:52.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: django-mailman3
-Version: 1.3.3rc1
+Version: 1.3.4
 Summary: Django library to help interaction with Mailman
 Home-page: https://gitlab.com/mailman/django-mailman3
 Maintainer: Mailman Developers
@@ -20,14 +20,24 @@
         NEWS
         ====
         
-        1.3.3rc1 (2020-05-09)
-        ---------------------
+        1.3.4 (2020-06-05)
+        ------------------
+        * Fix a bug caused by bumping to Mailman API 3.1 in version 1.3.3 which
+          resulted in 404 errors for some users. (Closes #35)
+        
+        
+        1.3.3 (2020-06-01)
+        ------------------
         
         - Hide "Account Connections" tab in accounts if no social account 
providers are
           installed. (See !54)
         - Use bold font for form labels (See !82)
         - Update a user's preferred_address in Mailman Core when a user 
updates their
           primary address in Profile. (Closes #32)
+        - Use Mailman's API version 3.1 to get Hex UUIDs instead of integer.
+        - Caught a LookupError when scrubbing an attachment with an unknown 
charset.
+          (Closes #12)
+        - Properly scrub the content of message/rfc822 parts.  (Closes #34)
         
         License
         =======
@@ -35,7 +45,7 @@
         Django-mailman is licensed under the
         `GPL v3.0 <http://www.gnu.org/licenses/gpl-3.0.html>`_
         
-        Copyright (C) 2017-2019 by the Free Software Foundation, Inc.
+        Copyright (C) 2017-2020 by the Free Software Foundation, Inc.
         
 Keywords: mailman django
 Platform: UNKNOWN
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-mailman3-1.3.3rc1/django_mailman3.egg-info/SOURCES.txt 
new/django-mailman3-1.3.4/django_mailman3.egg-info/SOURCES.txt
--- old/django-mailman3-1.3.3rc1/django_mailman3.egg-info/SOURCES.txt   
2020-05-10 02:21:24.000000000 +0200
+++ new/django-mailman3-1.3.4/django_mailman3.egg-info/SOURCES.txt      
2020-06-05 22:21:52.000000000 +0200
@@ -198,11 +198,13 @@
 django_mailman3/tests/test_view_profile.py
 django_mailman3/tests/urls_test.py
 django_mailman3/tests/utils.py
+django_mailman3/tests/testdata/attached_message.txt
 django_mailman3/tests/testdata/attachment-1.txt
 django_mailman3/tests/testdata/attachment-2.txt
 django_mailman3/tests/testdata/attachment-3.txt
 django_mailman3/tests/testdata/attachment-4.txt
 django_mailman3/tests/testdata/attachment-5.txt
+django_mailman3/tests/testdata/bad_charset.txt
 django_mailman3/tests/testdata/email-bad-filename.txt
 django_mailman3/tests/testdata/html-email-1.txt
 django_mailman3/tests/testdata/html-email-2.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-mailman3-1.3.3rc1/django_mailman3.egg-info/requires.txt 
new/django-mailman3-1.3.4/django_mailman3.egg-info/requires.txt
--- old/django-mailman3-1.3.3rc1/django_mailman3.egg-info/requires.txt  
2020-05-10 02:21:24.000000000 +0200
+++ new/django-mailman3-1.3.4/django_mailman3.egg-info/requires.txt     
2020-06-05 22:21:52.000000000 +0200
@@ -1,5 +1,5 @@
 Django<3.1,>=1.11
-mailmanclient>=3.3.1rc1
+mailmanclient>=3.3.1
 django-allauth
 django-gravatar2>=1.0.6
 pytz
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-mailman3-1.3.3rc1/setup.py 
new/django-mailman3-1.3.4/setup.py
--- old/django-mailman3-1.3.3rc1/setup.py       2020-05-10 02:20:30.000000000 
+0200
+++ new/django-mailman3-1.3.4/setup.py  2020-06-05 19:02:23.000000000 +0200
@@ -20,7 +20,7 @@
 
 setup(
     name="django-mailman3",
-    version='1.3.3rc1',
+    version="1.3.4",
     description="Django library to help interaction with Mailman",
     long_description=open('README.rst').read(),
     maintainer="Mailman Developers",
@@ -39,7 +39,7 @@
     include_package_data=True,
     install_requires=[
         'Django>=1.11,<3.1',
-        'mailmanclient>=3.3.1rc1',
+        'mailmanclient>=3.3.1',
         'django-allauth',
         'django-gravatar2 >= 1.0.6',
         'pytz'


Reply via email to