[prev in list] [next in list] [prev in thread] [next in thread] 

List:       mailman-cvs
Subject:    [Mailman-checkins] SF.net SVN: mailman: [8180] trunk/mailman/Mailman
From:       tkikuchi () users ! sourceforge ! net
Date:       2007-03-24 6:01:35
Message-ID: E1HUzJn-0001DD-NP () sc8-pr-svn1 ! sourceforge ! net
[Download RAW message or body]

Revision: 8180
          http://svn.sourceforge.net/mailman/?rev=8180&view=rev
Author:   tkikuchi
Date:     2007-03-23 23:01:35 -0700 (Fri, 23 Mar 2007)

Log Message:
-----------
CookHeaders.py:
    Subject munging code made unified for both i18n and ascii encodings.

test_handlers.py
    Adding test code for i18n and numbering subject munging.
    (also tab normalization for the last commit)

Modified Paths:
--------------
    trunk/mailman/Mailman/Handlers/CookHeaders.py
    trunk/mailman/Mailman/testing/test_handlers.py

Modified: trunk/mailman/Mailman/Handlers/CookHeaders.py
===================================================================
--- trunk/mailman/Mailman/Handlers/CookHeaders.py	2007-03-24 05:17:00 UTC (rev 8179)
+++ trunk/mailman/Mailman/Handlers/CookHeaders.py	2007-03-24 06:01:35 UTC (rev 8180)
@@ -281,27 +281,10 @@
         prefix = prefix % mlist.post_id
     except TypeError:
         pass
-    # If charset is 'us-ascii', try to concatnate as string because there
-    # is some weirdness in Header module (TK)
-    if cset == 'us-ascii':
-        try:
-            if old_style:
-                h = u' '.join([recolon, prefix, subject])
-            else:
-                h = u' '.join([prefix, recolon, subject])
-            h = h.encode('us-ascii')
-            h = uheader(mlist, h, 'Subject', continuation_ws=ws)
-            del msg['subject']
-            msg['Subject'] = h
-            ss = u' '.join([recolon, subject])
-            ss = ss.encode('us-ascii')
-            ss = uheader(mlist, ss, 'Subject', continuation_ws=ws)
-            msgdata['stripped_subject'] = ss
-            return
-        except UnicodeError:
-            pass
     # Get the header as a Header instance, with proper unicode conversion
-    if old_style:
+    if not recolon:
+        h = uheader(mlist, prefix, 'Subject', continuation_ws=ws)
+    elif old_style:
         h = uheader(mlist, recolon, 'Subject', continuation_ws=ws)
         h.append(prefix)
     else:

Modified: trunk/mailman/Mailman/testing/test_handlers.py
===================================================================
--- trunk/mailman/Mailman/testing/test_handlers.py	2007-03-24 05:17:00 UTC (rev 8179)
+++ trunk/mailman/Mailman/testing/test_handlers.py	2007-03-24 06:01:35 UTC (rev 8180)
@@ -580,6 +580,70 @@
         CookHeaders.process(self._mlist, msg, {})
         self.assertEqual(msg['subject'], 'Re: [XTEST] About Mailman...')
 
+    def test_subject_munging_i18n(self):
+        self._mlist.subject_prefix = '[XTEST]'
+        msg = Message.Message()
+        msg['Subject'] = '=?iso-2022-jp?b?GyRCJWEhPCVrJV4lcxsoQg==?='
+        CookHeaders.process(self._mlist, msg, {})
+        self.assertEqual(unicode(msg['subject']),
+                         u'[XTEST] \u30e1\u30fc\u30eb\u30de\u30f3')
+        self.assertEqual(msg['subject'],
+                         '[XTEST] =?iso-2022-jp?b?GyRCJWEhPCVrJV4lcxsoQg==?=')
+        self._mlist.subject_prefix = '[XTEST %d]'
+        self._mlist.post_id = 456
+        msg = Message.Message()
+        msg['Subject'] = '=?iso-2022-jp?b?GyRCJWEhPCVrJV4lcxsoQg==?='
+        CookHeaders.process(self._mlist, msg, {})
+        self.assertEqual(unicode(msg['subject']),
+                         u'[XTEST 456] \u30e1\u30fc\u30eb\u30de\u30f3')
+        self.assertEqual(msg['subject'],
+                     '[XTEST 456] =?iso-2022-jp?b?GyRCJWEhPCVrJV4lcxsoQg==?=')
+        msg = Message.Message()
+        msg['Subject'
+             ] = 'Re: [XTEST 123] =?iso-2022-jp?b?GyRCJWEhPCVrJV4lcxsoQg==?='
+        CookHeaders.process(self._mlist, msg, {})
+        # next code suceeds if python email patch tracker #1681333 is applied.
+        #self.assertEqual(unicode(msg['subject']),
+        #             u'[XTEST 456] Re: \u30e1\u30fc\u30eb\u30de\u30f3')
+        self.assertEqual(msg['subject'],
+                 '[XTEST 456] Re: =?iso-2022-jp?b?GyRCJWEhPCVrJV4lcxsoQg==?=')
+
+    def test_subject_munging_prefix_number(self):
+        self._mlist.subject_prefix = '[XTEST %d]'
+        self._mlist.post_id = 456
+        msg = Message.Message()
+        msg['Subject'] = 'About Mailman...'
+        CookHeaders.process(self._mlist, msg, {})
+        self.assertEqual(msg['subject'], '[XTEST 456] About Mailman...')
+        msg = Message.Message()
+        msg['Subject'] = 'Re: [XTEST 123] About Mailman...'
+        CookHeaders.process(self._mlist, msg, {})
+        self.assertEqual(msg['subject'], '[XTEST 456] Re: About Mailman...')
+
+    def test_subject_munging_prefix_newstyle(self):
+        self._mlist.subject_prefix = '[XTEST]'
+        config.OLD_STYLE_PREFIXING = False
+        msg = Message.Message()
+        msg['Subject'] = 'Re: [XTEST] About Mailman...'
+        CookHeaders.process(self._mlist, msg, {})
+        self.assertEqual(msg['subject'], '[XTEST] Re: About Mailman...')
+
+    def test_subject_munging_prefix_crooked(self):
+        # In this test case, we get an extra space between the prefix and
+        # the original subject.  It's because the original is crooked.
+        # Note that isubject starting by '\n ' is generated by some version of
+        # Eudora Japanese edition.
+        self._mlist.subject_prefix = '[XTEST]'
+        msg = Message.Message()
+        msg['Subject'] = '\n About Mailman...'
+        CookHeaders.process(self._mlist, msg, {})
+        self.assertEqual(str(msg['subject']), '[XTEST]  About Mailman...')
+        del msg['subject']
+        msg['Subject'] = '\n =?iso-2022-jp?b?GyRCJWEhPCVrJV4lcxsoQg==?='
+        CookHeaders.process(self._mlist, msg, {})
+        self.assertEqual(str(msg['subject']), 
+                     '[XTEST] =?iso-2022-jp?b?IBskQiVhITwlayVeJXMbKEI=?=')
+
     def test_reply_to_list(self):
         eq = self.assertEqual
         mlist = self._mlist
@@ -1609,7 +1673,7 @@
     def test_send_i18n_digest(self):
         eq = self.assertEqual
         mlist = self._mlist
-	mlist.preferred_language = 'fr'
+        mlist.preferred_language = 'fr'
         msg = email.message_from_string("""\
 From: aperson@example.org
 To: _xtest@example.com
@@ -1622,23 +1686,23 @@
 """)
         mlist.digest_size_threshhold = 0
         ToDigest.process(mlist, msg, {})
-	files = self._sb.files()
+        files = self._sb.files()
         eq(len(files), 2)
         for filebase in files:
-	    qmsg, qdata = self._sb.dequeue(filebase)
+            qmsg, qdata = self._sb.dequeue(filebase)
             if qmsg.get_content_maintype() == 'multipart':
                 mimemsg = qmsg
                 mimedata = qdata
             else:
                 rfc1153msg = qmsg
                 rfc1153data = qdata
-	eq(rfc1153msg.get_content_type(), 'text/plain')
-	eq(rfc1153msg.get_content_charset(), 'utf-8')
-	eq(rfc1153msg['content-transfer-encoding'], 'base64')
-	toc = mimemsg.get_payload()[1]
-	eq(toc.get_content_type(), 'text/plain')
-	eq(toc.get_content_charset(), 'utf-8')
-	eq(toc['content-transfer-encoding'], 'base64')
+        eq(rfc1153msg.get_content_type(), 'text/plain')
+        eq(rfc1153msg.get_content_charset(), 'utf-8')
+        eq(rfc1153msg['content-transfer-encoding'], 'base64')
+        toc = mimemsg.get_payload()[1]
+        eq(toc.get_content_type(), 'text/plain')
+        eq(toc.get_content_charset(), 'utf-8')
+        eq(toc['content-transfer-encoding'], 'base64')
 
 
 


This was sent by the SourceForge.net collaborative development platform, the world's \
largest Open Source development site. _______________________________________________
Mailman-checkins mailing list
Mailman-checkins@python.org
Unsubscribe: http://mail.python.org/mailman/options/mailman-checkins/mailman-cvs%40progressive-comp.com



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic