[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/t Syndication Tool uprgade test works in theory.
Charlie Clark
cvs-admin at zope.org
Tue Mar 13 00:07:01 UTC 2012
Log message for revision 124588:
Syndication Tool uprgade test works in theory.
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/upgrade/tests/test_syndication_upgrade.py
U Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23.py
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/tests/test_syndication_upgrade.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/upgrade/tests/test_syndication_upgrade.py 2012-03-12 23:37:18 UTC (rev 124587)
+++ Products.CMFDefault/trunk/Products/CMFDefault/upgrade/tests/test_syndication_upgrade.py 2012-03-13 00:06:58 UTC (rev 124588)
@@ -17,12 +17,16 @@
import unittest
from Testing import ZopeTestCase
-import transaction
-
-from AccessControl.SecurityManagement import newSecurityManager
-from AccessControl.User import UnrestrictedUser
+from DateTime.DateTime import DateTime
+from Products.CMFCore.PortalFolder import PortalFolder
+from Products.CMFCore.interfaces import ISyndicationTool, IFolderish
from Products.CMFDefault.testing import FunctionalLayer
+from Products.CMFDefault.SyndicationInfo import SyndicationInfo, ISyndicationInfo
+from Products.CMFDefault.SyndicationTool import SyndicationTool
from zope.site.hooks import setSite
+from zope.component import getSiteManager
+from zope.component import getAdapter
+from zope.testing.cleanup import cleanUp
class FunctionalUpgradeTestCase(ZopeTestCase.FunctionalTestCase):
@@ -32,22 +36,49 @@
def setUp(self):
super(FunctionalUpgradeTestCase, self).setUp()
+ sm = getSiteManager()
+ #self.sm = sm
+ sm.registerAdapter(SyndicationInfo, [IFolderish], ISyndicationInfo)
+ syndication = SyndicationTool()
+ sm.registerUtility(syndication, ISyndicationTool)
+ from zope.annotation.interfaces import IAnnotations
+ from zope.annotation.attribute import AttributeAnnotations
+ #sm.registerAdapter(AttributeAnnotations, [IFolderish], IAnnotations)
+ folder = PortalFolder("Dummy Portal Folder")
+ self.folder = folder
- def makeOne(self):
- """Create an old style SyndicatonInformation for a folder"""
- from Products.CMFCore.PortalFolder import PortalFolder
+
+ def _make_info(self):
+ """Add an old style SyndicationInfo to the folder"""
from Products.CMFDefault.SyndicationInfo import SyndicationInformation
- folder = PortalFolder(syndicated_folder)
info = SyndicationInformation()
- info.syndBase = datetime.datetime.now()
- info.syndPeriod = 1
- info.syndFrequency = 1
+ info.syUpdateBase = DateTime()
+ info.syUpdatePeriod = 1
+ info.syUpdateFrequency = 1
info.max_items = 5
+ return info
- def test_nothing(self):
- pass
+ def test_upgrade(self):
+ info = self._make_info()
+ self.folder._setObject(info.getId(), info)
+ old_info = self.folder._getOb(info.getId())
+ self.assertTrue('syndication_information' in self.folder.objectIds())
+ self.assertTrue(isinstance(old_info.syUpdateBase, DateTime))
+ from Products.CMFDefault.upgrade.to23 import change_to_adapter
+ change_to_adapter(old_info)
+ self.assertFalse('syndication_information' in self.folder.objectIds())
+ new_info = getAdapter(self.folder, ISyndicationInfo)
+ self.assertEqual(new_info.max_items, old_info.max_items)
+ self.assertEqual(new_info.period, old_info.syUpdatePeriod)
+ self.assertEqual(new_info.frequency, old_info.syUpdateFrequency)
+ self.assertFalse(old_info.syUpdateBase.timezoneNaive())
+ self.assertTrue(new_info.base.tzinfo is None)
+ def TearDown(self):
+ cleanUp()
+
+
def test_suite():
return unittest.TestSuite((
unittest.makeSuite(FunctionalUpgradeTestCase),
Modified: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23.py 2012-03-12 23:37:18 UTC (rev 124587)
+++ Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23.py 2012-03-13 00:06:58 UTC (rev 124588)
@@ -322,23 +322,44 @@
logger.info('Registered %s for interface %s' % (tool_id,
tool_interface))
-def upgrade_syndicationtool(tool):
- """Replace SyndicatonInformation objects with SyndicationInfo adapters"""
- def change_to_adapter(SyndicationInformation):
- """Read values from the SyndicationInformation object and set them on
- the adapter"""
- folder = aq_parent(aq_inner(SyndicationInformation))
- adapter = getAdapter(folder, ISyndicationInfo)
- adapter.period = SyndicationInformation.syndPeriod
- adapter.base = SyndicationInformation.syndBase
- adapter.frequency = SyndicationInformation.syndFrequency
- adapter.max_items = SyndicationInformation.max_items
- folder._delObj(SyndicationInformation.getId())
+def DateTime_to_datetime(Zope_DateTime):
+ """
+ Convert from Zope DateTime to Python datetime and strip timezone
+ """
+ from DateTime.DateTime import DateTime
+ naive = DateTime(str(Zope_DateTime).rsplit(' ', 1)[0])
+ return naive.asdatetime()
- # convert Zope.DateTime to python.datetime on the tool
+def change_to_adapter(SyndicationInformation, path=None):
+ """
+ Read values from the SyndicationInformation object and set them on
+ the adapter and then delete the SyndicationInformation object
+ """
+ from zope.component import getAdapter
+ from Products.CMFDefault.SyndicationInfo import ISyndicationInfo
+ folder = aq_parent(aq_inner(SyndicationInformation))
+ adapter = getAdapter(folder, ISyndicationInfo)
+ adapter.period = SyndicationInformation.syUpdatePeriod
+ adapter.base = DateTime_to_datetime(SyndicationInformation.syUpdateBase)
+ adapter.frequency = SyndicationInformation.syUpdateFrequency
+ adapter.max_items = SyndicationInformation.max_items
+ folder._delObject(SyndicationInformation.getId())
- # migrate existing SyndicationInformation objects to adapter based Infos.
+
+def check_syndication_tool(tool):
+ """Convert if portal_syndication exists"""
portal = aq_parent(aq_inner(tool))
- portal.ZopeFindAndApply(obj_metatypes=["SyndicationInformation"],
- apply_func=change_to_adapter)
\ No newline at end of file
+ try:
+ syndication = getToolByName(portal, "portal_syndication")
+ return True
+ except AttributeError:
+ return False
+
+
+def upgrade_syndication_tool(tool):
+ """Replace SyndicatonInformation objects with SyndicationInfo adapters"""
+ portal = aq_parent(aq_inner(tool))
+ syndication = getToolByName(portal, "portal_syndication")
+ syndication.base = DateTime_to_datetime(syndication.syUpdateBase)
+ portal.ZopeFind(portal, obj_metatypes=["SyndicationInformation"])
\ No newline at end of file
More information about the checkins
mailing list