entity.py
branchstable
changeset 4806 4f12f59b1a13
parent 4759 af2e6c377c71
child 4831 c5aec27c1bf7
equal deleted inserted replaced
4805:2d0aa2b7da02 4806:4f12f59b1a13
   874         if _done is None:
   874         if _done is None:
   875             _done = set()
   875             _done = set()
   876         _done.add(self.eid)
   876         _done.add(self.eid)
   877         containers = tuple(self.e_schema.fulltext_containers())
   877         containers = tuple(self.e_schema.fulltext_containers())
   878         if containers:
   878         if containers:
   879             yielded = False
       
   880             for rschema, target in containers:
   879             for rschema, target in containers:
   881                 if target == 'object':
   880                 if target == 'object':
   882                     targets = getattr(self, rschema.type)
   881                     targets = getattr(self, rschema.type)
   883                 else:
   882                 else:
   884                     targets = getattr(self, 'reverse_%s' % rschema)
   883                     targets = getattr(self, 'reverse_%s' % rschema)
   886                     if entity.eid in _done:
   885                     if entity.eid in _done:
   887                         continue
   886                         continue
   888                     for container in entity.fti_containers(_done):
   887                     for container in entity.fti_containers(_done):
   889                         yield container
   888                         yield container
   890                         yielded = True
   889                         yielded = True
   891             if not yielded:
       
   892                 yield self
       
   893         else:
   890         else:
   894             yield self
   891             yield self
   895 
   892 
   896     def get_words(self):
   893     def get_words(self):
   897         """used by the full text indexer to get words to index
   894         """used by the full text indexer to get words to index
   917                 self.exception("can't add value of %s to text index for entity %s",
   914                 self.exception("can't add value of %s to text index for entity %s",
   918                                rschema, self.eid)
   915                                rschema, self.eid)
   919                 continue
   916                 continue
   920             if value:
   917             if value:
   921                 words += tokenize(value)
   918                 words += tokenize(value)
   922 
       
   923         for rschema, role in self.e_schema.fulltext_relations():
   919         for rschema, role in self.e_schema.fulltext_relations():
   924             if role == 'subject':
   920             if role == 'subject':
   925                 for entity in getattr(self, rschema.type):
   921                 for entity in getattr(self, rschema.type):
   926                     words += entity.get_words()
   922                     words += entity.get_words()
   927             else: # if role == 'object':
   923             else: # if role == 'object':