common/entity.py
changeset 413 a7366dd3c33c
parent 397 cf577e26f924
child 440 3b3c2b6699fd
child 475 b32a5772ff06
equal deleted inserted replaced
412:5b3fd2f2ce9b 413:a7366dd3c33c
   754         else:
   754         else:
   755             targettypes = rschema.subjects(self.e_schema)
   755             targettypes = rschema.subjects(self.e_schema)
   756             restriction = 'E eid %%(x)s, X %s E' % rtype
   756             restriction = 'E eid %%(x)s, X %s E' % rtype
   757             card = greater_card(rschema, targettypes, (self.e_schema,), 1)
   757             card = greater_card(rschema, targettypes, (self.e_schema,), 1)
   758         if len(targettypes) > 1:
   758         if len(targettypes) > 1:
   759             fetchattrs = set()
   759             fetchattrs_list = []
   760             for ttype in targettypes:
   760             for ttype in targettypes:
   761                 etypecls = self.vreg.etype_class(ttype)
   761                 etypecls = self.vreg.etype_class(ttype)
   762                 fetchattrs &= frozenset(etypecls.fetch_attrs)
   762                 fetchattrs_list.append(set(etypecls.fetch_attrs))
       
   763             fetchattrs = reduce(set.intersection, fetchattrs_list)
   763             rql = etypecls.fetch_rql(self.req.user, [restriction], fetchattrs,
   764             rql = etypecls.fetch_rql(self.req.user, [restriction], fetchattrs,
   764                                      settype=False)
   765                                      settype=False)
   765         else:
   766         else:
   766             etypecls = self.vreg.etype_class(targettypes[0])
   767             etypecls = self.vreg.etype_class(targettypes[0])
   767             rql = etypecls.fetch_rql(self.req.user, [restriction], settype=False)
   768             rql = etypecls.fetch_rql(self.req.user, [restriction], settype=False)