[req.find] Use vreg.schema.eschema for eschema lookup
authorChristophe de Vienne <cdevienne@gmail.com>
Wed, 30 Apr 2014 08:07:59 +0200
changeset 9720 a7210c912507
parent 9719 d02c8d77ac56
child 9721 2f08bd4c813b
[req.find] Use vreg.schema.eschema for eschema lookup If an etype is non-existant, using vreg.schema[etype] raises a confusing error complaining about a non-existing relation. This is because of the implementation of vreg.schema.__getitem__ that look first in entities and then in relations. Using directly vreg.schema.eschema restrict the lookup to etypes only, hence raises a meaningful error when the etype does not exist.
req.py
--- a/req.py	Wed Apr 30 10:13:10 2014 +0200
+++ b/req.py	Wed Apr 30 08:07:59 2014 +0200
@@ -207,7 +207,7 @@
         """
         parts = ['Any X WHERE X is %s' % etype]
         varmaker = rqlvar_maker(defined='X')
-        eschema = self.vreg.schema[etype]
+        eschema = self.vreg.schema.eschema(etype)
         for attr, value in kwargs.items():
             if isinstance(value, list) or isinstance(value, tuple):
                 raise NotImplementedError("List of values are not supported")