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."""
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)
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)
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
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')
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')
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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']
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)
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)
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)
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)
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)
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)
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)
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)
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"]
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]
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)
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')
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)
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
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')
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)
def evolve(context): """Replaces all zope.app.file objects with z3c.blobfile counterparts.""" root = getRootFolder(context) evolveZopeAppFile(root)
def evolve(context): getRootFolder(context).getSiteManager()._evolve_to_generation_4()
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
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]