Skip to content

Commit

Permalink
fix regression coming from plone.dexterity now having notifyModified
Browse files Browse the repository at this point in the history
  • Loading branch information
pbauer committed Feb 12, 2014
1 parent ddfd295 commit de5e44d
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 31 deletions.
19 changes: 13 additions & 6 deletions plone/app/contenttypes/migration/browser.py
@@ -1,22 +1,22 @@
# -*- coding: utf-8 -*-
from Products.CMFCore.interfaces import IPropertiesTool
from Products.CMFCore.utils import getToolByName
from Products.CMFDefault.DublinCore import DefaultDublinCoreImpl
from Products.Five.browser import BrowserView
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
from datetime import datetime
from plone.app.contenttypes.migration import migration
from plone.app.contenttypes.migration.utils import ATCT_LIST
from plone.app.contenttypes.migration.utils import isSchemaExtended
from plone.dexterity.content import DexterityContent
from plone.dexterity.interfaces import IDexterityContent
from plone.z3cform.layout import wrap_form
from pprint import pformat
from z3c.form import form, field, button
from z3c.form.browser.checkbox import CheckBoxFieldWidget
from z3c.form.interfaces import HIDDEN_MODE
from zope import schema
from zope.component import queryUtility
from zope.component import getMultiAdapter
from zope.component import queryUtility
from zope.interface import Interface

# Schema Extender allowed interfaces
Expand Down Expand Up @@ -101,9 +101,12 @@ def __call__(self,
False)

# patch notifyModified to prevent setModificationDate()
old_notifyModified = DefaultDublinCoreImpl.notifyModified
patched_notifyModified = lambda *args: None
DefaultDublinCoreImpl.notifyModified = patched_notifyModified
# notifyModified lives in plone.dexterity but
# older versions used notifyModified from
# Products.CMFDefault.DublinCore.DefaultDublinCoreImpl
patch = lambda *args: None
old_notifyModified = getattr(DexterityContent, 'notifyModified', None)
DexterityContent.notifyModified = patch

site_props.manage_changeProperties(enable_link_integrity_checks=False)

Expand Down Expand Up @@ -132,7 +135,11 @@ def __call__(self,
enable_link_integrity_checks=link_integrity
)

DefaultDublinCoreImpl.notifyModified = old_notifyModified
# reset notifyModified to old state
if old_notifyModified is None:
del DexterityContent.notifyModified
else:
DexterityContent.notifyModified = old_notifyModified

endtime = datetime.now()
duration = (endtime - starttime).seconds
Expand Down
39 changes: 14 additions & 25 deletions plone/app/contenttypes/tests/test_migration.py
Expand Up @@ -808,7 +808,7 @@ def test_modifield_date_is_unchanged(self):
at_newsitem = at_folder1['newsitem']

# be 100% sure the migration-date is after the creation-date
time.sleep(0.1)
time.sleep(0.5)

# relate them
at_doc1.setRelatedItems([at_doc2])
Expand All @@ -817,6 +817,13 @@ def test_modifield_date_is_unchanged(self):
at_folder1.setRelatedItems([at_doc2])
at_folder2.setRelatedItems([at_doc1])

at_folder1_date = at_folder1.ModificationDate()
at_folder2_date = at_folder2.ModificationDate()
at_folder3_date = at_folder3.ModificationDate()
at_doc1_date = at_doc1.ModificationDate()
at_doc2_date = at_doc2.ModificationDate()
at_doc3_date = at_doc3.ModificationDate()

# migrate content
applyProfile(self.portal, 'plone.app.contenttypes:default')

Expand Down Expand Up @@ -845,30 +852,12 @@ def test_modifield_date_is_unchanged(self):
self.assertTrue(at_folder2 is not dx_folder2)

# assert ModificationDates
self.assertEqual(
at_folder1.ModificationDate(),
dx_folder1.ModificationDate()
)
self.assertEqual(
at_folder2.ModificationDate(),
dx_folder2.ModificationDate()
)
self.assertEqual(
at_folder3.ModificationDate(),
dx_folder3.ModificationDate()
)
self.assertEqual(
at_doc1.ModificationDate(),
dx_doc1.ModificationDate()
)
self.assertEqual(
at_doc2.ModificationDate(),
dx_doc2.ModificationDate()
)
self.assertEqual(
at_doc3.ModificationDate(),
dx_doc3.ModificationDate()
)
self.assertEqual(at_folder1_date, dx_folder1.ModificationDate())
self.assertEqual(at_folder2_date, dx_folder2.ModificationDate())
self.assertEqual(at_folder3_date, dx_folder3.ModificationDate())
self.assertEqual(at_doc1_date, dx_doc1.ModificationDate())
self.assertEqual(at_doc2_date, dx_doc2.ModificationDate())
self.assertEqual(at_doc3_date, dx_doc3.ModificationDate())

# assert single references
dx_doc1_related = [x.to_object for x in dx_doc1.relatedItems]
Expand Down

1 comment on commit de5e44d

@mister-roboto
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TESTS FAILED
Mr.Roboto url : http://jenkins.plone.org/roboto/get_info?push=8d914365d8fe45dfb29448dbac492f91
[SUCCESS] kgs-plone.app.contenttypes-plone-5.0-python-2.7 kgs
[FAILURE] kgs-plone.app.contenttypes-plone-4.3-python-2.6 kgs
[FAILURE] kgs-plone.app.contenttypes-plone-4.3-python-2.7 kgs

Please sign in to comment.