wids = [] for word in words: if not isinstance(word, unicode): raise LexiconError('Only unicode string can be indexed (%s)' % repr(word)) try: wids.append(tree[word]) except KeyError: while True: if self._v_nextid is None: self._v_nextid = self._randrange(0x4000, 0x10000000) wid = self._v_nextid self._v_nextid += 1 if wid not in self._wids: break self._v_nextid = None tree[word] = wid self._wids[wid] = (word, language) wids.append(wid) return wids Lexicon.insertWords = insertWords logger.info("ConflictError fix: patching zopyx.txng3.core.lexicon.Lexicon.insertWords()")
# prevent writing to zodb on each user login # each time user login to site plone makes changes in zodb from Products.RhaptosCatFixes import logger from Products.CMFPlone.MembershipTool import MembershipTool def setLoginTimes(self): res = False if not self.isAnonymousUser(): member = self.getAuthenticatedMember() login_time = member.getProperty('login_time', '2000/01/01') if str(login_time) == '2000/01/01': res = True login_time = self.ZopeTime() time = self.ZopeTime() if not res and (time - login_time) < 0.1: return False member.setProperties(login_time=time, last_login_time=login_time) return res MembershipTool.setLoginTimes = setLoginTimes logger.info("Patching MembershipTool.setLoginTimes()")
def register(self, obj): uid = self.queryUid(obj, default=None) if uid is None: # generate a new unique id and set it catalog = getToolByName(self, 'portal_catalog') if not self.UID_ATTRIBUTE_NAME in catalog._catalog.indexes: if self._v_nextid is None: self._v_nextid = self._randrange(0, self._family.maxint) uid = self._v_nextid self._v_nextid += 1 self._setUid(obj, uid) return uid while True: if self._v_nextid is None: self._v_nextid = self._randrange(0, self._family.maxint) uid = self._v_nextid self._v_nextid += 1 result = self.queryObject(uid) if result is None: self._setUid(obj, uid) return uid self._v_nextid = None return uid UniqueIdHandlerTool.register = register logger.info("ConflictError fix: patching UniqueIdHandlerTool.register()")
import random from Products.RhaptosCatFixes import logger from Products.ZCTextIndex.Lexicon import Lexicon Lexicon._v_nextid = None Lexicon._randrange = random.randrange def _getWordIdCreate(self, word): wid = self._wids.get(word) if wid is None: while True: if self._v_nextid is None: self._v_nextid = self._randrange(0x4000, 0x10000000) wid = self._v_nextid self._v_nextid += 1 if wid not in self._words: break self._v_nextid = None self.length.change(1) self._wids[word] = wid self._words[wid] = word return wid Lexicon._getWordIdCreate = _getWordIdCreate logger.info("ConflictError fix: patching ZCTextIndex Lexicon._getWordIdCreate()")
from Products.ZCTextIndex.Lexicon import Lexicon Lexicon._v_nextid = None Lexicon._randrange = random.randrange def _getWordIdCreate(self, word): wid = self._wids.get(word) if wid is None: while True: if self._v_nextid is None: self._v_nextid = self._randrange(0x4000, 0x10000000) wid = self._v_nextid self._v_nextid += 1 if wid not in self._words: break self._v_nextid = None self.length.change(1) self._wids[word] = wid self._words[wid] = word return wid Lexicon._getWordIdCreate = _getWordIdCreate logger.info( "ConflictError fix: patching ZCTextIndex Lexicon._getWordIdCreate()")
# prevent writing to zodb on each user login # each time user login to site plone makes changes in zodb from Products.RhaptosCatFixes import logger from Products.CMFPlone.MembershipTool import MembershipTool def setLoginTimes(self): res=False if not self.isAnonymousUser(): member = self.getAuthenticatedMember() login_time = member.getProperty('login_time', '2000/01/01') if str(login_time) == '2000/01/01': res=True login_time = self.ZopeTime() time = self.ZopeTime() if not res and (time - login_time) < 0.1: return False member.setProperties(login_time=time, last_login_time=login_time) return res MembershipTool.setLoginTimes = setLoginTimes logger.info("Patching MembershipTool.setLoginTimes()")
if effective_date is not None: obj.setEffectiveDate(effective_date) if expiration_date is not None: obj.setExpirationDate(expiration_date) if format is not None: obj.setFormat(format) if language is not None: obj.setLanguage(language) if rights is not None: obj.setRights(rights) # Make the catalog aware of changes obj.reindexObject(idxs=kwargs.get("updateIndexes", ())) PloneTool.editMetadata.func_code = editMetadata.func_code logger.info("patched %s", str(PloneTool.editMetadata)) def handleContentishEvent(ob, event): """ Event subscriber for (IContentish, IObjectEvent) events. """ from zope.app.container.interfaces import IObjectRemovedEvent if IObjectAddedEvent.providedBy(event): if event.newParent is not None: ob.indexObject() elif IObjectClonedEvent.providedBy(event): ob.notifyWorkflowCreated() elif IObjectRemovedEvent.providedBy(event):
if effective_date is not None: obj.setEffectiveDate(effective_date) if expiration_date is not None: obj.setExpirationDate(expiration_date) if format is not None: obj.setFormat(format) if language is not None: obj.setLanguage(language) if rights is not None: obj.setRights(rights) # Make the catalog aware of changes obj.reindexObject(idxs=kwargs.get('updateIndexes', ())) PloneTool.editMetadata.func_code = editMetadata.func_code logger.info('patched %s', str(PloneTool.editMetadata)) def handleContentishEvent(ob, event): """ Event subscriber for (IContentish, IObjectEvent) events. """ from zope.app.container.interfaces import IObjectRemovedEvent if IObjectAddedEvent.providedBy(event): if event.newParent is not None: ob.indexObject() elif IObjectClonedEvent.providedBy(event): ob.notifyWorkflowCreated() elif IObjectRemovedEvent.providedBy(event):