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) |