X-Git-Url: https://scm.cri.ensmp.fr/git/Plinn.git/blobdiff_plain/f7d6479e31c9d2305eb437c00cfdd1dabdd1111f..a23495c46f185990eddd43e372d6b83fad403af4:/catalog.py diff --git a/catalog.py b/catalog.py index 05cbd59..f2736cb 100644 --- a/catalog.py +++ b/catalog.py @@ -5,7 +5,7 @@ from Products.CMFCore.interfaces import IIndexableObject from Products.CMFCore.CatalogTool import CatalogTool as BaseCatalogTool from Products.CMFCore.CatalogTool import IndexableObjectWrapper from Products.PageTemplates.PageTemplateFile import PageTemplateFile -from Products.CMFCore.permissions import ModifyPortalContent +from Products.CMFCore.permissions import ModifyPortalContent, ManagePortal from zope.component import queryMultiAdapter from Products.ZCatalog.Catalog import Catalog import transaction @@ -22,17 +22,20 @@ _VOLATILE_SOLR_NAME = '_v_solrConnection' class SolrTransactionHook : ''' commit solr couplé sur le commit de la ZODB ''' - def __init__(self, context) : + def __init__(self, context, con) : self.context = context + self.con = con def __call__(self, status) : - con = getattr(self.context, _VOLATILE_SOLR_NAME) if status : - con.commit() - con.close() + self.con.commit() + self.con.close() else : - con.close() - delattr(self.context, _VOLATILE_SOLR_NAME) + self.con.close() + try : + delattr(self.context, _VOLATILE_SOLR_NAME) + except AttributeError : + pass class CatalogTool(BaseCatalogTool) : meta_type = 'Plinn Catalog' @@ -40,7 +43,8 @@ class CatalogTool(BaseCatalogTool) : manage_options = (BaseCatalogTool.manage_options[:5] + ({'label' : 'Solr', 'action' : 'manage_solr'},) + BaseCatalogTool.manage_options[5:]) - manage_solr = PageTemplateFile('www/manage_solr', globals()) + manage_solr = PageTemplateFile('www/manage_solr.pt', globals(), __name__='manage_solr') + def __init__(self, idxs=[]) : @@ -49,12 +53,24 @@ class CatalogTool(BaseCatalogTool) : self.solr_url = 'http://localhost:8983/solr' self.delegatedIndexes = ('Title', 'Description', 'SearchableText') + security.declarePublic('getDelegatedIndexes') + def getDelegatedIndexes(self) : + """ read the method name """ + return self.delegatedIndexes + + security.declareProtected(ManagePortal, 'setDelegatedIndexes') + def setDelegatedIndexes(self, indexes, REQUEST=None) : + """setDelegatedIndexes documentation""" + self.delegatedIndexes = tuple([i.strip() for i in indexes if i.strip()]) + if REQUEST : + REQUEST.RESPONSE.redirect(self.absolute_url() + '/manage_solr?manage_tabs_message=Saved changes.') + def _getSolrConnection(self) : if not hasattr(self, _VOLATILE_SOLR_NAME) : con = SolrConnection(self.solr_url) setattr(self, _VOLATILE_SOLR_NAME, con) txn = transaction.get() - txn.addAfterCommitHook(SolrTransactionHook(self)) + txn.addAfterCommitHook(SolrTransactionHook(self, con)) return getattr(self, _VOLATILE_SOLR_NAME) security.declarePrivate('solrAdd')