def activate(context): """Change the context to a local site. """ if not ISite.providedBy(context): create_new_sm(context) sm = context.getSiteManager() if IFiveSiteManager is not None and IFiveSiteManager.providedBy(sm): clean_old_five_sm(context, create=True) setup_intid(context)
def disable(context, interface): """Remove a registered utility. """ sm = context.getSiteManager() utility = sm.queryUtility(interface) if IFiveSiteManager is not None and IFiveSiteManager.providedBy(sm): parent = utility.aq_parent name = interface.__name__ parent.manage_delObjects([name]) else: sm.unregisterUtility(utility, interface)
def upgrade(self, root): # If it's a Five site manager disable it first. The annoying # part might be that the code might already have been removed # from Zope ... setattr(root, '__initialization__', True) if ISite.providedBy(root): sm = root.getSiteManager() if ((IFiveSiteManager is not None and IFiveSiteManager.providedBy(sm)) or isinstance(sm, ZODB.broken.Broken)): setSite(None) setHooks() unregisterBeforeTraverse(aq_base(root), '__local_site_hook__') if hasattr(aq_base(root), '__local_site_hook__'): delattr(aq_base(root), '__local_site_hook__') zope.interface.noLongerProvides(root, ISite) root.setSiteManager(None) else: # Cleanup broken utilities for registration in list(sm.registeredUtilities()): if isinstance(registration.component, ZODB.broken.Broken): sm.unregisterUtility( registration.component, registration.provided) # Activate local site, add an intid service. ism = interfaces.ISiteManager(root) if not ism.is_site(): ism.make_site() setSite(root) setHooks() # Delete unused Silva Document service for s in ['service_doc_previewer', 'service_nlist_previewer', 'service_sub_previewer',]: if hasattr(root, s): root.manage_delObjects([s,]) # Update service_files settings service_files = root.service_files if hasattr(aq_base(service_files), '_filesystem_storage_enabled'): service_files.storage = BlobFile delattr(service_files , '_filesystem_storage_enabled') elif service_files.storage is not BlobFile: # For the upgrade service_files.storage = BlobFile # Disable quota verification (but not accounting if this # enabled) during the migration, so the file migration can # safely happens. root.service_extensions._quota_verify = False return root
def isOldSite(self): from Products.Five.site.interfaces import IFiveSiteManager return self.isSite() and IFiveSiteManager.providedBy(getSiteManager())