cubicweb/req.py
changeset 12183 af5d0a3c3f1a
parent 12182 50109859da43
child 12508 a8c1ea390400
equal deleted inserted replaced
12182:50109859da43 12183:af5d0a3c3f1a
   227                 if attr not in eschema.objrels:
   227                 if attr not in eschema.objrels:
   228                     raise KeyError('{0} not in {1} object relations'.format(attr, eschema))
   228                     raise KeyError('{0} not in {1} object relations'.format(attr, eschema))
   229                 parts.append('{var} {attr} X, {var} eid %(reverse_{attr})s'.format(
   229                 parts.append('{var} {attr} X, {var} eid %(reverse_{attr})s'.format(
   230                     var=next(varmaker), attr=attr))
   230                     var=next(varmaker), attr=attr))
   231             else:
   231             else:
   232                 if attr not in eschema.subjrels:
   232                 rel = eschema.subjrels.get(attr)
       
   233                 if rel is None:
   233                     raise KeyError('{0} not in {1} subject relations'.format(attr, eschema))
   234                     raise KeyError('{0} not in {1} subject relations'.format(attr, eschema))
   234                 parts.append('X {attr} %({attr})s'.format(attr=attr))
   235                 if rel.final:
       
   236                     parts.append('X {attr} %({attr})s'.format(attr=attr))
       
   237                 else:
       
   238                     parts.append('X {attr} {var}, {var} eid %({attr})s'.format(
       
   239                         attr=attr, var=next(varmaker)))
   235 
   240 
   236         rql = ', '.join(parts)
   241         rql = ', '.join(parts)
   237 
   242 
   238         return self.execute(rql, kwargs)
   243         return self.execute(rql, kwargs)
   239 
   244