diff -r 2d0aa2b7da02 -r 4f12f59b1a13 hooks/metadata.py --- 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))