def bootStrapSubscriberDatabase(event): """initialisation of ict_ok supervisor on first database startup """ if appsetup.getConfigContext().hasFeature('devmode'): logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)") dummy_db, connection, dummy_root, root_folder = \ getInformationFromEvent(event) madeUtilManager = ensureUtility(root_folder, IUtilManager, 'UtilManager', UtilManager, '', copy_to_zlog=False, asObject=True) if isinstance(madeUtilManager, UtilManager): logger.info(u"bootstrap: Ensure named UtilManager") dcore = IWriteZopeDublinCore(madeUtilManager) dcore.title = u"ICT_Ok Utility Manager" dcore.creators = (u"bootstrap auto-adder", ) dcore.created = datetime.utcnow() madeUtilManager.ikName = dcore.title madeUtilManager.__post_init__() transaction.get().commit() connection.close()
def bootstrapSubscriber(ev): db, connection, root, portal = getInformationFromEvent(ev) if portal is None: portal = Portal(title=u'Portal') interface.alsoProvides(portal, IContainmentRoot) event.notify(ObjectCreatedEvent(portal)) root[ZopePublication.root_name] = portal transaction.commit() try: reconfigurePortal(portal) setSite(portal) catalog = component.getUtility(IConfiglet, 'system.catalog').catalog catalog.clear() catalog.updateIndexes() setSite(None) except: del root[ZopePublication.root_name] transaction.commit() raise transaction.commit() connection.close() event.notify(DatabaseOpenedWithRoot(db))
def test_ensureUtility(self): self.createRFAndSM() db, connection, root, root_folder = getInformationFromEvent( EventStub(self.db)) # TODO: check EventSub root_folder = self.root_folder for i in range(2): cx = self.db.open() name = ensureUtility(root_folder, IErrorReportingUtility, 'ErrorReporting', ErrorReportingUtility, 'ErrorReporting') if i == 0: self.assertEqual(name, 'ErrorReporting') else: self.assertEqual(name, None) root = cx.root() root_folder = root[ZopePublication.root_name] package_name = '/++etc++site/default' package = traverse(self.root_folder, package_name) self.assert_(IErrorReportingUtility.providedBy( traverse(package, 'ErrorReporting'))) transaction.commit() cx.close()
def bootStrapSubscriber(event): """initialisation of IntId utility on first database startup """ if appsetup.getConfigContext().hasFeature('devmode'): logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)") dummy_db, connection, dummy_root, root_folder = \ getInformationFromEvent(event) # search in global component registry sitem = root_folder.getSiteManager() # search for ICatalog utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(ICatalog) ] instUtilityICatalog = utils[0].component if not "host_esxuuid_index" in instUtilityICatalog.keys(): host_esxuuid_index = TextIndex(interface=ISearchableText, field_name='getSearchableHostEsxUuid', field_callable=True) instUtilityICatalog['host_esxuuid_index'] = host_esxuuid_index # search for IAdmUtilSupervisor utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(IAdmUtilSupervisor) ] instAdmUtilSupervisor = utils[0].component instAdmUtilSupervisor.appendEventHistory(\ u" bootstrap: ICatalog - create esx uuid index for entry type 'vmware_esx'") # creates and stores the local system in ZODB # createLocalSystem(root_folder) transaction.get().commit() connection.close()
def bootStrapSubscriberDatabase(event): """initialisation of eventcrossbar utility on first database startup """ if appsetup.getConfigContext().hasFeature('devmode'): logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)") dummy_db, connection, dummy_root, root_folder = \ getInformationFromEvent(event) madeAdmUtilCompliance = ensureUtility(root_folder, IAdmUtilCompliance, 'AdmUtilCompliance', AdmUtilCompliance, '', copy_to_zlog=False, asObject=True) if isinstance(madeAdmUtilCompliance, AdmUtilCompliance): logger.info(u"bootstrap: Ensure named AdmUtilCompliance") dcore = IWriteZopeDublinCore(madeAdmUtilCompliance) dcore.title = u"Compliance Utiltiy" dcore.created = datetime.utcnow() madeAdmUtilCompliance.ikName = dcore.title madeAdmUtilCompliance.__post_init__() sitem = root_folder.getSiteManager() utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(IAdmUtilSupervisor) ] instAdmUtilSupervisor = utils[0].component instAdmUtilSupervisor.appendEventHistory(\ u" bootstrap: made Compliance Utiltiy") else: ## search in global component registry #sitem = root_folder.getSiteManager() ## search for ICatalog #utils = [ util for util in sitem.registeredUtilities() #if util.provided.isOrExtends(ICatalog)] #instUtilityICatalog = utils[0].component #if not "host_oid_index" in instUtilityICatalog.keys(): #host_oid_index = FieldIndex(interface=ISearchableText, #field_name='getSearchableHostOid', #field_callable=True) #instUtilityICatalog['host_oid_index'] = host_oid_index ## search for IAdmUtilSupervisor #utils = [ util for util in sitem.registeredUtilities() #if util.provided.isOrExtends(IAdmUtilSupervisor)] #instAdmUtilSupervisor = utils[0].component #instAdmUtilSupervisor.appendEventHistory(\ #u" bootstrap: ICatalog - create oid index for entry type 'host'") if False: sitem = root_folder.getSiteManager() utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(IAdmUtilCompliance) ] instAdmUtilCompliance = utils[0].component logger.info(u"replacing all Requirements") fillUtilitiyWithReqs(instAdmUtilCompliance) transaction.get().commit() connection.close()
def bootStrapSubscriberDatabase(event): """initialisation of Message-Queue-Utility on first database startup """ if appsetup.getConfigContext().hasFeature('devmode'): logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)") dummy_db, connection, dummy_root, root_folder = \ getInformationFromEvent(event) madeNotifier = ensureUtility(root_folder, INotifierUtil, 'Notifier', NotifierUtil, '', copy_to_zlog=False, asObject=True) if isinstance(madeNotifier, NotifierUtil): logger.info(u"bootstrap: Ensure named Notifier") dcore = IWriteZopeDublinCore(madeNotifier) dcore.title = u"Notifier" dcore.created = datetime.utcnow() madeNotifier.ikName = dcore.title madeNotifier.__post_init__() sitem = root_folder.getSiteManager() utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(IAdmUtilSupervisor) ] instAdmUtilSupervisor = utils[0].component instAdmUtilSupervisor.appendEventHistory(\ u" bootstrap: made INotifier-Utility") transaction.get().commit() connection.close()
def adminSetup(event): from zope.app.appsetup.bootstrap import getInformationFromEvent db, connection, root, root_folder = getInformationFromEvent(event) principal_credentials = getPrincipalCredentialsFromZCML() setupSessionAuthentication(root_folder=root_folder, principal_credentials=principal_credentials)
def bootStrapSubscriberDatabase(event): """initialisation of linux_ha utility on first database startup """ if appsetup.getConfigContext().hasFeature('devmode'): logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)") LinuxHaConnectionThread.database = event.database dummy_db, connection, dummy_root, root_folder = \ getInformationFromEvent(event) madeAdmUtilLinuxHa = ensureUtility(root_folder, IAdmUtilLinuxHa, 'AdmUtilLinuxHa', AdmUtilLinuxHa, '', copy_to_zlog=False, asObject=True) if isinstance(madeAdmUtilLinuxHa, AdmUtilLinuxHa): logger.info(u"bootstrap: Ensure named AdmUtilLinuxHa") dcore = IWriteZopeDublinCore(madeAdmUtilLinuxHa) dcore.title = u"Linux HA" dcore.created = datetime.utcnow() madeAdmUtilLinuxHa.ikName = dcore.title madeAdmUtilLinuxHa.__post_init__() sitem = root_folder.getSiteManager() utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(IAdmUtilSupervisor) ] instAdmUtilSupervisor = utils[0].component instAdmUtilSupervisor.appendEventHistory(\ u" bootstrap: made IAdmUtilLinuxHa-Utility") #else: #sitem = root_folder.getSiteManager() #utils = [ util for util in sitem.registeredUtilities() #if util.provided.isOrExtends(IAdmUtilLinuxHa)] #instAdmUtilLinuxHa = utils[0].component #instAdmUtilLinuxHa.connect2VimServer() #sitem = root_folder.getSiteManager() ## search for ICatalog #utils = [ util for util in sitem.registeredUtilities() #if util.provided.isOrExtends(ICatalog)] #instUtilityICatalog = utils[0].component #if not "host_esx_uuid_index" in instUtilityICatalog.keys(): #host_esx_uuid_index = FieldIndex(interface=ISearchableText, #field_name='getSearchableEsxUuid', #field_callable=True) #instUtilityICatalog['host_esx_uuid_index'] = host_esx_uuid_index ## search for IAdmUtilSupervisor #utils = [ util for util in sitem.registeredUtilities() #if util.provided.isOrExtends(IAdmUtilSupervisor)] #instAdmUtilSupervisor = utils[0].component #instAdmUtilSupervisor.appendEventHistory(\ #u" bootstrap: ICatalog - create esx uuid index for entry type 'host'") #recursiveLinuxHaSubscriber(root_folder) transaction.get().commit() connection.close()
def bootStrapSessionDataManager(event): """Subscriber to the IDatabaseOpenedWithRoot Constraints: this subscriber must be run after zope.app.appsetup.session.bootStrapSubscriber Adds/replaces the stock zope ISessionDataManager with our custom one. """ db, connection, root, root_folder = getInformationFromEvent(event) try: # now first get rid of any ISessionDataContainer sm = root_folder.getSiteManager() utils = [reg for reg in sm.registeredUtilities() if reg.provided.isOrExtends(ISessionDataContainer) and reg.name == ''] if utils: # check our assumptions: there's only one, registered as a component assert len(utils) == 1 assert utils[0].factory is None utility = utils[0].component sm.unregisterUtility(utility, ISessionDataContainer) try: del utility.__parent__[utility.__name__] except: pass transaction.commit() utils = [reg for reg in sm.registeredUtilities() if reg.provided.isOrExtends(interfaces.ISessionDataManager) and reg.name == ''] if utils: # check our assumptions: there's only one, registered as a component assert len(utils) == 1 assert utils[0].factory is None utility = utils[0].component if isinstance(utility, SessionDataManager): return # nothing to do sm.unregisterUtility(utility, interfaces.ISessionDataManager) try: del utility.__parent__[utility.__name__] except: pass addConfigureUtility( root_folder, interfaces.ISessionDataManager, 'SessionDataManager', SessionDataManager, ) transaction.commit() except: transaction.abort() raise finally: connection.close()
def bootStrapSubscriber(event): db, connection, root, root_folder = getInformationFromEvent(event) ensureUtility(root_folder, IErrorReportingUtility, '', RootErrorReportingUtility, copy_to_zlog=False, asObject=True) transaction.commit() connection.close()
def bootStrapSubscriber(event): """initialisation of IntId utility on first database startup """ if appsetup.getConfigContext().hasFeature('devmode'): logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)") dummy_db, connection, dummy_root, root_folder = \ getInformationFromEvent(event) createUtils(root_folder, connection, dummy_db)
def bootStrapSubscriber(event): db, connection, root, root_folder = getInformationFromEvent(event) ensureUtility( root_folder, IClientIdManager, 'CookieClientIdManager', CookieClientIdManager, asObject=True) transaction.commit() connection.close()
def bootStrapSubscriberDatabase(event): """initialisation of eventcrossbar utility on first database startup """ if appsetup.getConfigContext().hasFeature('devmode'): logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)") dummy_db, connection, dummy_root, root_folder = \ getInformationFromEvent(event) createUtils(root_folder, connection, dummy_db) from org.ict_ok.admin_utils.compliance.lxml_demo import lxmlDemo lxmlDemo()
def bootStrapSubscriber(event): """Subscriber to the IDataBaseOpenedEvent Create utility at that time if not yet present """ db, connection, root, root_folder = getInformationFromEvent(event) ensureUtility(root_folder, IErrorReportingUtility, '', RootErrorReportingUtility, copy_to_zlog=True) transaction.commit() connection.close()
def bootStrapSubscriber(event): """Subscriber to the IDatabaseOpenedWithRootEvent Create utility at that time if not yet present """ db, connection, root, root_folder = getInformationFromEvent(event) ensureUtility(root_folder, IPrincipalAnnotationUtility, 'PrincipalAnnotation', PrincipalAnnotationUtility) transaction.commit() connection.close()
def errorSubscriber(event): """Subscriber to the IDataBaseOpenedEvent Create utility at that time if not yet present """ db, connection, root, root_folder = getInformationFromEvent(event) ensureUtility(root_folder, IErrorReportingUtility, '', RootErrorReportingUtility, copy_to_zlog=True, _ignored_exceptions=('Unauthorized',)) transaction.commit() connection.close()
def bootStrapSubscriber(event): """ log the startup to our supervisor """ dummy_db, connection, dummy_root, root_folder = \ getInformationFromEvent(event) sitem = root_folder.getSiteManager() utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(IAdmUtilSupervisor)] instAdmUtilSupervisor = utils[0].component instAdmUtilSupervisor.appendEventHistory(\ u"'cron runner' started (Vers. %s) (%d bytes) (%d objects)" \ % (getIkVersion(), dummy_db.getSize(), dummy_db.objectCount())) transaction.get().commit() connection.close()
def bootStrapSubscriberDatabase(event): """initialisation of ict_ok supervisor on first database startup """ if appsetup.getConfigContext().hasFeature('devmode'): logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)") dummy_db, connection, dummy_root, root_folder = \ getInformationFromEvent(event) madeAdmUtilCategories = ensureUtility(root_folder, IAdmUtilCategories, 'AdmUtilCategories', AdmUtilCategories, '', copy_to_zlog=False, asObject=True) if isinstance(madeAdmUtilCategories, AdmUtilCategories): logger.info(u"bootstrap: Ensure named AdmUtilCategories") dcore = IWriteZopeDublinCore(madeAdmUtilCategories) dcore.title = u"Categories Utility" dcore.created = datetime.utcnow() madeAdmUtilCategories.ikName = dcore.title for strHostGroup in [ u'DNS-Server', u'File-Server', u'Miscellaneous-Server', u'SMTP-Server', u'Terminal-Server', u'Utility-Server', u'Workstation', ]: newHostGroup = AdmUtilCatHostGroup() newHostGroup.__setattr__("ikName", strHostGroup) dcore = IWriteZopeDublinCore(newHostGroup) dcore.created = datetime.utcnow() dcore.title = strHostGroup madeAdmUtilCategories[newHostGroup.objectID] = newHostGroup madeAdmUtilCategories.__post_init__() sitem = root_folder.getSiteManager() utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(IAdmUtilSupervisor) ] instAdmUtilSupervisor = utils[0].component instAdmUtilSupervisor.appendEventHistory(\ u" bootstrap: made IAdmUtilCategories-Utility") transaction.get().commit() connection.close()
def test_ensureUtilityForSubSite(self): self.createRFAndSM() db, connection, root, root_folder = getInformationFromEvent( EventStub(self.db)) sub_folder = root_folder['sub_folder'] ensureUtility(sub_folder, IErrorReportingUtility, 'ErrorReporting', ErrorReportingUtility, 'ErrorReporting') # Make sure it was created on the sub folder, not the root folder got_utility = zapi.getUtility(IErrorReportingUtility, name='ErrorReporting', context=sub_folder) got_path = zapi.getPath(got_utility) self.assertEquals("/sub_folder/++etc++site/default/ErrorReporting", got_path)
def launch_pipelines(event): db, connection, root, root_folder = getInformationFromEvent(event) s_api = xmlrpclib.ServerProxy(SUPERVISORD_URI) #Get the path to the scritps scripts_dir = join(dirname(abspath(__file__)), 'scripts') cam_script = join(scripts_dir, 'ip-camera.py') proxy_script = join(scripts_dir, 'gst-proxy.py') config_dir = tempfile.mkdtemp(prefix='spionisto') for app in root_folder.values(): for camera in app.values(): if ICamera.providedBy(camera): #Get pipeline and ports pipeline = ICameraGstreamerPipeline(camera).pipeline() port_http = MJPEG_PORT_BASE + camera.id port_tcp = TCP_PORT_BASE + camera.id #Create configuration file config_filename = os.path.join(config_dir, '%i.ini' % camera.id) config_file = ConfigParser.SafeConfigParser() config_file.add_section('spionisto') config_file.set('spionisto', 'port-http', str(port_http)) config_file.set('spionisto', 'port-tcp', str(port_tcp)) config_file.set('spionisto', 'pipeline', pipeline.encode('ascii', 'ignore')) with open(config_filename, 'wb') as fp: config_file.write(fp) #Use supervisor's twiddler API to launch the proxy and the ipcamera s_api.twiddler.addProgramToGroup( 'dynamic', 'cam_script_%i' % camera.id, {'command':'%s %s'%(cam_script, config_filename), 'autostart':'true', 'autorestart':'false', 'startsecs':'0'} ) print 'command : %s %s'%(cam_script, config_filename) s_api.twiddler.addProgramToGroup( 'dynamic', 'proxy_script_%i' % camera.id, {'command':'%s %s'%(proxy_script, config_filename), 'autostart':'true', 'autorestart':'false', 'startsecs':'2'} ) print 'command : %s %s'%(proxy_script, config_filename)
def bootStrapSubscriberDatabase_step2(event): """initialisation of jabber-generator utility on first database startup """ print "bootStrapSubscriberDatabase_step2" dummy_db, connection, dummy_root, root_folder = \ getInformationFromEvent(event) # search in global component registry sitem = root_folder.getSiteManager() utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(INotifierJabber)] instIkNotifierJabber = utils[0].component if instIkNotifierJabber.enableConnector: instIkNotifierJabber.connect_server() print "enableConnector: %s" % instIkNotifierJabber.enableConnector print "ipv4Connector: %s" % instIkNotifierJabber.ipv4Connector print "portConnector: %s" % instIkNotifierJabber.portConnector print "lastSeenConnector: %s" % instIkNotifierJabber.lastSeenConnector
def bootStrapSubscriber(event): """Subscriber to the IDataBaseOpenedEvent Create utility at that time if not yet present """ db, connection, root, root_folder = getInformationFromEvent(event) ensureUtility( root_folder, IClientIdManager, 'CookieClientIdManager', CookieClientIdManager) ensureUtility( root_folder, ISessionDataContainer, 'PersistentSessionDataContainer', PersistentSessionDataContainer) transaction.commit() connection.close()
def bootStrapSubscriberDatabase(event): """initialisation of ict_ok supervisor on first database startup """ if appsetup.getConfigContext().hasFeature('devmode'): logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)") SnmpdThread.database = event.database dummy_db, connection, dummy_root, root_folder = \ getInformationFromEvent(event) madeAdmUtilSnmpd = ensureUtility(root_folder, IAdmUtilSnmpd, 'AdmUtilSnmpd', AdmUtilSnmpd, '', copy_to_zlog=False, asObject=True) if isinstance(madeAdmUtilSnmpd, AdmUtilSnmpd): logger.info(u"bootstrap: Ensure named AdmUtilSnmpd") dcore = IWriteZopeDublinCore(madeAdmUtilSnmpd) dcore.title = u"Snmpd Utility" dcore.created = datetime.utcnow() madeAdmUtilSnmpd.ikName = dcore.title madeAdmUtilSnmpd.__post_init__() sitem = root_folder.getSiteManager() utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(IAdmUtilSupervisor)] instAdmUtilSupervisor = utils[0].component instAdmUtilSupervisor.appendEventHistory(\ u" bootstrap: made IAdmUtilSnmpd-Utility") dbgOut = getNewMrtgData(madeAdmUtilSnmpd) if dbgOut: instAdmUtilSupervisor.appendEventHistory(dbgOut) else: # search in global component registry sitem = root_folder.getSiteManager() utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(IAdmUtilSnmpd)] instAdmUtilSnmpd = utils[0].component utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(IAdmUtilSupervisor)] instAdmUtilSupervisor = utils[0].component dbgOut = updateMrtgData(instAdmUtilSnmpd) if dbgOut: instAdmUtilSupervisor.appendEventHistory(dbgOut) transaction.get().commit() connection.close()
def bootstrapSubscriber(ev): db, connection, root, portal = getInformationFromEvent(ev) if portal is None: connection.close() return def findObjectsProviding(root): if ISite.providedBy(root): yield root try: if len(getParents(root)) > 3: raise StopIteration() except TypeError: raise StopIteration() values = getattr(root, "values", None) if callable(values): for subobj in values(): for match in findObjectsProviding(subobj): yield match try: for portal in findObjectsProviding(portal): setSite(portal) try: try: catalog = getCatalog() except LookupError: continue try: if len(list(catalog)) != len(list(catalog.getIndexes())): logger.info("Updating Discussion Catalog Indexes... (for %s)" % portal.title) catalog.clear() catalog.updateIndexes() logger.info("Done!") except ComponentLookupError: continue finally: setSite(None) finally: transaction.commit() connection.close()
def bootStrapSubscriber(event): """initialisation of IntId utility on first database startup """ if appsetup.getConfigContext().hasFeature('devmode'): logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)") dummy_db, connection, dummy_root, root_folder = \ getInformationFromEvent(event) # search in global component registry sitem = root_folder.getSiteManager() # search for ICatalog utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(ICatalog) ] instUtilityICatalog = utils[0].component if not "script_oid_index" in instUtilityICatalog.keys(): script_oid_index = KeywordIndex(interface=ISearchableText, field_name='getSearchableScriptOid', field_callable=True) instUtilityICatalog['script_oid_index'] = script_oid_index # search for IAdmUtilSupervisor utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(IAdmUtilSupervisor) ] instAdmUtilSupervisor = utils[0].component instAdmUtilSupervisor.appendEventHistory(\ u" bootstrap: ICatalog - create index for entry type 'script'") folderName = u"MobilePhones" if folderName not in root_folder.keys(): #newFolder = TestComponentFolder() newFolder = createObject( u'org.ict_ok.components.mobilephone.mobilephone.MobilePhoneFolder') root_folder[folderName] = newFolder dcore = IZopeDublinCore(newFolder, None) #dcore.creators = [u'ikportscan'] #newFolder.ikComment += u"scanner: %s" % (dateNow) newFolder.__setattr__("ikName", folderName) dcore.title = folderName transaction.get().commit() connection.close()
def test_bootstrapSusbcriber(self): self.createRFAndSM() event = DatabaseOpened(self.db) # this will open and close the database by itself sessionBootstrapSubscriber(event) db, connection, root, root_folder = getInformationFromEvent(event) got_utility = zope.component.getUtility(IClientIdManager, context=root_folder) self.assertTrue(IClientIdManager.providedBy(got_utility)) got_utility = zope.component.getUtility(ISessionDataContainer, context=root_folder) self.assertTrue(ISessionDataContainer.providedBy(got_utility)) # we need to close again in the end connection.close()
def test_errorReportingSetup(self): """Error reporting is set up by an event handler in this package. We test whether the event handler works. """ self.createRFAndSM() event = DatabaseOpened(self.db) # this will open and close the database by itself errorlogBootStrapSubscriber(event) # this will re-open the database db, connection, root, root_folder = getInformationFromEvent(event) got_utility = zope.component.getUtility(IErrorReportingUtility, context=root_folder) self.assertTrue(IErrorReportingUtility.providedBy(got_utility)) # we need to close again in the end connection.close()
def bootstrapSubscriber(ev): db, connection, root, portal = getInformationFromEvent(ev) if portal is None: connection.close() return def findObjectsProviding(root): if ISite.providedBy(root): yield root try: if len(getParents(root)) > 3: raise StopIteration() except TypeError: raise StopIteration() values = getattr(root, 'values', None) if callable(values): for subobj in values(): for match in findObjectsProviding(subobj): yield match try: for portal in findObjectsProviding(portal): setSite(portal) try: try: catalog = getCatalog() except LookupError: continue try: if len(list(catalog)) != len(list(catalog.getIndexes())): logger.info('Updating Acknowledgements Catalog Indexes... (for %s)' % portal.title) catalog.clear() catalog.updateIndexes() logger.info('Done!') except ComponentLookupError: continue finally: setSite(None) finally: transaction.commit() connection.close()
def bootstrapSubscriber(ev): db, connection, root, portal = getInformationFromEvent(ev) if portal is None: connection.close() return def findObjectsProviding(root): if ISite.providedBy(root): yield root try: if len(getParents(root)) > 3: raise StopIteration() except TypeError: raise StopIteration() values = getattr(root, 'values', None) if callable(values): for subobj in values(): for match in findObjectsProviding(subobj): yield match try: for portal in findObjectsProviding(portal): setSite(portal) try: try: catalog = component.getUtility(IConfiglet, 'system.catalog').catalog except LookupError: continue try: if len(list(catalog)) != len(list(catalog.getIndexes())): logger.info('Updating Catalog Indexes...') catalog.clear() catalog.updateIndexes() logger.info('Done!') except ComponentLookupError: continue finally: setSite(None) finally: transaction.commit() connection.close()
def bootStrapSubscriber(event): """ Subscriber to the IDatabaseOpenedWithRoot event. Create a global intid utility if there is not yet one. The intid utility is needed for indexing entries.""" db, connection, root, root_folder = getInformationFromEvent(event) ensureUtility( root_folder, IIntIds, '', IntIds, ) #ut = zope.component.queryUtility( # IIntIds, default = None) #assert(ut is not None) transaction.commit() connection.close()
def bootStrapSubscriber(event): """initialisation of IntId utility on first database startup """ if appsetup.getConfigContext().hasFeature('devmode'): logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)") dummy_db, connection, dummy_root, root_folder = \ getInformationFromEvent(event) # search in global component registry sitem = root_folder.getSiteManager() # search for ICatalog utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(ICatalog)] instUtilityICatalog = utils[0].component if not "all_comments_index" in instUtilityICatalog.keys(): all_comments_index = TextIndex(interface=ISearchableText, field_name='getSearchableComments', field_callable=True) instUtilityICatalog['all_comments_index'] = all_comments_index # search for IAdmUtilSupervisor utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(IAdmUtilSupervisor)] instAdmUtilSupervisor = utils[0].component instAdmUtilSupervisor.appendEventHistory(\ u" bootstrap: ICatalog - create index for all comments") if not "all_notes_index" in instUtilityICatalog.keys(): all_notes_index = TextIndex(interface=ISearchableText, field_name='getSearchableNotes', field_callable=True) instUtilityICatalog['all_notes_index'] = all_notes_index # search for IAdmUtilSupervisor utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(IAdmUtilSupervisor)] instAdmUtilSupervisor = utils[0].component instAdmUtilSupervisor.appendEventHistory(\ u" bootstrap: ICatalog - create index for all notes") transaction.get().commit() connection.close()
def bootStrapSubscriberDatabase(event): """initialisation of usermanagement utility on first database startup """ if appsetup.getConfigContext().hasFeature('devmode'): logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)") dummy_db, connection, dummy_root, root_folder = \ getInformationFromEvent(event) madePluggableAuthentication = ensureUtility(\ root_folder, IAdmUtilUserManagement, 'AdmUtilUserManagement', AdmUtilUserManagement, copy_to_zlog=False, asObject=True) if isinstance(madePluggableAuthentication, PluggableAuthentication): logger.info(u"bootstrap: Ensure named AdmUtilUserManagement") dcore = IWriteZopeDublinCore(madePluggableAuthentication) dcore.title = u"User Authentication" dcore.created = datetime.utcnow() madePluggableAuthentication.ikName = dcore.title # madePluggableAuthentication.__post_init__() sitem = root_folder.getSiteManager() utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(IAdmUtilSupervisor) ] instAdmUtilSupervisor = utils[0].component instAdmUtilSupervisor.appendEventHistory(\ u" bootstrap: made AdmUtilUserManagement-Utility") groups = GroupFolder(u'group.') madePluggableAuthentication[u'groups'] = groups principals = PrincipalFolder(u'principal.') madePluggableAuthentication[u'principals'] = principals madePluggableAuthentication.credentialsPlugins = \ (u'Session Credentials', u'No Challenge if Authenticated',) p_user = InternalPrincipal(u'User', u'User', u'Initial User', passwordManagerName="SHA1") p_manager = InternalPrincipal(u'Manager', u'Manager', u'Initial Manager', passwordManagerName="SHA1") p_admin = InternalPrincipal(u'Administrator', u'Administrator', u'Initial Administrator', passwordManagerName="SHA1") p_developer = InternalPrincipal(u'Developer', u'Developer', u'Initial Developer', passwordManagerName="SHA1") principals[u'User'] = p_user principals[u'Manager'] = p_manager principals[u'Administrator'] = p_admin principals[u'Developer'] = p_developer grp_usr = GroupInformation( u'User', u'view & analyse data, generate reports ' u'& leave notes at any object') grp_mgr = GroupInformation( u'Manager', u'search, connect, configure ' u'& delete devices') grp_adm = GroupInformation( u'Administrator', u'install, configure ' u'& administrate System') grp_dvl = GroupInformation( u'Developer', u'individual adaption ' u'& development on System') grp_usr.principals = [u'principal.User'] grp_mgr.principals = [u'principal.Manager'] grp_adm.principals = [u'principal.Administrator'] grp_dvl.principals = [u'principal.Developer'] groups[u'User'] = grp_usr groups[u'Manager'] = grp_mgr groups[u'Administrator'] = grp_adm groups[u'Developer'] = grp_dvl madePluggableAuthentication.authenticatorPlugins = (u'groups', u'principals') prm = IPrincipalRoleManager(root_folder) prm.assignRoleToPrincipal(u'org.ict_ok.usr', u'group.User') prm.assignRoleToPrincipal(u'org.ict_ok.mgr', u'group.Manager') prm.assignRoleToPrincipal(u'org.ict_ok.adm', u'group.Administrator') prm.assignRoleToPrincipal(u'org.ict_ok.dvl', u'group.Developer') transaction.get().commit() connection.close()
def init_all_applications(event): db, connection, root, root_folder = getInformationFromEvent(event) for (app_name, app) in root_folder.items(): setSite(app)
def adminSetup(event): from zope.app.appsetup.bootstrap import getInformationFromEvent db, connection, root, root_folder = getInformationFromEvent(event) setupSessionAuthentication(root_folder = root_folder)
def bootStrapSubscriberDatabase(event): """initialisation of ict_ok supervisor on first database startup """ if appsetup.getConfigContext().hasFeature('devmode'): logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)") dummy_db, connection, dummy_root, root_folder = \ getInformationFromEvent(event) madeAdmUtilSupervisor = ensureUtility(root_folder, IAdmUtilSupervisor, 'AdmUtilSupervisor', AdmUtilSupervisor, '', copy_to_zlog=False, asObject=True) if isinstance(madeAdmUtilSupervisor, AdmUtilSupervisor): logger.info(u"bootstrap: Ensure named AdmUtilSupervisor") instAdmUtilSupervisor = madeAdmUtilSupervisor # attribute is defined readonly, so first toggle this IAdmUtilSupervisor['nbrStarts'].readonly = False instAdmUtilSupervisor.nbrStarts += 1 IAdmUtilSupervisor['nbrStarts'].readonly = True instAdmUtilSupervisor.appendEventHistory(u"Database started (Vers. %s)" \ % getIkVersion()) dcore = IWriteZopeDublinCore(madeAdmUtilSupervisor) dcore.title = u"ICT_Ok Supervisor" dcore.created = datetime.utcnow() madeAdmUtilSupervisor.ikName = dcore.title madeAdmUtilSupervisor.__post_init__() else: # search in global component registry sitem = root_folder.getSiteManager() utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(IAdmUtilSupervisor) ] instAdmUtilSupervisor = utils[0].component # attribute is defined readonly, so first toggle this IAdmUtilSupervisor['nbrStarts'].readonly = False instAdmUtilSupervisor.nbrStarts += 1 IAdmUtilSupervisor['nbrStarts'].readonly = True instAdmUtilSupervisor.appendEventHistory(\ u"Database started (Vers. %s) (%d bytes) (%d objects)" \ % (getIkVersion(), dummy_db.getSize(), dummy_db.objectCount())) dcore = IWriteZopeDublinCore(instAdmUtilSupervisor) dcore.title = u"ICT_Ok Supervisor" dcore.modified = datetime.utcnow() madeUtilityIIntIds = ensureUtility(root_folder, IIntIds, '', IntIds, '', copy_to_zlog=False, asObject=True) if isinstance(madeUtilityIIntIds, IntIds): logger.info(u"bootstrap: made IIntIds-Utility") dcore = IWriteZopeDublinCore(madeUtilityIIntIds) dcore.title = u"ICT_Ok Object Id Manager" dcore.created = datetime.utcnow() sitem = root_folder.getSiteManager() utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(IAdmUtilSupervisor) ] instAdmUtilSupervisor = utils[0].component instAdmUtilSupervisor.appendEventHistory(\ u" bootstrap: made IIntIds-Utility") madeUtilityICatalog = ensureUtility(root_folder, ICatalog, '', Catalog, '', copy_to_zlog=False, asObject=True) if isinstance(madeUtilityICatalog, Catalog): logger.info(u"bootstrap: made ICatalog-Utility") dcore = IWriteZopeDublinCore(madeUtilityICatalog) dcore.title = u"ICT_Ok Search Manager" dcore.created = datetime.utcnow() oid_index = TextIndex(interface=ISearchableText, field_name='getSearchableOid', field_callable=True) madeUtilityICatalog['oid_index'] = oid_index sitem = root_folder.getSiteManager() utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(IAdmUtilSupervisor) ] instAdmUtilSupervisor = utils[0].component instAdmUtilSupervisor.appendEventHistory(\ u" bootstrap: made ICatalog-Utility") # search in global component registry sitem = root_folder.getSiteManager() # search for ICatalog utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(ICatalog) ] instUtilityICatalog = utils[0].component if not "all_comments_index" in instUtilityICatalog.keys(): all_comments_index = TextIndex(interface=ISearchableText, field_name='getSearchableComments', field_callable=True) instUtilityICatalog['all_comments_index'] = all_comments_index # search for IAdmUtilSupervisor utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(IAdmUtilSupervisor) ] instAdmUtilSupervisor = utils[0].component instAdmUtilSupervisor.appendEventHistory(\ u" bootstrap: ICatalog - create index for all comments") if not "all_notes_index" in instUtilityICatalog.keys(): all_notes_index = TextIndex(interface=ISearchableText, field_name='getSearchableNotes', field_callable=True) instUtilityICatalog['all_notes_index'] = all_notes_index # search for IAdmUtilSupervisor utils = [ util for util in sitem.registeredUtilities() if util.provided.isOrExtends(IAdmUtilSupervisor) ] instAdmUtilSupervisor = utils[0].component instAdmUtilSupervisor.appendEventHistory(\ u" bootstrap: ICatalog - create index for all notes") transaction.get().commit() connection.close()
def bootStrapSubscriber(event): """initialisation of IntId utility on first database startup """ if appsetup.getConfigContext().hasFeature('devmode'): logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)") dummy_db, connection, dummy_root, root_folder = \ getInformationFromEvent(event) # madeUtilityIIntIds = ensureUtility(root_folder, # IIntIds, # '', # IntIds, # name='IntIds', # copy_to_zlog=False, # asObject=True) # # if isinstance(madeUtilityIIntIds, IntIds): # logger.info(u"bootstrap: made IIntIds-Utility") # dcore = IWriteZopeDublinCore(madeUtilityIIntIds) # dcore.title = u"Object Id Manager" # dcore.created = datetime.now(berlinTZ) # sitem = root_folder.getSiteManager() # utils = [ util for util in sitem.registeredUtilities() # if util.provided.isOrExtends(IAdmUtilSupervisor)] # instAdmUtilSupervisor = utils[0].component # instAdmUtilSupervisor.appendEventHistory(\ # u" bootstrap: made IIntIds-Utility") # # madeUtilityICatalog = ensureUtility(root_folder, # ICatalog, # '', # Catalog, # name='Catalog', # copy_to_zlog=False, # asObject=True) # # if isinstance(madeUtilityICatalog, Catalog): # logger.info(u"bootstrap: made ICatalog-Utility") # dcore = IWriteZopeDublinCore(madeUtilityICatalog) # dcore.title = u"Search Manager" # dcore.created = datetime.now(berlinTZ) # oid_index = TextIndex(interface=ISearchableText, # field_name='getSearchableOid', # field_callable=True) # madeUtilityICatalog['oid_index'] = oid_index # sitem = root_folder.getSiteManager() # utils = [ util for util in sitem.registeredUtilities() # if util.provided.isOrExtends(IAdmUtilSupervisor)] # instAdmUtilSupervisor = utils[0].component # instAdmUtilSupervisor.appendEventHistory(\ # u" bootstrap: made ICatalog-Utility") # # # search in global component registry # sitem = root_folder.getSiteManager() # # search for ICatalog # utils = [ util for util in sitem.registeredUtilities() # if util.provided.isOrExtends(ICatalog)] # instUtilityICatalog = utils[0].component # if not "all_comments_index" in instUtilityICatalog.keys(): # all_comments_index = TextIndex(interface=ISearchableText, # field_name='getSearchableComments', # field_callable=True) # instUtilityICatalog['all_comments_index'] = all_comments_index # # search for IAdmUtilSupervisor # utils = [ util for util in sitem.registeredUtilities() # if util.provided.isOrExtends(IAdmUtilSupervisor)] # instAdmUtilSupervisor = utils[0].component # instAdmUtilSupervisor.appendEventHistory(\ # u" bootstrap: ICatalog - create index for all comments") # if not "all_notes_index" in instUtilityICatalog.keys(): # all_notes_index = TextIndex(interface=ISearchableText, # field_name='getSearchableNotes', # field_callable=True) # instUtilityICatalog['all_notes_index'] = all_notes_index # # search for IAdmUtilSupervisor # utils = [ util for util in sitem.registeredUtilities() # if util.provided.isOrExtends(IAdmUtilSupervisor)] # instAdmUtilSupervisor = utils[0].component # instAdmUtilSupervisor.appendEventHistory(\ # u" bootstrap: ICatalog - create index for all notes") transaction.get().commit() connection.close()