def installCatalog(self): '''Create the catalog at the root of Zope if id does not exist.''' if 'catalog' not in self.app.objectIds(): # Create the catalog from Products.ZCatalog.ZCatalog import manage_addZCatalog manage_addZCatalog(self.app, 'catalog', '') self.logger.info('Appy catalog created.') # Create a lexicon for ZCTextIndexes if 'lexicon' not in self.app.catalog.objectIds(): from Products.ZCTextIndex.ZCTextIndex import manage_addLexicon manage_addLexicon(self.app.catalog, 'lexicon', elements=self.lexiconInfos) # Create or update Appy-wide indexes and field-related indexes indexInfo = {'State': 'FieldIndex', 'UID': 'FieldIndex', 'Title': 'ZCTextIndex', 'SortableTitle': 'FieldIndex', 'SearchableText': 'ZCTextIndex', 'Creator': 'FieldIndex', 'Created': 'DateIndex', 'ClassName': 'FieldIndex', 'Allowed': 'KeywordIndex'} tool = self.app.config for className in self.config.attributes.iterkeys(): wrapperClass = tool.getAppyClass(className, wrapper=True) for appyType in wrapperClass.__fields__: if not appyType.indexed or (appyType.name == 'title'): continue n = appyType.name indexName = 'get%s%s' % (n[0].upper(), n[1:]) indexInfo[indexName] = appyType.getIndexType() self.installIndexes(indexInfo)
def _addLinkCatalog(self, id, indices): manage_addZCatalog(self, id, id) zcat = self._getOb(id) cat = zcat._catalog for index, factory in indices: cat.addIndex(index, factory(index)) zcat.addColumn(index)
def afterSetUp(self): """ Adding an OAIServer, a ZCatalog and a ZCatalogHarvester """ manage_addZCatalog(self.app, 'catalog', 'Catalog') manage_addOAIServer(self.app, 'oai', title=u'OAI Server') manage_addFolder(self.app, 'folder', 'Folder') self.app.folder.description = u'Some descr' manage_addFolder(self.app, 'folder1', 'Folder1') self.app.folder1.description = u'Some descr111' self.app.catalog.catalog_object(self.app.folder, self.app.folder.absolute_url(1)) self.app.catalog.catalog_object(self.app.folder1, self.app.folder1.absolute_url(1)) manage_addZCatalogHarvester(self.app.oai, 'harvester', title=u'Harvester', search_meta_types=Folder.meta_type) self.server = startZServer() self.server_url = 'http://%s:%s/' % (self.server[0], str(self.server[1]))
def afterSetUp(self): self.setRoles(['Manager']) manage_addZCatalog(self.portal, 'zope_catalog', 'Zope Catalog') self.portal.zope_catalog.addIndex('getId', 'FieldIndex') self.tool = self.portal.archetype_tool self.pc = getToolByName(self.portal, 'portal_catalog') self.zc = getToolByName(self.portal, 'zope_catalog')
def get_neutron_core_catalog(dmd): device_class = dmd.getObjByPath('Devices/OpenStack/Infrastructure') catalog_name = 'neutron_core' try: catalog = getattr(device_class, catalog_name) except AttributeError: if not hasattr(device_class, catalog_name): log.info("Creating neutron core catalog '%s'", catalog_name) manage_addZCatalog(device_class, catalog_name, catalog_name) zcatalog = device_class._getOb(catalog_name) catalog = zcatalog._catalog try: log.info('Adding integration key index to %s', catalog_name) index = makeKeywordIndex('getNeutronIntegrationKeys') # Make the index explicitly case sensitive. index.PrenormalizeTerm = '' catalog.addIndex('getNeutronIntegrationKeys', index) except CatalogError: # Index already exists. pass else: from .NeutronIntegrationComponent import all_core_components for obj in all_core_components(dmd): catalog.catalog_object(obj, obj.getPrimaryId()) return catalog
def get_cinder_implementation_catalog(dmd): device_class = dmd.getObjByPath('Devices/OpenStack/Infrastructure') catalog_name = 'cinder_implementation' try: catalog = getattr(device_class, catalog_name) except AttributeError: if not hasattr(device_class, catalog_name): log.info("Creating cinder integration catalog '%s'", catalog_name) manage_addZCatalog(device_class, catalog_name, catalog_name) zcatalog = device_class._getOb(catalog_name) catalog = zcatalog._catalog try: log.info('Adding integration key index to %s', catalog_name) index = makeKeywordIndex('getCinderIntegrationKeys') # Make the index explicitly case sensitive. index.PrenormalizeTerm = '' catalog.addIndex('getCinderIntegrationKeys', index) except CatalogError: # Index already exists. pass else: # index everything. for plugin_name, plugin in zope.component.getUtilitiesFor(ICinderImplementationPlugin): plugin.reindex_implementation_components(dmd) return catalog
def createCatalog(self): """Create a catalog for EventClassRecord searching""" from Products.ZCatalog.ZCatalog import manage_addZCatalog manage_addZCatalog(self, self.default_catalog, self.default_catalog) zcat = self._getOb(self.default_catalog) zcat.addIndex('eventClassKey', 'FieldIndex') zcat.addColumn('getPrimaryId')
def installCatalog(self): '''Create the catalog at the root of Zope if id does not exist.''' if 'catalog' not in self.app.objectIds(): # Create the catalog from Products.ZCatalog.ZCatalog import manage_addZCatalog manage_addZCatalog(self.app, 'catalog', '') self.logger.info('Appy catalog created.') # Create lexicons for ZCTextIndexes catalog = self.app.catalog lexicons = catalog.objectIds() from Products.ZCTextIndex.ZCTextIndex import manage_addLexicon if 'xhtml_lexicon' not in lexicons: lex = appy.Object(group='XHTML indexer', name='XHTML indexer') manage_addLexicon(catalog, 'xhtml_lexicon', elements=[lex]) if 'text_lexicon' not in lexicons: lex = appy.Object(group='Text indexer', name='Text indexer') manage_addLexicon(catalog, 'text_lexicon', elements=[lex]) if 'list_lexicon' not in lexicons: lex = appy.Object(group='List indexer', name='List indexer') manage_addLexicon(catalog, 'list_lexicon', elements=[lex]) # Delete the deprecated one if it exists if 'lexicon' in lexicons: catalog.manage_delObjects(['lexicon']) # Create or update Appy-wide indexes and field-related indexes indexInfo = defaultIndexes.copy() tool = self.app.config for className in self.config.attributes.iterkeys(): wrapperClass = tool.getAppyClass(className, wrapper=True) indexInfo.update(wrapperClass.getIndexes(includeDefaults=False)) updateIndexes(self, indexInfo)
def manage_addFactsheetFolder(self, title, administrator_email, REQUEST=None): "Method for adding a Factsheet container" if not title: raise ValueError('Name of Folder is mandatory!') if not administrator_email: raise ValueError('The administrative email is mandatory!') if not email_expr.match(administrator_email): raise ValueError('Please enter a valid email address!') id = slugify(title) newFactsheetFolder = FactsheetFolder(id, title, administrator_email) self._setObject(id, newFactsheetFolder) folder = self._getOb(id) manage_addZCatalog(folder, id='catalogue', title='Models catalogue') catalogue = folder._getOb('catalogue') loadCatalogueMetadata(catalogue) #Check for and add a MailHost object #ob = getattr(folder, MAILHOST, None) #if not ob: #manage_addMailHost(self, id=MAILHOST, title=MAILHOST, smtp_host='localhost', smtp_port=25) # Alternative way to create a TinyMCE object and to set the configuration #manage_addZTinyMCE(folder, id='TinyMCE') #TinyMCE = folder._getOb('TinyMCE') #conf_file=getattr(TinyMCE, 'advanced.conf') #conf_file.manage_saveConfiguration(ZTinyMCE_CONFIGURATION, 'Example configuration') return self.manage_main(self, REQUEST)
def createCatalog(self): """Create a catalog for ServiceClass searching""" from Products.ZCatalog.ZCatalog import manage_addZCatalog manage_addZCatalog(self, self.default_catalog, self.default_catalog) zcat = self._getOb(self.default_catalog) zcat.addIndex("serviceKeys", "KeywordIndex") zcat.addColumn("getPrimaryId")
def createMaintenanceWindowCatalog(dmd): catalog_name = 'maintenanceWindowSearch' manage_addZCatalog(dmd, catalog_name, catalog_name) cat = getToolByName(dmd, catalog_name) id_index = makeCaseInsensitiveFieldIndex('getId') cat._catalog.addIndex('id', id_index) cat.addColumn('id')
def create_catalog(self, device): manage_addZCatalog(device, self.catalog_name, self.catalog_name) catalog = device._getOb(self.catalog_name) catalog.addIndex('path', makeMultiPathIndex('path')) for field in self.fields: field = str(field) # Add two indexes, one for natural sorting sort_field = field + '__sort' catalog.addIndex(field, makeCaseInsensitiveFieldIndex(field)) catalog.addIndex(sort_field, makeCaseInsensitiveFieldIndex(sort_field)) return catalog
def createMaintenanceWindowCatalog(dmd): catalog_name = "maintenanceWindowSearch" manage_addZCatalog(dmd, catalog_name, catalog_name) cat = getToolByName(dmd, catalog_name) id_index = makeCaseInsensitiveFieldIndex("getId") cat._catalog.addIndex("id", id_index) cat.addColumn("id") cat._catalog.addIndex("getPhysicalPath", makePathIndex("getPhysicalPath")) cat.addColumn("getPhysicalPath")
def configure_catalog(container): if container._getOb(CATALOG_ID, None) is None: manage_addZCatalog(container, CATALOG_ID, title='Naaya Admin Catalog') LOG('NaayaAdminTool', INFO, '%s created' % (CATALOG_ID,)) catalog = container._getOb(CATALOG_ID) if 'meta_type' not in catalog.indexes(): catalog.addIndex(name='meta_type', type='FieldIndex') LOG('NaayaAdminTool', INFO, 'cataloging all Naaya sites') for site in findNySites(container): catalog.catalog_object(site) LOG('NaayaAdminTool', INFO, 'finished cataloging all Naaya sites')
def create_catalog(context, name, indexes, classname): """Return catalog. Create it first if necessary.""" zcatalog = getattr(context, name, None) if not zcatalog: from Products.ZCatalog.ZCatalog import manage_addZCatalog manage_addZCatalog(context, name, name) zcatalog = context._getOb(name) if CatalogBase.create_catalog_indexes(zcatalog, indexes): CatalogBase.reindex_catalog(context, zcatalog, classname) return zcatalog
def createCatalog(self): """make the catalog for device searching""" from Products.ZCatalog.ZCatalog import manage_addZCatalog # XXX convert to ManagableIndex manage_addZCatalog(self, self.default_catalog, self.default_catalog) zcat = self._getOb(self.default_catalog) cat = zcat._catalog cat.addIndex('id', makeCaseInsensitiveFieldIndex('id')) zcat._catalog.addIndex('ipAddressAsInt', makeCaseSensitiveFieldIndex('ipAddressAsInt')) zcat._catalog.addIndex('path', makeMultiPathIndex('path'))
def createCatalog(self): """Create a catalog for rules searching""" from Products.ZCatalog.ZCatalog import manage_addZCatalog # XXX update to use ManagableIndex manage_addZCatalog(self, self.default_catalog, self.default_catalog) zcat = self._getOb(self.default_catalog) cat = zcat._catalog cat.addIndex('ruleSystems', makeCaseInsensitiveKeywordIndex('ruleSystems')) cat.addIndex('ruleGroups', makeCaseInsensitiveKeywordIndex('ruleGroups')) cat.addIndex('propertyType', makeCaseInsensitiveKeywordIndex('propertyType')) cat.addIndex('propertyName', makeCaseInsensitiveKeywordIndex('propertyName')) zcat.addColumn('toRemove') zcat.addColumn('enabled') zcat.addColumn('ruleModuleName')
def createCatalog(self): """Create a catalog for mibs searching""" from Products.ZCatalog.ZCatalog import manage_addZCatalog # XXX update to use ManagableIndex manage_addZCatalog(self, self.default_catalog, self.default_catalog) zcat = self._getOb(self.default_catalog) cat = zcat._catalog cat.addIndex('oid', makeCaseInsensitiveKeywordIndex('oid')) cat.addIndex('id', makeCaseInsensitiveKeywordIndex('id')) cat.addIndex('summary', makeCaseInsensitiveKeywordIndex('summary')) zcat.addColumn('getPrimaryId') zcat.addColumn('id') zcat.addColumn('oid')
def _add_indexes(self): app = self.restrictedTraverse('/') if not hasattr(app, 'Catalog'): manage_addZCatalog(app, 'Catalog', 'Catalog') if 'meta_type' not in app.Catalog.indexes(): app.Catalog.addIndex('meta_type', 'FieldIndex', 'meta_type') if 'published' not in app.Catalog.indexes(): app.Catalog.addIndex('published', 'FieldIndex', 'published') if 'release_date' not in app.Catalog.indexes(): app.Catalog.addIndex('release_date', 'FieldIndex', 'release_date')
def getCatalog(self): try: return self._getOb(CATALOG_NAME) except AttributeError: from Products.ZCatalog.ZCatalog import manage_addZCatalog # Make catalog for Devices manage_addZCatalog(self, CATALOG_NAME, CATALOG_NAME) zcat = self._getOb(CATALOG_NAME) cat = zcat._catalog for idxname in ['status', 'type', 'user']: cat.addIndex(idxname, makeCaseInsensitiveFieldIndex(idxname)) for idxname in ['scheduled', 'started', 'finished']: cat.addIndex(idxname, DateIndex(idxname)) return zcat
def createCatalog(self): """Create a catalog for EventClassRecord searching""" from Products.ZCatalog.ZCatalog import manage_addZCatalog # XXX update to use ManagableIndex manage_addZCatalog(self, self.default_catalog, self.default_catalog) zcat = self._getOb(self.default_catalog) cat = zcat._catalog cat.addIndex('productKeys', makeCaseSensitiveKeywordIndex('productKeys')) cat.addIndex('meta_type', makeCaseInsensitiveFieldIndex('meta_type')) cat.addIndex('getManufacturerName', makeCaseInsensitiveFieldIndex('getManufacturerName')) cat.addIndex('isOS', FieldIndex('isOS')) zcat.addColumn('getPrimaryId') zcat.addColumn('id')
def CreateZenPackPersistenceCatalog(dmd): ''' Create the zenPackPersistence catalog if it does not exist. Return the catalog ''' from Products.ZCatalog.ZCatalog import manage_addZCatalog from Products.ZenUtils.Search import makeCaseSensitiveFieldIndex zcat = getattr(dmd, ZENPACK_PERSISTENCE_CATALOG, None) if zcat is None: manage_addZCatalog(dmd, ZENPACK_PERSISTENCE_CATALOG, ZENPACK_PERSISTENCE_CATALOG) zcat = dmd._getOb(ZENPACK_PERSISTENCE_CATALOG) cat = zcat._catalog cat.addIndex('getZenPackName',makeCaseSensitiveFieldIndex('getZenPackName')) cat.addColumn('id') cat.addColumn('getPrimaryId') return zcat
def _create_catalog(cls, dmd, name): from Products.ZCatalog.Catalog import CatalogError from Products.ZCatalog.ZCatalog import manage_addZCatalog from Products.Zuul.interfaces import ICatalogTool spec = cls._catalog_spec(name) if not spec: return deviceclass = dmd.Devices.createOrganizer(spec['deviceclass']) if not hasattr(deviceclass, name): manage_addZCatalog(deviceclass, name, name) zcatalog = deviceclass._getOb(name) catalog = zcatalog._catalog for propname, propdata in spec['indexes'].items(): index_type = propdata.get('type') if not index_type: LOG.error("%s index has no type", propname) return index_factory = { 'field': makeFieldIndex, 'keyword': makeKeywordIndex, }.get(index_type.lower()) if not index_factory: LOG.error("%s is not a valid index type", index_type) return try: catalog.addIndex(propname, index_factory(propname)) except CatalogError: # Index already exists. pass else: fqcn = '.'.join((cls.__module__, cls.__name__)) results = ICatalogTool(dmd.primaryAq()).search(fqcn) for brain in results: brain.getObject().index_object() return zcatalog
def CreateZenPackPersistenceCatalog(dmd): ''' Create the zenPackPersistence catalog if it does not exist. Return the catalog ''' from Products.ZCatalog.ZCatalog import manage_addZCatalog from Products.ZenUtils.Search import makeCaseSensitiveFieldIndex zcat = getattr(dmd, ZENPACK_PERSISTENCE_CATALOG, None) if zcat is None: manage_addZCatalog(dmd, ZENPACK_PERSISTENCE_CATALOG, ZENPACK_PERSISTENCE_CATALOG) zcat = dmd._getOb(ZENPACK_PERSISTENCE_CATALOG) cat = zcat._catalog cat.addIndex('getZenPackName', makeCaseSensitiveFieldIndex('getZenPackName')) cat.addColumn('id') cat.addColumn('getPrimaryId') return zcat
def createCatalog(self): """Create a catalog for rules searching""" from Products.ZCatalog.ZCatalog import manage_addZCatalog # XXX update to use ManagableIndexcreateRulesetGroup manage_addZCatalog(self, self.default_catalog, self.default_catalog) zcat = self._getOb(self.default_catalog) cat = zcat._catalog cat.addIndex("ruleSystems", makeCaseInsensitiveKeywordIndex("ruleSystems")) cat.addIndex("ruleGroups", makeCaseInsensitiveKeywordIndex("ruleGroups")) cat.addIndex("ruleKey", makeCaseInsensitiveKeywordIndex("ruleKey")) cat.addIndex("ruleValue", makeCaseInsensitiveKeywordIndex("ruleValue")) zcat.addColumn("toRemove") zcat.addColumn("enabled") zcat.addColumn("ruleCurrentMatches") zcat.addColumn("rulePotentialMatches") zcat.addColumn("ruleRulesetName") zcat.addColumn("ruleEventClass")
def CreateRRDTemplatesCatalog(dmd, rebuild=False): """ Create the searchRRDTemplates catalog if it does not already exist. Return the catalog. """ from Products.ZCatalog.ZCatalog import manage_addZCatalog from Products.ZenUtils.Search import makeCaseSensitiveFieldIndex, \ makePathIndex zcat = getattr(dmd, RRDTEMPLATE_CATALOG, None) if zcat and rebuild: dmd._delObject(RRDTEMPLATE_CATALOG) zcat = None if zcat is None: manage_addZCatalog(dmd, RRDTEMPLATE_CATALOG, RRDTEMPLATE_CATALOG) zcat = dmd._getOb(RRDTEMPLATE_CATALOG) cat = zcat._catalog cat.addIndex('id', makeCaseSensitiveFieldIndex('id')) cat.addIndex('getPhysicalPath', makePathIndex('getPhysicalPath')) return zcat
def createCatalog(self): """ Make the catalog for device searching """ from Products.ZCatalog.ZCatalog import manage_addZCatalog # Make catalog for Devices manage_addZCatalog(self, self.default_catalog, self.default_catalog) zcat = self._getOb(self.default_catalog) cat = zcat._catalog for idxname in ['id', 'getDeviceIp','getDeviceClassPath','getProdState','titleOrId']: cat.addIndex(idxname, makeCaseInsensitiveFieldIndex(idxname)) cat.addIndex('getPhysicalPath', makePathIndex('getPhysicalPath')) cat.addIndex('path', makeMultiPathIndex('path')) zcat.addColumn('getPrimaryId') zcat.addColumn('id') zcat.addColumn('path')
def initialize(self): """ Adding a catalog with needed indexes and other stuff """ catalog_id = DEFAULTS["catalog"] manage_addZCatalog(self, catalog_id, "Default catalog") catalog_ob = self._getOb(catalog_id) # Add Lexicon elem = [] wordSplitter = Empty() wordSplitter.group = "Locale Aware Word Splitter" wordSplitter.name = "Locale Aware Word Splitter" caseNormalizer = Empty() caseNormalizer.group = "Case Normalizer" caseNormalizer.name = "Case Normalizer" stopWords = Empty() stopWords.group = "Stop Words" stopWords.name = "Remove listed and single char words" accentRemover = Empty() accentRemover.group = "Accent Normalizer" accentRemover.name = "Accent Normalizer" elem.append(wordSplitter) elem.append(caseNormalizer) elem.append(stopWords) elem.append(accentRemover) try: catalog_ob.manage_addProduct["ZCTextIndex"].manage_addLexicon("Lexicon", "Default Lexicon", elem) except: pass self.add_indexes(catalog_ob) self.add_metadata(catalog_ob) # Add Token folder manage_addFolder(self, DEFAULTS["tokens_folder"], "Token storage") # Add Namespace folder manage_addFolder(self, DEFAULTS["namespaces_folder"], "Namespace storage") # Add Dublic Core OAINamespace manage_addOAINamespace(self._getOb(DEFAULTS["namespaces_folder"]))
def manage_addNyObservatory(parent, REQUEST=None): """ """ id='observatory' ob = NyObservatory(id) ob.title = 'Naaya Observatory' manage_addZCatalog(ob, 'catalog', 'Naaya Observatory Catalog') manage_addFieldIndex(ob.catalog, 'type') manage_addFieldIndex(ob.catalog, 'latitude') manage_addFieldIndex(ob.catalog, 'longitude') manage_addFieldIndex(ob.catalog, 'rating') manage_addFieldIndex(ob.catalog, 'approved_comment') manage_addDateIndex(ob.catalog, 'date') manage_addFieldIndex(ob.catalog, 'country') manage_addFieldIndex(ob.catalog, 'author') manage_addFieldIndex(ob.catalog, 'session_key') parent._setObject(id, ob) if REQUEST: return parent.manage_main(parent, REQUEST, update_menu=1)
def createCatalog(self): """make the catalog for device searching""" from Products.ZCatalog.ZCatalog import manage_addZCatalog # XXX convert to ManagableIndex manage_addZCatalog(self, self.default_catalog, self.default_catalog) zcat = self._getOb(self.default_catalog) cat = zcat._catalog cat.addIndex('id', makeCaseInsensitiveFieldIndex('id')) zcat.addColumn('getPrimaryId') # add new columns fieldIndexes = ['getInterfaceName', 'getDeviceName', 'getInterfaceDescription', 'getInterfaceMacAddress'] for indexName in fieldIndexes: zcat._catalog.addIndex(indexName, makeCaseInsensitiveFieldIndex(indexName)) zcat._catalog.addIndex('allowedRolesAndUsers', makeCaseSensitiveKeywordIndex('allowedRolesAndUsers')) zcat._catalog.addIndex('ipAddressAsInt', makeCaseSensitiveFieldIndex('ipAddressAsInt')) zcat._catalog.addIndex('path', makeMultiPathIndex('path')) zcat.addColumn('details')
def installCatalog(self): '''Create the catalog at the root of Zope if id does not exist.''' if 'catalog' not in self.app.objectIds(): # Create the catalog from Products.ZCatalog.ZCatalog import manage_addZCatalog manage_addZCatalog(self.app, 'catalog', '') self.logger.info('Appy catalog created.') # Create lexicons for ZCTextIndexes catalog = self.app.catalog lexicons = catalog.objectIds() from Products.ZCTextIndex.ZCTextIndex import manage_addLexicon if 'xhtml_lexicon' not in lexicons: lex = appy.Object(group='XHTML indexer', name='XHTML indexer') manage_addLexicon(catalog, 'xhtml_lexicon', elements=[lex]) if 'text_lexicon' not in lexicons: lex = appy.Object(group='Text indexer', name='Text indexer') manage_addLexicon(catalog, 'text_lexicon', elements=[lex]) if 'list_lexicon' not in lexicons: lex = appy.Object(group='List indexer', name='List indexer') manage_addLexicon(catalog, 'list_lexicon', elements=[lex]) # Delete the deprecated one if it exists if 'lexicon' in lexicons: catalog.manage_delObjects(['lexicon']) # Create or update Appy-wide indexes and field-related indexes indexInfo = defaultIndexes.copy() tool = self.app.config for className in self.config.attributes.iterkeys(): wrapperClass = tool.getAppyClass(className, wrapper=True) indexInfo.update(wrapperClass.getIndexes(includeDefaults=False)) updateIndexes(self, indexInfo) # Re-index index "SearchableText", wrongly defined for Appy < 0.8.3. stIndex = catalog.Indexes['SearchableText'] if stIndex.indexSize() == 0: self.logger.info('reindexing SearchableText...') catalog.reindexIndex('SearchableText', self.app.REQUEST) self.logger.info('done.')
def afterSetUp(self): manage_addZCatalog(self.app, 'catalog', 'Catalog')