equal
deleted
inserted
replaced
336 elif eschema.type in visited: |
336 elif eschema.type in visited: |
337 # avoid infinite recursion |
337 # avoid infinite recursion |
338 return |
338 return |
339 else: |
339 else: |
340 visited.add(eschema.type) |
340 visited.add(eschema.type) |
341 _fetchattrs = [] |
|
342 for attr in sorted(fetchattrs): |
341 for attr in sorted(fetchattrs): |
343 try: |
342 try: |
344 rschema = eschema.subjrels[attr] |
343 rschema = eschema.subjrels[attr] |
345 except KeyError: |
344 except KeyError: |
346 cls.warning('skipping fetch_attr %s defined in %s (not found in schema)', |
345 cls.warning('skipping fetch_attr %s defined in %s (not found in schema)', |
364 # (card == '?') *or if the entity is being added*, since in |
363 # (card == '?') *or if the entity is being added*, since in |
365 # that case the relation may still be missing. As we miss this |
364 # that case the relation may still be missing. As we miss this |
366 # later information here, systematically add it. |
365 # later information here, systematically add it. |
367 rel.change_optional('right') |
366 rel.change_optional('right') |
368 targettypes = rschema.objects(eschema.type) |
367 targettypes = rschema.objects(eschema.type) |
369 vreg = user._cw.vreg # XXX user._cw.vreg iiiirk |
368 vreg = user._cw.vreg # XXX user._cw.vreg iiiirk |
370 etypecls = vreg['etypes'].etype_class(targettypes[0]) |
369 etypecls = vreg['etypes'].etype_class(targettypes[0]) |
371 if len(targettypes) > 1: |
370 if len(targettypes) > 1: |
372 # find fetch_attrs common to all destination types |
371 # find fetch_attrs common to all destination types |
373 fetchattrs = vreg['etypes'].fetch_attrs(targettypes) |
372 fetchattrs = vreg['etypes'].fetch_attrs(targettypes) |
374 # ... and handle ambiguous relations |
373 # ... and handle ambiguous relations |