diff -r 29f74716fd70 -r 5376aaadd16b entity.py --- a/entity.py Thu Oct 15 11:20:26 2009 +0200 +++ b/entity.py Mon Oct 19 15:16:41 2009 +0200 @@ -139,7 +139,7 @@ _fetchattrs = [] for attr in fetchattrs: try: - rschema = eschema.subject_relation(attr) + rschema = eschema.subjrels[attr] except KeyError: cls.warning('skipping fetch_attr %s defined in %s (not found in schema)', attr, cls.__regid__) @@ -150,7 +150,7 @@ selection.append(var) restriction = '%s %s %s' % (mainvar, attr, var) restrictions.append(restriction) - if not rschema.is_final(): + if not rschema.final: # XXX this does not handle several destination types desttype = rschema.objects(eschema.type)[0] card = rschema.rproperty(eschema, desttype, 'cardinality')[0] @@ -184,7 +184,7 @@ needcheck = not cls.e_schema.has_unique_values(mainattr) else: for rschema in cls.e_schema.subject_relations(): - if rschema.is_final() and rschema != 'eid' and cls.e_schema.has_unique_values(rschema): + if rschema.final and rschema != 'eid' and cls.e_schema.has_unique_values(rschema): mainattr = str(rschema) needcheck = False break @@ -383,7 +383,7 @@ assert self.has_eid() execute = self._cw.execute for rschema in self.e_schema.subject_relations(): - if rschema.is_final() or rschema.meta: + if rschema.final or rschema.meta: continue # skip already defined relations if getattr(self, rschema.type): @@ -431,7 +431,7 @@ def to_complete_relations(self): """by default complete final relations to when calling .complete()""" for rschema in self.e_schema.subject_relations(): - if rschema.is_final(): + if rschema.final: continue if len(rschema.objects(self.e_schema)) > 1: # ambigous relations, the querier doesn't handle @@ -591,14 +591,14 @@ if targettypes is None: targettypes = rschema.objects(self.e_schema) else: - restriction += 'E is IN (%s)' % ','.join(targettypes) + restriction += ', X is IN (%s)' % ','.join(targettypes) card = greater_card(rschema, (self.e_schema,), targettypes, 0) else: restriction = 'E eid %%(x)s, X %s E' % rtype if targettypes is None: targettypes = rschema.subjects(self.e_schema) else: - restriction += 'E is IN (%s)' % ','.join(targettypes) + restriction += ', X is IN (%s)' % ','.join(targettypes) card = greater_card(rschema, targettypes, (self.e_schema,), 1) if len(targettypes) > 1: fetchattrs_list = [] @@ -706,7 +706,7 @@ else raise `KeyError` """ res = self._related_cache['%s_%s' % (rtype, role)][entities] - if limit is not None: + if limit is not None and limit < len(res): if entities: res = res[:limit] else: