Commit 6fe99692 authored by Ayush Tiwari's avatar Ayush Tiwari

erp5_catalog: Solve name conflict between isIndexable property for ERP5Site and ERP5 Catalog

Earlier, In ERP5Site, we use property 'isIndexable' to have control over indexing and unindexing.
This was usefull specially in case of bootstrap. To have this control, we had a function
`isIndexable` in SQLCatalog which we used to switch for enabling-disabling indexation. (769f9fb2)

Now, we do have ERP5 Catalog, which itself is an ERP5 Object, hence it has an accessor `isIndexable`
of itself which we plan to disable for now(as we don't want circular dependency while indexing
catalog in itself). But as we did have a function `isIndexable` in SQLCatalog which had control
over the indexing, we needed to rename this property for ERP5Site.

Hence, now we use property 'isIndexingRequired' for ERP5Site and use to have overall control
over indexing process.

Please note, we do not intend to change the same property name for any other object. Its just
for ERP5Site.
parent d603c85d
......@@ -5340,7 +5340,7 @@ Business Template is a set of definitions, such as skins, portal types and categ
if update_catalog:
catalog = _getCatalogValue(self)
if (catalog is None) or (not site.isIndexable):
if (catalog is None) or (not site.isIndexingRequired):
LOG('Business Template', 0, 'no SQL Catalog available')
update_catalog = 0
else:
......
......@@ -229,7 +229,7 @@ class ERP5Site(FolderMixIn, CMFSite, CacheCookieMixin):
last_id = 0
icon = 'portal.gif'
# Default value, prevents error during upgrade
isIndexable = ConstantGetter('isIndexable', value=True)
isIndexingRequired = ConstantGetter('isIndexingRequired', value=True)
_properties = (
{ 'id':'title',
......@@ -1994,7 +1994,7 @@ class ERP5Generator(PortalGenerator):
portal = self.klass(id=id)
# Make sure reindex will not be called until business templates
# will be installed
setattr(portal, 'isIndexable', ConstantGetter('isIndexable', value=False))
setattr(portal, 'isIndexingRequired', ConstantGetter('isIndexingRequired', value=False))
# This is only used to refine log level.
# Has no functional use, and should never have any:
......@@ -2260,8 +2260,12 @@ class ERP5Generator(PortalGenerator):
def setupIndex(self, p, **kw):
# Make sure all tools and folders have been indexed
if kw.get('reindex', 1):
setattr(p, 'isIndexable', ConstantGetter('isIndexable', value=True))
if not kw.get('reindex', 1):
return
# When no SQL connection was define on the site,
# we don't want to make it crash
if p.erp5_sql_connection_type is not None:
setattr(p, 'isIndexingRequired', ConstantGetter('isIndexingRequired', value=True))
# Clear portal ids sql table, like this we do not take
# ids for a previously created web site
p.portal_ids.clearGenerator(all=True)
......
......@@ -192,7 +192,8 @@ class ERP5Catalog(Folder, Catalog):
_setPropValue = Catalog._setPropValue
getProperty = Folder.getProperty
_updateProperty = PropertyManager._updateProperty
isIndexable = Catalog.isIndexable
# We don't want to index catalog as it might create circular dependencies
isIndexable = 0
__class_init__ = Catalog.__class_init__
def __init__(self, id, title='', container=None):
......
......@@ -2823,7 +2823,7 @@ class Base( CopyContainer,
"""
Reindexes an object - also useful for testing
"""
root_indexable = int(getattr(self.getPortalObject(),'isIndexable',1))
root_indexable = int(getattr(self.getPortalObject(),'isIndexingRequired',1))
if self.isIndexable and root_indexable:
#LOG("immediateReindexObject",0,self.getRelativeUrl())
# Reindex result should not depend on the user
......
......@@ -1267,8 +1267,8 @@ class Catalog(Folder,
uid_list = [x.uid for x in method(count = UID_BUFFER_SIZE, instance_id = instance_id) if x.uid != 0]
uid_buffer.extend(uid_list)
security.declarePrivate('isIndexable')
def isIndexable(self):
security.declarePrivate('isIndexingRequired')
def isIndexingRequired(self):
"""
This is required to check in many methods that
the site root and zope root are indexable
......@@ -1276,8 +1276,8 @@ class Catalog(Folder,
zope_root = self.getZopeRoot()
site_root = self.getSiteRoot() # XXX-JPS - Why don't we use getPortalObject here ?
root_indexable = int(getattr(zope_root, 'isIndexable', 1))
site_indexable = int(getattr(site_root, 'isIndexable', 1))
root_indexable = int(getattr(zope_root, 'isIndexingRequired', 1))
site_indexable = int(getattr(site_root, 'isIndexingRequired', 1))
if not (root_indexable and site_indexable):
return False
return True
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment