entity.py
branchstable
changeset 3672 554a588ffaea
parent 3671 c765adac7f5c
child 3674 387d51af966d
child 3679 983c1af59c2a
equal deleted inserted replaced
3671:c765adac7f5c 3672:554a588ffaea
   689         return self.related(rtype, role, limit, entities)
   689         return self.related(rtype, role, limit, entities)
   690 
   690 
   691     def related_rql(self, rtype, role='subject', targettypes=None):
   691     def related_rql(self, rtype, role='subject', targettypes=None):
   692         rschema = self.schema[rtype]
   692         rschema = self.schema[rtype]
   693         if role == 'subject':
   693         if role == 'subject':
       
   694             restriction = 'E eid %%(x)s, E %s X' % rtype
   694             if targettypes is None:
   695             if targettypes is None:
   695                 targettypes = rschema.objects(self.e_schema)
   696                 targettypes = rschema.objects(self.e_schema)
   696             restriction = 'E eid %%(x)s, E %s X' % rtype
   697             else:
       
   698                 restriction += 'E is IN (%s)' % ','.join(targettypes)
   697             card = greater_card(rschema, (self.e_schema,), targettypes, 0)
   699             card = greater_card(rschema, (self.e_schema,), targettypes, 0)
   698         else:
   700         else:
       
   701             restriction = 'E eid %%(x)s, X %s E' % rtype
   699             if targettypes is None:
   702             if targettypes is None:
   700                 targettypes = rschema.subjects(self.e_schema)
   703                 targettypes = rschema.subjects(self.e_schema)
   701             restriction = 'E eid %%(x)s, X %s E' % rtype
   704             else:
       
   705                 restriction += 'E is IN (%s)' % ','.join(targettypes)
   702             card = greater_card(rschema, targettypes, (self.e_schema,), 1)
   706             card = greater_card(rschema, targettypes, (self.e_schema,), 1)
   703         if len(targettypes) > 1:
   707         if len(targettypes) > 1:
   704             fetchattrs_list = []
   708             fetchattrs_list = []
   705             for ttype in targettypes:
   709             for ttype in targettypes:
   706                 etypecls = self.vreg['etypes'].etype_class(ttype)
   710                 etypecls = self.vreg['etypes'].etype_class(ttype)