예제 #1
0
    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()")
예제 #2
0
# 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()")
예제 #3
0
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()")
예제 #5
0
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()")
예제 #6
0
# 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()")
예제 #7
0
        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):
예제 #8
0
        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):