Merge pull request #80 from plone/remove-p.a.discussion-monkey
Get rid of the monkey patch on Products.CMFPlone's CatalogTool.
This commit is contained in:
		
						commit
						fb71aee6cd
					
				@ -11,7 +11,10 @@ New:
 | 
			
		||||
 | 
			
		||||
Fixes:
 | 
			
		||||
 | 
			
		||||
- *add item here*
 | 
			
		||||
- Get rid of the monkey patch on Products.CMFPlone's CatalogTool.
 | 
			
		||||
  Issue https://github.com/plone/Products.CMFPlone/issues/1332
 | 
			
		||||
  [staeff, fredvd]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
2.4.9 (2015-11-25)
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,6 @@
 | 
			
		||||
    xmlns="http://namespaces.zope.org/zope"
 | 
			
		||||
    xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
 | 
			
		||||
    xmlns:i18n="http://namespaces.zope.org/i18n"
 | 
			
		||||
    xmlns:monkey="http://namespaces.plone.org/monkey"
 | 
			
		||||
    xmlns:zcml="http://namespaces.zope.org/zcml"
 | 
			
		||||
    xmlns:five="http://namespaces.zope.org/five"
 | 
			
		||||
    i18n_domain="plone">
 | 
			
		||||
@ -62,19 +61,6 @@
 | 
			
		||||
        profile="plone.app.discussion:default"
 | 
			
		||||
    />
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    <!-- Monkey Patches -->
 | 
			
		||||
 | 
			
		||||
    <include package="collective.monkeypatcher" />
 | 
			
		||||
 | 
			
		||||
    <monkey:patch
 | 
			
		||||
        description="This allows Catalog Tool to find comments
 | 
			
		||||
                     during clear-and-rebuild catalog"
 | 
			
		||||
        class="Products.CMFPlone.CatalogTool.CatalogTool"
 | 
			
		||||
        original="clearFindAndRebuild"
 | 
			
		||||
        replacement=".patches.patchedClearFindAndRebuild"
 | 
			
		||||
        />
 | 
			
		||||
 | 
			
		||||
    <!-- Comments -->
 | 
			
		||||
 | 
			
		||||
    <class class=".comment.Comment">
 | 
			
		||||
 | 
			
		||||
@ -21,6 +21,7 @@ from OFS.event import ObjectWillBeAddedEvent
 | 
			
		||||
from OFS.event import ObjectWillBeRemovedEvent
 | 
			
		||||
from OFS.Traversable import Traversable
 | 
			
		||||
from Products.CMFPlone.interfaces import IHideFromBreadcrumbs
 | 
			
		||||
from Products.CMFPlone import DISCUSSION_ANNOTATION_KEY as ANNOTATION_KEY
 | 
			
		||||
from persistent import Persistent
 | 
			
		||||
from plone.app.discussion.comment import Comment
 | 
			
		||||
from plone.app.discussion.interfaces import IConversation
 | 
			
		||||
@ -37,12 +38,10 @@ from zope.lifecycleevent import ObjectAddedEvent
 | 
			
		||||
from zope.lifecycleevent import ObjectCreatedEvent
 | 
			
		||||
from zope.lifecycleevent import ObjectRemovedEvent
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import time
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ANNOTATION_KEY = 'plone.app.discussion:conversation'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Conversation(Traversable, Persistent, Explicit):
 | 
			
		||||
    """A conversation is a container for all comments on a content object.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,43 +0,0 @@
 | 
			
		||||
from Acquisition import aq_inner
 | 
			
		||||
from Acquisition import aq_parent
 | 
			
		||||
from Products.CMFCore.utils import getToolByName
 | 
			
		||||
from Products.CMFPlone.utils import base_hasattr
 | 
			
		||||
from Products.CMFPlone.utils import safe_callable
 | 
			
		||||
from plone.app.discussion.conversation import ANNOTATION_KEY
 | 
			
		||||
from zope.annotation.interfaces import IAnnotations
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def patchedClearFindAndRebuild(self):
 | 
			
		||||
    """Empties catalog, then finds all contentish objects (i.e. objects
 | 
			
		||||
       with an indexObject method), and reindexes them.
 | 
			
		||||
       This may take a long time.
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    def indexObject(obj, path):
 | 
			
		||||
 | 
			
		||||
        if (base_hasattr(obj, 'indexObject') and
 | 
			
		||||
                safe_callable(obj.indexObject)):
 | 
			
		||||
 | 
			
		||||
            try:
 | 
			
		||||
                obj.indexObject()
 | 
			
		||||
 | 
			
		||||
                annotions = IAnnotations(obj)
 | 
			
		||||
                catalog = getToolByName(obj, "portal_catalog")
 | 
			
		||||
                if ANNOTATION_KEY in annotions:
 | 
			
		||||
                    conversation = annotions[ANNOTATION_KEY]
 | 
			
		||||
                    conversation = conversation.__of__(obj)
 | 
			
		||||
                    for comment in conversation.getComments():
 | 
			
		||||
                        try:
 | 
			
		||||
                            if catalog:
 | 
			
		||||
                                catalog.indexObject(comment)
 | 
			
		||||
                        except StopIteration:  # pragma: no cover
 | 
			
		||||
                            pass
 | 
			
		||||
 | 
			
		||||
            except TypeError:
 | 
			
		||||
                # Catalogs have 'indexObject' as well, but they
 | 
			
		||||
                # take different args, and will fail
 | 
			
		||||
                pass
 | 
			
		||||
 | 
			
		||||
    self.manage_catalogClear()
 | 
			
		||||
    portal = aq_parent(aq_inner(self))
 | 
			
		||||
    portal.ZopeFindAndApply(portal, search_sub=True, apply_func=indexObject)
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user