cubicweb/entity.py
changeset 11348 70337ad23145
parent 11290 12d226a5bab9
child 11729 809407cbff11
equal deleted inserted replaced
11347:b4dcfd734686 11348:70337ad23145
   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