--- a/hooks/metadata.py Thu Mar 04 17:58:31 2010 +0100
+++ b/hooks/metadata.py Thu Mar 04 18:02:33 2010 +0100
@@ -12,7 +12,6 @@
from cubicweb.selectors import implements
from cubicweb.server import hook
-from cubicweb.server.repository import FTIndexEntityOp
def eschema_type_eid(session, etype):
@@ -150,7 +149,8 @@
class UpdateFTIHook(MetaDataHook):
- """sync fulltext index when relevant relation is added / removed
+ """sync fulltext index text index container when a relation with
+ fulltext_container set is added / removed
"""
__regid__ = 'updateftirel'
events = ('after_add_relation', 'after_delete_relation')
@@ -158,15 +158,19 @@
def __call__(self):
rtype = self.rtype
session = self._cw
+ ftcontainer = session.vreg.schema.rschema(rtype).fulltext_container
if self.event == 'after_add_relation':
- # Reindexing the contained entity is enough since it will implicitly
- # reindex the container entity.
- ftcontainer = session.vreg.schema.rschema(rtype).fulltext_container
if ftcontainer == 'subject':
- FTIndexEntityOp(session, entity=session.entity_from_eid(self.eidto))
+ session.repo.system_source.index_entity(
+ session, session.entity_from_eid(self.eidfrom))
elif ftcontainer == 'object':
- FTIndexEntityOp(session, entity=session.entity_from_eid(self.eidfrom))
- elif session.repo.schema.rschema(rtype).fulltext_container:
- FTIndexEntityOp(session, entity=session.entity_from_eid(self.eidto))
- FTIndexEntityOp(session, entity=session.entity_from_eid(self.eidfrom))
+ session.repo.system_source.index_entity(
+ session, session.entity_from_eid(self.eidto))
+ # after delete relation
+ elif ftcontainer == 'subject':
+ session.repo.system_source.index_entity(
+ session, entity=session.entity_from_eid(self.eidfrom))
+ elif ftcontainer == 'object':
+ session.repo.system_source.index_entity(
+ session, entity=session.entity_from_eid(self.eidto))