equal
deleted
inserted
replaced
698 def related_cache(self, rtype, role, entities=True, limit=None): |
698 def related_cache(self, rtype, role, entities=True, limit=None): |
699 """return values for the given relation if it's cached on the instance, |
699 """return values for the given relation if it's cached on the instance, |
700 else raise `KeyError` |
700 else raise `KeyError` |
701 """ |
701 """ |
702 res = self._related_cache['%s_%s' % (rtype, role)][entities] |
702 res = self._related_cache['%s_%s' % (rtype, role)][entities] |
703 if limit: |
703 if limit is not None: |
704 if entities: |
704 if entities: |
705 res = res[:limit] |
705 res = res[:limit] |
706 else: |
706 else: |
707 res = res.limit(limit) |
707 res = res.limit(limit) |
708 return res |
708 return res |
720 rcard = rschema.rproperty(related[0].e_schema, self.e_schema, |
720 rcard = rschema.rproperty(related[0].e_schema, self.e_schema, |
721 'cardinality')[0] |
721 'cardinality')[0] |
722 target = 'subject' |
722 target = 'subject' |
723 if rcard in '?1': |
723 if rcard in '?1': |
724 for rentity in related: |
724 for rentity in related: |
725 rentity._related_cache['%s_%s' % (rtype, target)] = (self.as_rset(), [self]) |
725 rentity._related_cache['%s_%s' % (rtype, target)] = ( |
726 else: |
726 self.as_rset(), (self,)) |
727 related = [] |
727 else: |
|
728 related = () |
728 self._related_cache['%s_%s' % (rtype, role)] = (rset, related) |
729 self._related_cache['%s_%s' % (rtype, role)] = (rset, related) |
729 |
730 |
730 def clear_related_cache(self, rtype=None, role=None): |
731 def clear_related_cache(self, rtype=None, role=None): |
731 """clear cached values for the given relation or the entire cache if |
732 """clear cached values for the given relation or the entire cache if |
732 no relation is given |
733 no relation is given |
818 |
819 |
819 :rtype: list |
820 :rtype: list |
820 :return: the list of indexable word of this entity |
821 :return: the list of indexable word of this entity |
821 """ |
822 """ |
822 from indexer.query_objects import tokenize |
823 from indexer.query_objects import tokenize |
|
824 # take care to cases where we're modyfying the schema |
|
825 pending = self.req.transaction_data.setdefault('pendingrdefs', set()) |
823 words = [] |
826 words = [] |
824 for rschema in self.e_schema.indexable_attributes(): |
827 for rschema in self.e_schema.indexable_attributes(): |
|
828 if (self.e_schema, rschema) in pending: |
|
829 continue |
825 try: |
830 try: |
826 value = self.printable_value(rschema, format='text/plain') |
831 value = self.printable_value(rschema, format='text/plain') |
827 except TransformError: |
832 except TransformError: |
828 continue |
833 continue |
829 except: |
834 except: |