222 '{0}: list of values are not supported'.format(attr)) |
222 '{0}: list of values are not supported'.format(attr)) |
223 if hasattr(value, 'eid'): |
223 if hasattr(value, 'eid'): |
224 kwargs[attr] = value.eid |
224 kwargs[attr] = value.eid |
225 if attr.startswith('reverse_'): |
225 if attr.startswith('reverse_'): |
226 attr = attr[8:] |
226 attr = attr[8:] |
227 assert attr in eschema.objrels, \ |
227 if attr not in eschema.objrels: |
228 '{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 assert attr in eschema.subjrels, \ |
232 if attr not in eschema.subjrels: |
233 '{0} not in {1} subject relations'.format(attr, eschema) |
233 raise KeyError('{0} not in {1} subject relations'.format(attr, eschema)) |
234 parts.append('X {attr} %({attr})s'.format(attr=attr)) |
234 parts.append('X {attr} %({attr})s'.format(attr=attr)) |
235 |
235 |
236 rql = ', '.join(parts) |
236 rql = ', '.join(parts) |
237 |
237 |
238 return self.execute(rql, kwargs) |
238 return self.execute(rql, kwargs) |