Example #1
0
 def receiveCron(self, request, str_time, mode=None):
     """receive cron signal
     """
     #logger.info(u"AdmUtilCron::receiveCron(%s, %s) in '%s'" \
     #% (str_time, mode,zapi.getPath(self)))
     self.lastCron = str_time
     dcore = IWriteZopeDublinCore(self)
     dcore.modified = datetime.utcnow()
Example #2
0
 def receiveEsxVim(self, request, str_time, mode=None):
     """receive esx_vim signal
     """
     #logger.info(u"AdmUtilEsxVim::receiveEsxVim(%s, %s) in '%s'" \
     #% (str_time, mode,zapi.absoluteURL(self, request)))
     self.lastEsxVim = str_time
     dcore = IWriteZopeDublinCore(self)
     dcore.modified = datetime.utcnow()
Example #3
0
    def _xlsSheet2folder_(self, request, values, folder):
        # dbg # print "_xlsSheet2folder_(folder=%s)" % folder
        fields = fieldsForFactory(folder.contentFactory, ['objectID'])
        allAttributes = {}
        for interface in implementedBy(folder.contentFactory):
            for i_attrName in interface:
                i_attr = interface[i_attrName]
                if IField.providedBy(i_attr):
                    allAttributes[i_attrName] = i_attr
        matrix = [[]]
        for row_idx, col_idx in sorted(values.keys()):
            v = values[(row_idx, col_idx)]
            if isinstance(v, unicode):
                v = u"%s" % v # v.encode(codepage, 'backslashreplace')
            else:
                v = `v`
            v = u'%s' % v.strip()
            last_row, last_col = len(matrix), len(matrix[-1])
            while last_row <= row_idx:
                matrix.extend([[]])
                last_row = len(matrix)
            while last_col < col_idx:
                matrix[-1].extend([''])
                last_col = len(matrix[-1])
            matrix[-1].extend([v])
        attrNameList = matrix[0]
        attrValMatrix = matrix[1:]
        for attrValVector in attrValMatrix:
            attrDict = {}
            for attrIndex, attrVal in enumerate(attrValVector):
                attrDict[attrNameList[attrIndex]] = attrVal
            # ---------------------------------------
#                    if attrDict.has_key('IntID'):
#                        attrDict.pop('IntID')
            if attrDict.has_key('objectID') and \
               attrDict['objectID'] in folder:
                attrObjectID = attrDict.pop('objectID')
                oldObj = folder[attrObjectID]
                # dbg # print "update old object: ", oldObj.ikName
                for attrName, newValString in attrDict.items():
                    attrField = allAttributes[attrName]
                    if IChoice.providedBy(attrField):
                        v_widget = getMultiAdapter(\
                                        (attrField,request),
                                        interfaces.IFieldWidget)
                        v_widget.context = oldObj
                        v_dataconverter = queryMultiAdapter(\
                                        (attrField, v_widget),
                                        interfaces.IDataConverter)
                        if len(newValString) > 0:
                            try:
                                newVal = v_dataconverter.toFieldValue([newValString])
                            except LookupError:
                                newVal = v_dataconverter.toFieldValue([])
                        else:
                            newVal = v_dataconverter.toFieldValue([])
                    else:
                        if attrName == "isTemplate":
                            v_widget = checkbox.SingleCheckBoxFieldWidget(\
                                        attrField,request)
                        else:
                            v_widget = getMultiAdapter(\
                                            (attrField,request),
                                            interfaces.IFieldWidget)
                        v_widget.context = oldObj
                        v_dataconverter = queryMultiAdapter(\
                                        (attrField, v_widget),
                                        interfaces.IDataConverter)
                        if ICollection.providedBy(attrField):
                            if len(newValString) > 0:
                                newVal = v_dataconverter.toFieldValue(newValString.split(';'))
                            else:
                                newVal = v_dataconverter.toFieldValue([])
                        else:
                            try:
                                newVal = v_dataconverter.toFieldValue(newValString)
                            except LookupError:
                                newVal = getattr(oldObj, attrName)
                    if getattr(oldObj, attrName) != newVal:
                        # dbg # print "change Value  old:'%s'  new:'%s'" % \
                        # dbg #     (getattr(oldObj, attrName), newVal)
                        setattr(oldObj, attrName, newVal)
                        dcore = IWriteZopeDublinCore(oldObj)
                        dcore.modified = datetime.utcnow()
                        if attrName == "ikName":
                            IBrwsOverview(oldObj).setTitle(newVal)
            else:
                oldObj = None
                # new Object
#                        newObj = createObject(self.factoryId)
#                        newObj.__post_init__()
                # dbg # print "new object: ", attrDict['ikName']
                dataVect = {}
                for attrName, newValString in attrDict.items():
                    attrField = allAttributes[attrName]
                    if IChoice.providedBy(attrField):
                        v_widget = getMultiAdapter(\
                                        (attrField,request),
                                        interfaces.IFieldWidget)
                        v_dataconverter = queryMultiAdapter(\
                                        (attrField, v_widget),
                                        interfaces.IDataConverter)
                        if len(newValString) > 0:
                            try:
                                newVal = v_dataconverter.toFieldValue([newValString])
                            except LookupError:
                                newVal = v_dataconverter.toFieldValue([])
                        else:
                            newVal = v_dataconverter.toFieldValue([])
                    else:
                        if attrName == "isTemplate":
                            v_widget = checkbox.SingleCheckBoxFieldWidget(\
                                        attrField,request)
                        else:
                            v_widget = getMultiAdapter(\
                                            (attrField,request),
                                            interfaces.IFieldWidget)
                        v_dataconverter = queryMultiAdapter(\
                                        (attrField, v_widget),
                                        interfaces.IDataConverter)
                        if ICollection.providedBy(attrField):
                            if len(newValString) > 0:
                                try:
                                    newVal = v_dataconverter.toFieldValue(newValString.split(';'))
                                except LookupError:
                                    newVal = v_dataconverter.toFieldValue([])
                            else:
                                newVal = v_dataconverter.toFieldValue([])
                        else:
                            try:
                                newVal = v_dataconverter.toFieldValue(newValString)
                            except LookupError:
                                newVal = None
                    dataVect[str(attrName)] = newVal
                    #setattr(newObj, attrName, newVal)
                #self.context.__setitem__(newObj.objectID, newObj)
                #print "dataVect: ", dataVect
                newObj = folder.contentFactory(**dataVect)
                # new Object, but already have an object id
                if attrDict.has_key('objectID'):
                    newObj.setObjectId(attrDict['objectID'])
                newObj.__post_init__()
                if oldObj is not None:
                    dcore = IWriteZopeDublinCore(oldObj)
                    dcore.modified = datetime.utcnow()
                IBrwsOverview(newObj).setTitle(dataVect['ikName'])
                folder[newObj.objectID] = newObj
                if hasattr(newObj, "store_refs"):
                    newObj.store_refs(**dataVect)
                notify(ObjectCreatedEvent(newObj))
Example #4
0
 def receiveEventCrossbar(self, request, str_time, mode=None):
     """receive eventcrossbar signal
     """
     self.lastEventCrossbar = str_time
     dcore = IWriteZopeDublinCore(self)
     dcore.modified = datetime.now(berlinTZ)
Example #5
0
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()
Example #6
0
 def handleSubmit(self, action):
     """submit was pressed"""
     if 'xlsdata' in self.widgets:
         fields = self.allFields
         codepage = self.widgets['codepage'].value[0]
         fileWidget = self.widgets['xlsdata']
         fileUpload = fileWidget.extract()
         filename = datetime.now().strftime('in_%Y%m%d%H%M%S.xls')
         f_handle, f_name = tempfile.mkstemp(filename)
         outf = open(f_name, 'wb')
         outf.write(fileUpload.read())
         outf.close()
         parseRet = xl.parse_xls(f_name, codepage)
         os.remove(f_name)
         #
         allAttributes = {}
         for interface in implementedBy(self.factory):
             for i_attrName in interface:
                 i_attr = interface[i_attrName]
                 if IField.providedBy(i_attr):
                     allAttributes[i_attrName] = i_attr
         #
         for sheet_name, values in parseRet:
             matrix = [[]]
             for row_idx, col_idx in sorted(values.keys()):
                 v = values[(row_idx, col_idx)]
                 if isinstance(v, unicode):
                     v = u"%s" % v  # v.encode(codepage, 'backslashreplace')
                 else:
                     v = ` v `
                 v = u'%s' % v.strip()
                 last_row, last_col = len(matrix), len(matrix[-1])
                 while last_row <= row_idx:
                     matrix.extend([[]])
                     last_row = len(matrix)
                 while last_col < col_idx:
                     matrix[-1].extend([''])
                     last_col = len(matrix[-1])
                 matrix[-1].extend([v])
             attrNameList = matrix[0]
             attrValMatrix = matrix[1:]
             for attrValVector in attrValMatrix:
                 attrDict = {}
                 for attrIndex, attrVal in enumerate(attrValVector):
                     attrDict[attrNameList[attrIndex]] = attrVal
                 # ---------------------------------------
                 if attrDict.has_key('IntID'):
                     attrDict.pop('IntID')
                 if attrDict.has_key('objectID'):
                     attrObjectID = attrDict.pop('objectID')
                     oldObj = self.context[attrObjectID]
                     for attrName, newValString in attrDict.items():
                         #print u"ddd4-> %s" % (attrName)
                         attrField = allAttributes[attrName]
                         #print u"type(%s): %s" % (attrField, type(attrField))
                         #                            if attrName == "rooms":
                         if IChoice.providedBy(attrField):
                             v_widget = getMultiAdapter(\
                                             (attrField,self.request),
                                             interfaces.IFieldWidget)
                             v_widget.context = oldObj
                             v_dataconverter = queryMultiAdapter(\
                                             (attrField, v_widget),
                                             interfaces.IDataConverter)
                             if len(newValString) > 0:
                                 newVal = v_dataconverter.toFieldValue(
                                     [newValString])
                             else:
                                 newVal = v_dataconverter.toFieldValue([])
                         else:
                             if attrName == "isTemplate":
                                 v_widget = checkbox.SingleCheckBoxFieldWidget(\
                                             attrField,self.request)
                             else:
                                 v_widget = getMultiAdapter(\
                                                 (attrField,self.request),
                                                 interfaces.IFieldWidget)
                             v_widget.context = oldObj
                             v_dataconverter = queryMultiAdapter(\
                                             (attrField, v_widget),
                                             interfaces.IDataConverter)
                             if ICollection.providedBy(attrField):
                                 if len(newValString) > 0:
                                     newVal = v_dataconverter.toFieldValue(
                                         newValString.split(';'))
                                 else:
                                     newVal = v_dataconverter.toFieldValue(
                                         [])
                             else:
                                 newVal = v_dataconverter.toFieldValue(
                                     newValString)
                         if getattr(oldObj, attrName) != newVal:
                             setattr(oldObj, attrName, newVal)
                             dcore = IWriteZopeDublinCore(oldObj)
                             dcore.modified = datetime.utcnow()
                             if attrName == "ikName":
                                 IBrwsOverview(oldObj).setTitle(newVal)
                 else:
                     oldObj = None
                     # new Object
                     #                        newObj = createObject(self.factoryId)
                     #                        newObj.__post_init__()
                     dataVect = {}
                     for attrName, newValString in attrDict.items():
                         attrField = allAttributes[attrName]
                         if IChoice.providedBy(attrField):
                             v_widget = getMultiAdapter(\
                                             (attrField,self.request),
                                             interfaces.IFieldWidget)
                             v_dataconverter = queryMultiAdapter(\
                                             (attrField, v_widget),
                                             interfaces.IDataConverter)
                             if len(newValString) > 0:
                                 newVal = v_dataconverter.toFieldValue(
                                     [newValString])
                             else:
                                 newVal = v_dataconverter.toFieldValue([])
                         else:
                             if attrName == "isTemplate":
                                 v_widget = checkbox.SingleCheckBoxFieldWidget(\
                                             attrField,self.request)
                             else:
                                 v_widget = getMultiAdapter(\
                                                 (attrField,self.request),
                                                 interfaces.IFieldWidget)
                             v_dataconverter = queryMultiAdapter(\
                                             (attrField, v_widget),
                                             interfaces.IDataConverter)
                             if ICollection.providedBy(attrField):
                                 if len(newValString) > 0:
                                     newVal = v_dataconverter.toFieldValue(
                                         newValString.split(';'))
                                 else:
                                     newVal = v_dataconverter.toFieldValue(
                                         [])
                             else:
                                 newVal = v_dataconverter.toFieldValue(
                                     newValString)
                         dataVect[str(attrName)] = newVal
                         #setattr(newObj, attrName, newVal)
                     #self.context.__setitem__(newObj.objectID, newObj)
                     #print "dataVect: ", dataVect
                     newObj = self.factory(**dataVect)
                     newObj.__post_init__()
                     if oldObj is not None:
                         dcore = IWriteZopeDublinCore(oldObj)
                         dcore.modified = datetime.utcnow()
                     IBrwsOverview(newObj).setTitle(dataVect['ikName'])
                     self.context[newObj.objectID] = newObj
                     if hasattr(newObj, "store_refs"):
                         newObj.store_refs(**dataVect)
                     notify(ObjectCreatedEvent(newObj))
     url = absoluteURL(self.context, self.request)
     self.request.response.redirect(url)
Example #7
0
def createUtils(root_folder, connection=None, dummy_db=None):
    madeAdmUtilSupervisor = ensureUtility(root_folder, 
                                          IAdmUtilSupervisor,
                                          'AdmUtilSupervisor', 
                                          AdmUtilSupervisor,
                                          name='AdmUtilSupervisor',
                                          copy_to_zlog=False)

    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"'web service' started (Vers. %s)" \
                                                 % getIkVersion())
        dcore = IWriteZopeDublinCore(madeAdmUtilSupervisor)
        dcore.title = u"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
        if dummy_db is not None:
            instAdmUtilSupervisor.appendEventHistory(\
                u"'web service' started (Vers. %s) (%d bytes) (%d objects)" \
                % (getIkVersion(), dummy_db.getSize(), dummy_db.objectCount()))
        dcore = IWriteZopeDublinCore(instAdmUtilSupervisor)
        dcore.title = u"Supervisor"
        dcore.modified = datetime.utcnow()
        
    madeUtilityIIntIds = ensureUtility(root_folder, 
                                       IIntIds, 
                                       '', 
                                       IntIds, 
                                       name='', 
                                       copy_to_zlog=False)

    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")
        
    madeUtilityO2ORels = ensureUtility(root_folder, 
                                       IO2OStringTypeRelationships, 
                                       '', 
                                       O2OStringTypeRelationships, 
                                       name='',
                                       copy_to_zlog=False)

    if isinstance(madeUtilityO2ORels, O2OStringTypeRelationships):
        logger.info(u"bootstrap: made O2ORels-Utility")
        #dcore = IWriteZopeDublinCore(madeUtilityO2ORels)
        #dcore.title = u"ICT_Ok Object Relation 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 O2ORels-Utility")
    else:
        sitem = root_folder.getSiteManager()
        utils = [ util for util in sitem.registeredUtilities()
                  if util.provided.isOrExtends(IO2OStringTypeRelationships)]
        instUtilityO2ORels = utils[0].component

#    import pdb
#    pdb.set_trace()

    madeUtilityICatalog = ensureUtility(root_folder, 
                                        ICatalog, 
                                        '', 
                                        Catalog, 
                                        name='',
                                        copy_to_zlog=False)

    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 "oid_index" in instUtilityICatalog.keys():
        oid_index = KeywordIndex(interface=ISearchableText,
                                 field_name='getSearchableOid',
                                 field_callable=True)
        instUtilityICatalog['oid_index'] = 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 all comments")
    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")
    if not "all_fulltext_index" in instUtilityICatalog.keys():
        all_fulltext_index = TextIndex(interface=ISearchableText,
                                        field_name='getSearchableFullText',
                                        field_callable=True)
        instUtilityICatalog['all_fulltext_index'] = all_fulltext_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 fulltext")
    if not "all_interfaces_index" in instUtilityICatalog.keys():
        all_interfaces_index = KeywordIndex(interface=IKeywordQuerying,
                                            field_name='getSearchableInterfaces',
                                            field_callable=True)
        instUtilityICatalog['all_interfaces_index'] = all_interfaces_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 interfaces")
    transaction.get().commit()
    if connection is not None:
        connection.close()