Beispiel #1
0
def evolve(context):
    """Setup client ID manager and session data container."""
    root = getRootFolder(context)
    for site in findObjectsProviding(root, IWorldCookerySite):
        sm = site.getSiteManager()
        if u'session_data' not in sm:
            setUpClientIdAndSessionDataContainer(ObjectEvent(site))
def evolve(context):

    root = getRootFolder(context)

    site = None
    for s in findObjectsProviding(root, IQuotationtoolSite):
        site = s
        break
    if site is None: raise Exception('No quotationtool site')
    hooks.setSite(site)

    sm = site.getSiteManager()

    # a container for unified comments was added
    categorizable_items = site[
        'categorizableitems'] = CategorizableItemDescriptions()
    sm.registerUtility(categorizable_items, ICategorizableItemDescriptions)
    IWriteZopeDublinCore(
        categorizable_items).title = u"Categorizable Item Descriptions"
    IWriteZopeDublinCore(
        categorizable_items
    ).description = u"""Mapping of ZOPE-Interfaces to user friendly identifiers."""

    categories = site['categories'] = CategoriesContainer()
    sm.registerUtility(categories, ICategoriesContainer)
    IWriteZopeDublinCore(categorizable_items).title = u"Categories"
    IWriteZopeDublinCore(
        categorizable_items
    ).description = u"""User defined categories for classifying user content."""
Beispiel #3
0
def evolve(context):
    u"""
    host stores dynamic host groups
    """
    convertDict = {
        u'dns': u'DNS-Server',
        u'file': u'File-Server',
        u'misc': u'Miscellaneous-Server',
        u'smtp': u'SMTP-Server',
        u'terminal': u'Terminal-Server',
        u'util': u'Utility-Server',
        u'workstation': u'Workstation',
    }

    root = getRootFolder(context) # the Zope-Root-Folders

    for host in findObjectsProviding(root, IHost):
        # convert this object
        evolve_msg = "gen. %d (%s)" % \
                   (generation, evolve.__doc__.strip())
        print "Host(%s): " % host.ikName + evolve_msg
        toDelete = []
        for oldHostGroup in host.hostGroups:
            if convertDict.has_key(oldHostGroup):
                print "delete host group ", oldHostGroup
                toDelete.append(oldHostGroup)
        for i_index in toDelete:
            host.hostGroups.remove(i_index)
        host._p_changed = True
        host.appendHistoryEntry(evolve_msg)
Beispiel #4
0
def evolve(context):
    u"""
    convert object from hard coded oid1 and oid2 to list of addresses
    """

    root = getRootFolder(context) # the Zope-Root-Folders

    for iksnmpvalue in findObjectsProviding(root, ISnmpValue):
        # convert this object
        evolve_msg = "gen. %d (%s)" % \
                   (generation, evolve.__doc__.strip())
        print "SNMP Value(%s): " % iksnmpvalue.ikName + evolve_msg
        if iksnmpvalue.oid1 is not None:
            if iksnmpvalue.oid2 is not None:
                if iksnmpvalue.oid1 == iksnmpvalue.oid2:
                    iksnmpvalue.inp_addrs = [iksnmpvalue.oid1]
                else:
                    iksnmpvalue.inp_addrs = [iksnmpvalue.oid1,
                                            iksnmpvalue.oid2]
            else:
                iksnmpvalue.inp_addrs = [iksnmpvalue.oid1]
        else:
            if iksnmpvalue.oid2 is not None:
                iksnmpvalue.inp_addrs = [iksnmpvalue.oid2]
            else:
                iksnmpvalue.inp_addrs = []
        if iksnmpvalue.checktype == u"oid":
            iksnmpvalue.checktype = u"address"
        del iksnmpvalue.oid1
        del iksnmpvalue.oid2
        iksnmpvalue.appendHistoryEntry(evolve_msg)
def evolve(context):
    root = getRootFolder(context)

    for site in findObjectsMatching(root, ISite.providedBy):
        setSite(site)

        sm = site.getSiteManager()
        cp = sm.get('controlpanel', None)
        if cp is None:
            continue
        data = cp.get('system.activity', None)
        if data is None:
            continue
        catalog = data['catalog']
        keys = []
        for key, val in data.records.items():
            if str(val.__class__) in (
                "<class 'zojax.content.draft.activity.DraftPublishedActivityRecord'>",
                "<class 'zojax.content.draft.activity.DraftStatusActivityRecord'>"):
                keys.append(key)

        for key in keys:
            del data.records[key]

        catalog.clear()
        catalog.updateIndexes()

    setSite(None)
Beispiel #6
0
def evolve(context):
    """Evolve the ZODB.

    - Remove sessionLanguage from INegotiator utilities

    - Convert _offeredLangauges attribute to offeredLangauges property

    """
    root = getRootFolder(context)

    for site in findObjectsProviding(root, ISite):

        # check if we got the right object
        obj = zope.component.queryUtility(INegotiator, context=site)
        if interfaces.INegotiatorManager.providedBy(obj):

            # remove old unused ``sessionLanguages`` attr from all objects
            delattr(obj, '_sessionLanguages')

            # migrate ``_serverLanguage`` to ``serverLanguage``
            serverLanguage = getattr(obj, '_serverLanguage')
            if not serverLanguage:
                serverLanguage = u'en'
            setattr(obj, 'serverLanguage', serverLanguage)
            delattr(obj, '_serverLanguage')

            # migrate ``_offeredLanguages`` to ``offeredLanguages``
            offeredLanguages = getattr(obj, '_offeredLanguages')
            setattr(obj, 'offeredLanguages', offeredLanguages)
            delattr(obj, '_offeredLanguages')
def evolve(context):
    root = getRootFolder(context)

    for content in findObjectsMatching(root, IRevisions.providedBy):
        content._p_activate
        schema = content.__contentclass__.__schema__

        changed = False
        if not hasattr(content, '_revisions'):
            changed = True
            content._revisions = IOBTree()
            content._revisions_length = Length(0)

        for name, field in getFields(schema).items():
            if name in content.__dict__:
                setattr(content.workingRevision, name, content.__dict__[name])
                del content.__dict__[name]
                changed = True
            elif name in ('title', 'description'):
                dc = ICMFDublinCore(content)
                val = getattr(dc, name, '')
                if val:
                    setattr(content.workingRevision, name, val)

        if changed:
            content.publishWorkingRevision()
            content._p_changed = True
Beispiel #8
0
def evolve(context):
    """ Add a commentary folder and its relation catalog."""
    root = getRootFolder(context)

    site = None
    for s in findObjectsProviding(root, IQuotationtoolSite):
        site = s
        break
    if site is None: raise Exception('No quotationtool site')
    hooks.setSite(site)

    sm = site.getSiteManager()

    container = site['aboutreferences'] = CommentAboutReferenceContainer()
    sm.registerUtility(container, ICommentAboutReferenceContainer)

    IWriteZopeDublinCore(container).title = u"Comments about References"

    IWriteZopeDublinCore(
        container
    ).description = u"""Comments about references in the referatory are stored here."""

    cat = sm['default'][
        'commentaboutreference_relation_catalog'] = zc.relation.catalog.Catalog(
            dump, load)
    cat.addValueIndex(ICommentAboutReference['reference'], dump, load)

    sm.registerUtility(cat,
                       zc.relation.interfaces.ICatalog,
                       name='commentsaboutreferences')
Beispiel #9
0
def evolve(context):
    u"""
    event stores dynamic host group
    """
    convertDict = {
        u'dns': u'DNS-Server',
        u'file': u'File-Server',
        u'misc': u'Miscellaneous-Server',
        u'smtp': u'SMTP-Server',
        u'terminal': u'Terminal-Server',
        u'util': u'Utility-Server',
        u'workstation': u'Workstation',
    }

    root = getRootFolder(context)  # the Zope-Root-Folders
    sitemanager = root.getSiteManager()
    default = sitemanager['default']
    eventUtil = default[u'AdmUtilEventCrossbar']

    for obj in findObjectsProviding(eventUtil, IAdmUtilEvent):
        # convert this object
        evolve_msg = "gen. %d (%s)" % \
                   (generation, evolve.__doc__.strip())
        if convertDict.has_key(event.hostGroup):
            event.hostGroup = None
            event._p_changed = True
        print "Object(%s): " % obj.ikName + evolve_msg
        obj.appendHistoryEntry(evolve_msg)
def evolve(context):

    root = getRootFolder(context)

    site = None
    for s in findObjectsProviding(root, IQuotationtoolSite):
        site = s
        break
    if site is None: raise Exception('No quotationtool site')
    hooks.setSite(site)

    sm = site.getSiteManager()

    # a container for unified comments was added
    container = site['comments'] = CommentContainer()
    sm.registerUtility(container, ICommentContainer)
    IWriteZopeDublinCore(container).title = u"Comments"
    IWriteZopeDublinCore(
        container).description = u"""Comments are stored here."""

    # relation catalog has changed because of unified comments
    cat = zope.component.getUtility(zc.relation.interfaces.ICatalog,
                                    context=site)
    cat.removeValueIndex('icommentaboutfigure-figure')
    cat.removeValueIndex('icommentaboutreference-reference')
    cat.addValueIndex(IComment['about'],
                      dump=dump,
                      load=load,
                      name='icomment-about')
Beispiel #11
0
def evolve(context):
    root = getRootFolder(context)
    for candidate in root.values():
        if not isinstance(candidate, asm.cms.cms.CMS):
            continue
        zope.app.component.hooks.setSite(candidate)
        intids = zope.component.getUtility(zope.intid.interfaces.IIntIds)
        for edition in candidate.editions:
            intids.register(edition)
Beispiel #12
0
def evolve(context):
    u"""
    convert object to new standard
    """
    root = getRootFolder(context) # the Zope-Root-Folders

    for service in findObjectsProviding(root, IServiceHttp):
        evolve_msg = "gen. %d (%s)" % \
            (generation, evolve.__doc__.strip())
        print "Service(%s): " % service.ikName + evolve_msg
        service.appendHistoryEntry(evolve_msg)
Beispiel #13
0
def evolve(context):
    u"""
    initial generation
    """
    root = getRootFolder(context)  # the Zope-Root-Folders
    for obj in findObjectsProviding(root, IAdmUtilCategories):
        # convert this object
        evolve_msg = "gen. %d (%s)" % \
                   (generation, evolve.__doc__.strip())
        print "Object(%s): " % obj.ikName + evolve_msg
        obj.appendHistoryEntry(evolve_msg)
Beispiel #14
0
def evolve(context):
    u"""
    convert object to new standard
    """
    root = getRootFolder(context)  # the Zope-Root-Folders
    for host in findObjectsProviding(root, IHostRouterGeneral):
        # convert this object
        evolve_msg = "gen. %d (%s)" % \
                   (generation, evolve.__doc__.strip())
        print "Host(%s): " % host.ikName + evolve_msg
        host.appendHistoryEntry(evolve_msg)
Beispiel #15
0
def evolve(context):
    root = getRootFolder(context)
    for candidate in root.values():
        if not isinstance(candidate, asm.cms.cms.CMS):
            continue
        zope.app.component.hooks.setSite(candidate)
        try:
            intids = zope.component.getUtility(zope.intid.IIntIds)
            intids.register(candidate)
        finally:
            zope.app.component.hooks.setSite(None)
Beispiel #16
0
def evolve(context):
    root = getRootFolder(context)
    for cms in root.values():
        if not isinstance(cms, asm.cms.cms.CMS):
            continue
        zope.app.component.hooks.setSite(cms)
        try:
            install_utility(cms)
        except KeyError:
            pass
        finally:
            zope.app.component.hooks.setSite(None)
Beispiel #17
0
def evolve(context):
    u"""
    ssh service object now supports port number
    """
    root = getRootFolder(context)  # the Zope-Root-Folders
    for service in findObjectsProviding(root, IServiceSsh):
        # convert this object
        evolve_msg = "gen. %d (%s)" % \
                   (generation, evolve.__doc__.strip())
        print "Service(%s): " % service.ikName + evolve_msg
        # todo ....
        service.appendHistoryEntry(evolve_msg)
Beispiel #18
0
def evolve(context):
    u"""
    convert object to new standard
    """

    root = getRootFolder(context)  # the Zope-Root-Folders

    for ikobj in findObjectsProviding(root, IDevice):
        # convert this object
        evolve_msg = "gen. %d (%s)" % \
                   (generation, evolve.__doc__.strip())
        ikobj.appendHistoryEntry(evolve_msg)
Beispiel #19
0
def evolve(context):
    """ Evolve
    """
    root = getRootFolder(context)
    site = root['stiam.ro']
    sm = site.getSiteManager()
    service = sm['default']['cronjob4news']
    for jobid, value in service.jobs.items():
        name = value.task
        obj = sm.getUtility(ITask, name=name)
        obj.jobid = jobid
        logger.info('Set jobid: %s for local utility: %s', jobid, name)
Beispiel #20
0
def evolve(context):
    u"""
    net object now with shortName ipnet
    """
    root = getRootFolder(context)  # the Zope-Root-Folders

    for net in findObjectsProviding(root, IIpNet):
        # convert this object
        evolve_msg = u"gen. %d (%s)" % \
                   (generation, evolve.__doc__.strip())
        net.shortName = "ipnet"
        net.appendHistoryEntry(evolve_msg)
Beispiel #21
0
def evolve(context):
    root = getRootFolder(context)
    for cms in root.values():
        if not isinstance(cms, asm.cms.cms.CMS):
            continue
        zope.app.component.hooks.setSite(cms)
        try:
            catalog = zope.component.getUtility(
                zope.catalog.interfaces.ICatalog, name='edition_catalog')
            catalog['body'].clear()
            catalog.updateIndexes()
        finally:
            zope.app.component.hooks.setSite(None)
Beispiel #22
0
def evolve(context):
    u"""
    convert object to new standard
    """

    root = getRootFolder(context)  # the Zope-Root-Folders

    for iksnmpvalue in findObjectsProviding(root, ISnmpValue):
        # convert this object
        evolve_msg = "gen. %d (%s)" % \
                   (generation, evolve.__doc__.strip())
        print "SNMP Value(%s): " % iksnmpvalue.ikName + evolve_msg
        iksnmpvalue.appendHistoryEntry(evolve_msg)
Beispiel #23
0
def evolve(context):
    root = getRootFolder(context)

    for site in findObjectsMatching(root, ISite.providedBy):
        setSite(site)
        def matchIndex(ob):
            return ob.__class__ in (NormalizationWrapper, )
        try:
            for rt in (site.getSiteManager(), site):
                for index in findObjectsMatching(rt, matchIndex):
                    del index.__parent__[index.__name__]
        finally:
            setSite(None)
Beispiel #24
0
def evolve(context):
    u"""
    site update with some bootstraps
    """
    root = getRootFolder(context)  # the Zope-Root-Folders

    for site in findObjectsProviding(root, ISite):
        # convert this object
        evolve_msg = "gen. %d (%s)" % \
                   (generation, evolve.__doc__.strip())
        print u"Site(%s): " % site.ikName + evolve_msg
        createSupervisorUtils(site)
        site.appendHistoryEntry(evolve_msg)
Beispiel #25
0
def evolve(context):
    u"""
    net with inward relaying shutdown events
    """
    root = getRootFolder(context)  # the Zope-Root-Folders

    for net in findObjectsProviding(root, IIpNet):
        # convert this object
        evolve_msg = "gen. %d (%s)" % \
                   (generation, evolve.__doc__.strip())
        print "IpNet(%s): " % net.ikName + evolve_msg
        net.eventInpObjs_inward_relaying_shutdown = set([])
        net.appendHistoryEntry(evolve_msg)
Beispiel #26
0
def evolve(context):
    u"""
    convert object to new standard
    """

    root = getRootFolder(context)  # the Zope-Root-Folders

    for iklatency in findObjectsProviding(root, ILatency):
        # convert this object
        evolve_msg = "gen. %d (%s)" % \
                   (generation, evolve.__doc__.strip())
        print "Latency Check(%s): " % iklatency.ikName + evolve_msg
        iklatency.appendHistoryEntry(evolve_msg)
Beispiel #27
0
def evolve(context):
    u"""
    new ikdate1
    """
    
    root = getRootFolder(context)

    for ikslave in findObjectsProviding(root, ISlave):
        ikslave.ikdate1 = None
        evolve_msg = "gen. %d (%s)" % \
                   (generation, evolve.__doc__.strip())
        print "Slave(%s): " % ikslave.ikName + evolve_msg
        ikslave.appendHistoryEntry(evolve_msg)
Beispiel #28
0
def evolve(context):
    u"""
    convert object to new standard
    """

    root = getRootFolder(context)  # the Zope-Root-Folders

    for ikobj in findObjectsProviding(root, IOrganisationalUnit):
        # convert this object
        evolve_msg = "gen. %d (%s)" % \
                   (generation, evolve.__doc__.strip())
        print "OrganisationalUnit(%s): " % ikobj.ikName + evolve_msg
        ikobj.appendHistoryEntry(evolve_msg)
Beispiel #29
0
def evolve(context):
    """Setup catalog and indices for fulltext search."""
    root = getRootFolder(context)
    for site in findObjectsProviding(root, IWorldCookerySite):
        sm = site.getSiteManager()
        if u'catalog' not in sm:
            setupCatalogAndIndices(ObjectEvent(site))

            setSite(site)
            for recipe in findObjectsProviding(site, IRecipe):
                addIntIdSubscriber(recipe, ObjectEvent(recipe))
                indexDocSubscriber(ObjectEvent(recipe))
            setSite(None)
def evolve(context):
    """ create year-set and origyear-set indices
    """

    # We moved the imports here because of getInfo which only takes
    # the __doc__ string in evolve. getInfo should not import
    # anything.
    import zope.interface
    import zope.component
    from zope.app.zopeappgenerations import getRootFolder
    from zope.app.generations.utility import findObjectsProviding
    from zope.app.component import hooks

    import zc.relation
    import zope.intid
    from quotationtool.quotation.interfaces import IQuotation
    from quotationtool.relation import load, dump

    from z3c.indexer.interfaces import IIndexer, IIndex
    from z3c.indexer.index import SetIndex

    from quotationtool.site.interfaces import IQuotationtoolSite

    root = getRootFolder(context)

    site = None
    for s in findObjectsProviding(root, IQuotationtoolSite):
        site = s
        break
    if site is None:
        raise Exception('No quotationtool site!')
    hooks.setSite(site)

    sm = site.getSiteManager()
    default = sm['default']

    year_set = default['year-set'] = SetIndex()
    origyear_set = default['origyear-set'] = SetIndex()

    sm.registerUtility(origyear_set, IIndex, name='origyear-set')
    sm.registerUtility(year_set, IIndex, name='year-set')

    sm.unregisterUtility(component=default['year-field'],
                         provided=IIndex,
                         name='year-field')
    sm.unregisterUtility(component=default['year-value'],
                         provided=IIndex,
                         name='year-value')
    del default['year-field']
    del default['year-value']
Beispiel #31
0
def evolve(context):
    root = getRootFolder(context)
    old_site = getSite()
    for site in findObjectsMatching(root, ISite.providedBy):
        setSite(site)
        try:
            for shortcut in findObjectsMatching(site, IShortcut.providedBy):
                print 'updating shortcut', shortcut
                try:
                    shortCutAdded(shortcut, None)
                except ComponentLookupError:
                    pass
        finally:
            setSite(old_site)
Beispiel #32
0
def evolve(context):
    root = getRootFolder(context)
    for cms in root.values():
        if not isinstance(cms, asm.cms.cms.CMS):
            continue
        zope.app.component.hooks.setSite(cms)
        try:
            catalog = zope.component.getUtility(
                zope.catalog.interfaces.ICatalog, name='edition_catalog')
            catalog['tags'] = zc.catalog.catalogindex.SetIndex(
                field_name='tags_set', interface=asm.cms.interfaces.IEdition)
            catalog.updateIndexes()
        finally:
            zope.app.component.hooks.setSite(None)
Beispiel #33
0
def evolve(context):
    root = getRootFolder(context)
    for candidate in root.values():
        if not isinstance(candidate, asm.cms.cms.CMS):
            continue

        stack = [candidate]
        while stack:
            obj = stack.pop()
            stack.extend(obj.subpages)
            for edition in obj.editions:
                if edition.modified.tzinfo is None:
                    edition.modified = edition.modified.replace(
                        tzinfo=pytz.UTC)
Beispiel #34
0
def evolve(context):
    u"""
    host object now with production state
    """

    root = getRootFolder(context)  # the Zope-Root-Folders

    for host in findObjectsProviding(root, IHost):
        # convert this object
        evolve_msg = "gen. %d (%s)" % \
                   (generation, evolve.__doc__.strip())
        print "Host(%s): " % host.ikName + evolve_msg
        host.productionState = u'production'
        host.appendHistoryEntry(evolve_msg)
Beispiel #35
0
def evolve(context):
    u"""
    site with OOBTree for items data
    """
    root = getRootFolder(context)  # the Zope-Root-Folders

    for site in findObjectsProviding(root, ISite):
        # convert this object
        if not hasattr(site, 'data'):
            evolve_msg = "gen. %d (%s)" % \
                       (generation, evolve.__doc__.strip())
            print u"Site(%s): " % site.ikName + evolve_msg
            site.data = site._SampleContainer__data
            site.appendHistoryEntry(evolve_msg)
Beispiel #36
0
def evolve(context):
    u"""
    nagios utility now supports path information for nagios data
    """

    root = getRootFolder(context)  # the Zope-Root-Folders

    for obj in findObjectsProviding(root, IAdmUtilGeneratorNagios):
        # convert this object
        evolve_msg = "gen. %d (%s)" % \
                   (generation, evolve.__doc__.strip())
        obj.pathConfigData = u"/opt/nagios/etc/ict_ok"
        print "Object(%s): " % obj.ikName + evolve_msg
        obj.appendHistoryEntry(evolve_msg)
Beispiel #37
0
def evolve(context):
    u"""
    service object now supports ip-protocol and product value
    """
    root = getRootFolder(context)  # the Zope-Root-Folders

    for service in findObjectsProviding(root, IService):
        # convert this object
        evolve_msg = "gen. %d (%s)" % \
                   (generation, evolve.__doc__.strip())
        service.product = u""
        service.ipprotocol = None
        print "Service(%s): " % service.ikName + evolve_msg
        service.appendHistoryEntry(evolve_msg)
Beispiel #38
0
def evolve(context):
    u"""
    convert object with new snmp index cache
    """

    root = getRootFolder(context)  # the Zope-Root-Folders

    for iksnmpvalue in findObjectsProviding(root, ISnmpValue):
        # convert this object
        evolve_msg = "gen. %d (%s)" % \
                   (generation, evolve.__doc__.strip())
        print "SNMP Value(%s): " % iksnmpvalue.ikName + evolve_msg
        iksnmpvalue.snmpIndexDict = None
        iksnmpvalue.snmpIndexDictTimeStamp = 0.0
        iksnmpvalue.appendHistoryEntry(evolve_msg)
Beispiel #39
0
def evolve(context):
    """Evolve the ZODB from a Zope 3.1 to a 3.2 compatible format.

    - Converts all internal principals to use new password managers.
    """
    root = getRootFolder(context)

    for site in findObjectsProviding(root, ISite):
        sm = site.getSiteManager()
        for principal in findObjectsProviding(sm, IInternalPrincipal):
            if not hasattr(principal, "_passwordManagerName"):
                principal._passwordManagerName = "Plain Text"
            if not hasattr(principal, "_password"):
                principal._password = principal.__dict__["password"]
                del principal.__dict__["password"]
Beispiel #40
0
def evolve(context):
    root = getRootFolder(context)
    for obj in findObjectsProviding(root, IAnnotatable):
        dc = IWriteZopeDublinCore(obj)
        if isinstance(dc, ZDCAnnotatableAdapter):
            # simply mark the ZDCAnnotationData object as dirty so
            # that it gets repickled
            dc._mapping._p_activate()
            dc._mapping._p_changed = True

            # also mark the object holding a reference to it (the
            # annotations mapping) as dirty.  It contains a reference
            # to the old class path for ghosts
            annotations = IAnnotations(obj)
            if DCkey in annotations:
                annotations[DCkey] = annotations[DCkey]
Beispiel #41
0
def evolve(context):
    root = getRootFolder(context)

    for engine in findObjectsMatching(root, ITaggingEngine.providedBy):
        fixEngine(engine)

    for site in findObjectsMatching(root, ISite.providedBy):
        for engine in findObjectsMatching(
            site.getSiteManager(), ITaggingEngine.providedBy):
            fixEngine(engine)

    for loc in findObjectsMatching(root, ILocation.providedBy):
        loc._p_activate()
        for attr in loc.__dict__.values():
            if ITaggingEngine.providedBy(attr):
                fixEngine(attr)
Beispiel #42
0
def evolve(context):
    """ Evolve
    """
    root = getRootFolder(context)
    site = root['stiam.ro']
    sm = site.getSiteManager()
    if 'intids' not in sm['default']:
        intids = IntIds()
        sm['default']['intids'] = intids
        sm.registerUtility(intids, IIntIds)
        logger.info('Registered utility intids')

    # Setup text index
    if 'stiam.ro.text' not in sm['default']:
        textIndex = TextIndex()
        sm['default']['stiam.ro.text'] = textIndex
        sm.registerUtility(textIndex, interfaces.IIndex, name='stiam.ro.text')
        logger.info('Registered index stiam.ro.text')

    # Setup title index
    if 'stiam.ro.title' not in sm['default']:
        titleIndex = FieldIndex()
        sm['default']['stiam.ro.title'] = titleIndex
        sm.registerUtility(titleIndex, interfaces.IIndex, name='stiam.ro.title')
        logger.info('Registered index stiam.ro.title')

    # Setup description index
    if 'stiam.ro.description' not in sm['default']:
        descriptionIndex = TextIndex()
        sm['default']['stiam.ro.description'] = descriptionIndex
        sm.registerUtility(descriptionIndex, interfaces.IIndex, name='stiam.ro.description')
        logger.info('Registered index stiam.ro.description')

    # Setup updated index
    if 'stiam.ro.effective' not in sm['default']:
        updatedIndex = FieldIndex()
        sm['default']['stiam.ro.effective'] = updatedIndex
        sm.registerUtility(updatedIndex, interfaces.IIndex, name='stiam.ro.effective')
        logger.info('Registered index stiam.ro.effective')

    # Setup tags index
    if 'stiam.ro.tags' not in sm['default']:
        tagsIndex = SetIndex()
        sm['default']['stiam.ro.tags'] = tagsIndex
        sm.registerUtility(tagsIndex, interfaces.IIndex, name='stiam.ro.tags')
        logger.info('Registered index stiam.ro.tags')
Beispiel #43
0
def evolve(context):
    root = getRootFolder(context)
    old_site = getSite()
    for site in findObjectsMatching(root, ISite.providedBy):
        setSite(site)
        try:
            for shortcut in list(findObjectsMatching(site, IShortcut.providedBy)):
                print 'updating shortcut', shortcut
                try:
                    getParents(shortcut.raw_target)
                except TypeError:
                    try:
                        objectRemoved(shortcut.raw_target, None)
                    except ComponentLookupError:
                        pass
        finally:
            setSite(old_site)
Beispiel #44
0
def evolve(context):
    """ Evolve
    """
    root = getRootFolder(context)
    site = root['stiam.ro']
    sm = site.getSiteManager()
    if 'cronjob4news' not in sm['default']:
        service = remotetask.TaskService()
        sm['default']['cronjob4news'] = service
        service = sm['default']['cronjob4news']
        sm.registerUtility(service, ITaskService, name="cronjob4news")
        logger.info('Registered utility cronjob4news')
    else:
        service = sm['default']['cronjob4news']

    # Add news updaters
    pages = site.values()

    sursa = site['sursa']
    now = datetime.now()
    minute = now.minute
    for page in pages:
        if not IPage.providedBy(page):
            continue

        sources = getattr(page, 'sources', '')
        if isinstance(sources, (str, unicode)):
            sources = sources.split('\n')

        for source in sources:
            server, news = source.split('/')
            rss = sursa[server][news]
            name = u'%s.%s.%s' % ('sursa', server, news)

            if 'updater' not in rss:
                logger.info('Adding updater for rss %s', name)
                updater = NewsUpdater()
                rss['updater'] = updater
                updater = rss['updater']
                sm.registerUtility(updater, ITask, name=name)
                service.addCronJob(name, (), minute=(minute,))
                minute += 7
                minute = minute % 60
Beispiel #45
0
def evolve(context):
    """ Evolve
    """
    root = getRootFolder(context)
    site = root['stiam.ro']

    for page in site.values():
        if not IPage.providedBy(page):
            continue

        if hasattr(page, 'last_updated'):
            logger.info('Deleting last_updated attr: %s', page)
            delattr(page, 'last_updated')
        if hasattr(page, 'update_period'):
            logger.info('Deleting update_period attr: %s', page)
            delattr(page, 'update_period')
        if hasattr(page, 'sources'):
            logger.info('Deleting sources attr: %s', page)
            delattr(page, 'sources')
Beispiel #46
0
def evolve(context):
    root = getRootFolder(context)

    for site in findObjectsProviding(root, ISite):
        sm = site.getSiteManager()

        pau = component.queryUtility(IAuthentication, context = sm)
        if pau is not None and IPluggableAuthentication.providedBy(pau):
            if OLD_CRED_NAME in pau:
                plugins = list(pau.credentialsPlugins)
                if OLD_CRED_NAME in plugins:
                    plugins.remove(OLD_CRED_NAME)
                    pau.credentialsPlugins = tuple(plugins)

                del pau[OLD_CRED_NAME]

            setSite(site)
            factory = component.getUtility(ICredentialsPluginFactory, 'default.credentials')
            factory.install()
            factory.activate()
            setSite(None)
Beispiel #47
0
def evolve(context):
    """Replaces all zope.app.file objects with z3c.blobfile counterparts."""
    root = getRootFolder(context)
    evolveZopeAppFile(root)
Beispiel #48
0
def evolve(context):
    getRootFolder(context).getSiteManager()._evolve_to_generation_4()
Beispiel #49
0
def evolve(context):
    """Evolve the ZODB from a Zope X3.0 to a X3.1 compatible format.

    - The Principal Annotation Service was replaced by the Principal
      Annotation Utility. Thus all service registrations have to be changed to
      utility registrations. 

    - The Error Reporting Service was replaced by the Error Reporting
      Utility. Thus, all service registrations have to be changed to utility
      registrations. 

    - Component-based registrations used to keep track of their components via
      the component's path. Now it stores the component directly. All
      registrations are updated to this new format.

    - Converts all service registrations to utility registrations providing
      IService, which is the method used to simulate the old service API.

    - Remove 'RegistrationManager' object from all site management folders.

    - Remove all local adapter and utility service instances. 
    """
    root = getRootFolder(context)

    for site in findObjectsProviding(root, ISite):
        sm = site.getSiteManager()

        # Remove old registration manager instances
        for rm in findObjectsProviding(sm, IRegistrationManager):
            # Make sure that we called the new registration manager
            # which will retrieve the old one, if necessary
            zapi.getParent(rm).registrationManager = rm

            # Do a hard core delete, because I want no whining and complaining
            container = zapi.getParent(rm)
            del container._SampleContainer__data[zapi.getName(rm)]

            # Make sure the new registration manager has the correct name:
            rm.__name__ = '++registrations++'
            rm.__parent__ = container

        for reg_container in findObjectsProviding(sm, IRegisterableContainer):
            manager = reg_container.registrationManager

            # Iterate through each registration and fix it up.
            for reg in tuple(manager.values()):

                # Regardless of registration type, we want to convert the
                # component path to component  
                if ('_BBB_componentPath' in reg.__dict__ and
                    reg._BBB_componentPath is not None):

                    reg.component = reg.getComponent()
                    del reg.__dict__['_BBB_componentPath']

                # Fixup and convert service registrations
                if IServiceRegistration.providedBy(reg):
                    if reg.name == 'ErrorLogging':
                        fixupErrorLogging(reg_container, reg)

                    elif reg.name == 'PrincipalAnnotation':
                        fixupPrincipalAnnotation(reg_container, reg)

                    elif reg.name in ('Utilities', 'Adapters'):
                        # Delete the registration
                        reg.status = InactiveStatus
                        del manager[zapi.name(reg)]
                        # Delete the component
                        c = reg.component
                        del zapi.getParent(c)[zapi.name(c)]

                    else:
                        # Handle all outstanding service registrations
                        # Create a new utility registration
                        new_reg = UtilityRegistration(reg.name, IService,
                                                      reg.component)
                        manager.addRegistration(new_reg)
                        new_reg.status = ActiveStatus
                        # Delete the old registration
                        reg.status = InactiveStatus
                        del manager[zapi.getName(reg)]

                # Fixup utility registrations
                else:
                    # Getting the provided interface converts the utility
                    # registration automatically from 'interface' -> 'provided'
                    reg.provided
                    # Now let's reactivate the utility, so it will be
                    # available within the new framework
                    orig = reg.status
                    reg.status = InactiveStatus
                    reg.status = orig
Beispiel #50
0
def evolve(context):
    """Evolve existing PAUs and group folders.

    - Group folders should no longer be registered.

    - PAUs that use group folders should use their contents name, not their
      (formerly) registered name.

    Group folders used by multiple PAUs were not supported, and are not
    supported with this evolution.
    """
    root = getRootFolder(context)

    for site in findObjectsProviding(root, ISite):
        sm = site.getSiteManager()
        for pau in findObjectsProviding(
            sm, zope.app.authentication.interfaces.IPluggableAuthentication):
            for nm, util in component.getUtilitiesFor(
                zope.app.authentication.interfaces.IAuthenticatorPlugin,
                context=pau):
                if groupfolder.IGroupFolder.providedBy(util):
                    if util.__parent__ is not pau:
                        raise RuntimeError(
                            "I don't know how to migrate your database: "
                            "each group folder should only be within the "
                            "Pluggable Authentication utility that uses it")
                    # we need to remove this registration
                    regs = registration.Registered(util).registrations()
                    if len(regs) != 1:
                        raise RuntimeError(
                            "I don't know how to migrate your database: "
                            "you should only have registered your group "
                            "folder as an IAuthenticatorPlugin, but it looks "
                            "like it's registered for something additional "
                            "that I don't expect")
                    r = regs[0]
                    r.registry.unregisterUtility(
                       util,
                       zope.app.authentication.interfaces.IAuthenticatorPlugin,
                       nm)
                    if r.name in pau.authenticatorPlugins:
                        if util.__name__ != r.name: # else no-op
                            plugins = list(pau.authenticatorPlugins)
                            if util.__name__ in pau.authenticatorPlugins:
                                # argh! another active plugin's name is
                                # the same as this group folder's
                                # __name__.  That means we need to choose
                                # a new name that is also not in
                                # authenticatorPlugins and not in
                                # pau.keys()...
                                ct = 0
                                nm = '%s_%d' % (util.__name__, ct)
                                while (nm in pau.authenticatorPlugins or
                                       nm in pau):
                                    ct += 1
                                    nm = '%s_%d' % (util.__name__, ct)
                                IObjectMover(util).moveTo(pau, nm)
                            plugins[plugins.index(r.name)] = util.__name__
                            pau.authenticatorPlugins = tuple(plugins)
            for k, r in pau.registrationManager.items():
                if groupfolder.IGroupFolder.providedBy(r.component):
                    del pau.registrationManager[k]