[Checkins] SVN: Products.GenericSetup/trunk/ Export/import new MailHost properties, `smtp_queue` and `smtp_queue_directory`.

Tres Seaver tseaver at palladion.com
Mon Sep 19 09:27:04 EST 2011


Log message for revision 122845:
  Export/import new MailHost properties, `smtp_queue` and `smtp_queue_directory`.
  
  See LP #602989.
  

Changed:
  U   Products.GenericSetup/trunk/Products/GenericSetup/MailHost/exportimport.py
  U   Products.GenericSetup/trunk/Products/GenericSetup/MailHost/tests/test_exportimport.py
  U   Products.GenericSetup/trunk/docs/CHANGES.rst

-=-
Modified: Products.GenericSetup/trunk/Products/GenericSetup/MailHost/exportimport.py
===================================================================
--- Products.GenericSetup/trunk/Products/GenericSetup/MailHost/exportimport.py	2011-09-19 14:11:33 UTC (rev 122844)
+++ Products.GenericSetup/trunk/Products/GenericSetup/MailHost/exportimport.py	2011-09-19 14:27:04 UTC (rev 122845)
@@ -47,6 +47,18 @@
         if smtp_pwd is None:
             smtp_pwd = ''
         node.setAttribute('smtp_pwd', smtp_pwd)
+
+        #Older MH instances won't have 'smtp_queue' in instance dict
+        if 'smtp_queue' in self.context.__dict__: 
+            smtp_queue = bool(self.context.smtp_queue)
+            node.setAttribute('smtp_queue', str(smtp_queue))
+            
+            smtp_queue_directory = self.context.smtp_queue_directory
+            if smtp_queue_directory is None:
+                smtp_queue_directory = ''
+            node.setAttribute('smtp_queue_directory',
+                              str(smtp_queue_directory))
+
         self._logger.info('Mailhost exported.')
         return node
 
@@ -57,5 +69,12 @@
         self.context.smtp_port = int(node.getAttribute('smtp_port'))
         self.context.smtp_uid = node.getAttribute('smtp_uid').encode('utf-8')
         self.context.smtp_pwd = node.getAttribute('smtp_pwd').encode('utf-8')
+        
+        #Older MH instances won't have 'smtp_queue' in instance dict
+        queue = node.getAttribute('smtp_queue')
+        if 'smtp_queue' in self.context.__dict__: 
+            self.context.smtp_queue = (str(queue) == 'True')
+            qd = node.getAttribute('smtp_queue_directory')
+            self.context.smtp_queue_directory = str(qd)
 
         self._logger.info('Mailhost imported.')

Modified: Products.GenericSetup/trunk/Products/GenericSetup/MailHost/tests/test_exportimport.py
===================================================================
--- Products.GenericSetup/trunk/Products/GenericSetup/MailHost/tests/test_exportimport.py	2011-09-19 14:11:33 UTC (rev 122844)
+++ Products.GenericSetup/trunk/Products/GenericSetup/MailHost/tests/test_exportimport.py	2011-09-19 14:27:04 UTC (rev 122845)
@@ -22,10 +22,24 @@
 _MAILHOST_BODY = """\
 <?xml version="1.0"?>
 <object name="foo_mailhost" meta_type="Mail Host" smtp_host="localhost"
+   smtp_port="25" smtp_pwd="" smtp_queue="False" smtp_queue_directory="/tmp"
+   smtp_uid=""/>
+"""
+
+_MAILHOST_BODY_older_mh = """\
+<?xml version="1.0"?>
+<object name="foo_mailhost" meta_type="Mail Host" smtp_host="localhost"
    smtp_port="25" smtp_pwd="" smtp_uid=""/>
 """
 
+_MAILHOST_BODY_v2 = """\
+<?xml version="1.0"?>
+<object name="foo_mailhost" meta_type="Mail Host" smtp_host="localhost"
+   smtp_port="25" smtp_pwd="" smtp_queue="True"
+   smtp_queue_directory="/tmp/mailqueue" smtp_uid=""/>
+"""
 
+
 class MailHostXMLAdapterTests(BodyAdapterTestCase, unittest.TestCase):
 
     layer = ExportImportZCMLLayer
@@ -45,6 +59,10 @@
         self.assertEqual(obj.smtp_pwd, '')
         self.assertEqual(type(obj.smtp_uid), str)
         self.assertEqual(obj.smtp_uid, '')
+        self.assertEqual(type(obj.smtp_queue), bool)
+        self.assertEqual(obj.smtp_queue, False)
+        self.assertEqual(type(obj.smtp_queue_directory), str)
+        self.assertEqual(obj.smtp_queue_directory, '/tmp')
 
     def setUp(self):
         from Products.MailHost.MailHost import MailHost
@@ -53,7 +71,50 @@
         self._BODY = _MAILHOST_BODY
 
 
+class MailHostXMLAdapterTestsWithoutQueue(MailHostXMLAdapterTests):
+
+    def _verifyImport(self, obj):
+        self.failIf('smtp_queue' in obj.__dict__)
+        self.failIf('smtp_queue_directory' in obj.__dict__)
+
+    def setUp(self):
+        from Products.MailHost.MailHost import MailHost
+
+        mh = self._obj = MailHost('foo_mailhost')
+        del mh.smtp_queue
+        del mh.smtp_queue_directory
+        self._BODY = _MAILHOST_BODY_older_mh
+
+
+class MailHostXMLAdapterTestsWithQueue(BodyAdapterTestCase, unittest.TestCase):
+
+    layer = ExportImportZCMLLayer
+
+    def _getTargetClass(self):
+        from Products.GenericSetup.MailHost.exportimport \
+                import MailHostXMLAdapter
+
+        return MailHostXMLAdapter
+
+    def _verifyImport(self, obj):
+        self.assertEqual(type(obj.smtp_queue), bool)
+        self.assertEqual(obj.smtp_queue, True)
+        self.assertEqual(type(obj.smtp_queue_directory), str)
+        self.assertEqual(obj.smtp_queue_directory, '/tmp/mailqueue')
+        
+    def test_body_get(self):
+        #Default Correctly Handled in MailHostXMLAdapterTests
+        pass
+
+    def setUp(self):
+        from Products.MailHost.MailHost import MailHost
+
+        self._obj = MailHost('foo_mailhost')
+        self._BODY = _MAILHOST_BODY_v2
+
+
 class MailHostXMLAdapterTestsWithNoneValue(MailHostXMLAdapterTests):
+
     def _verifyImport(self, obj):
         self.assertEqual(type(obj.smtp_host), str)
         self.assertEqual(obj.smtp_host, 'localhost')
@@ -75,5 +136,7 @@
 def test_suite():
     return unittest.TestSuite((
         unittest.makeSuite(MailHostXMLAdapterTests),
+        unittest.makeSuite(MailHostXMLAdapterTestsWithoutQueue),
+        unittest.makeSuite(MailHostXMLAdapterTestsWithQueue),
         unittest.makeSuite(MailHostXMLAdapterTestsWithNoneValue),
         ))

Modified: Products.GenericSetup/trunk/docs/CHANGES.rst
===================================================================
--- Products.GenericSetup/trunk/docs/CHANGES.rst	2011-09-19 14:11:33 UTC (rev 122844)
+++ Products.GenericSetup/trunk/docs/CHANGES.rst	2011-09-19 14:27:04 UTC (rev 122845)
@@ -4,6 +4,9 @@
 1.6.4 (unreleased)
 ------------------
 
+- LP #602989:  export / import new MailHost properties, `smtp_queue` and
+  `smtp_queue_directory`.
+
 - ZCML: Don't require description for the `upgradeDepends` directive.
 
 - PythonScript handler: Newlines are now normalized during import.



More information about the checkins mailing list