cubicweb/pyramid/resources.py
branch3.24
changeset 11820 ec612abc2e2e
parent 11631 faf279e33298
child 11967 83739be20fab
equal deleted inserted replaced
11819:a85b7a898e13 11820:ec612abc2e2e
    62         self.request = request
    62         self.request = request
    63         self.etype = vreg.case_insensitive_etypes[etype.lower()]
    63         self.etype = vreg.case_insensitive_etypes[etype.lower()]
    64         self.cls = vreg['etypes'].etype_class(self.etype)
    64         self.cls = vreg['etypes'].etype_class(self.etype)
    65 
    65 
    66     def __getitem__(self, value):
    66     def __getitem__(self, value):
    67         attrname = self.cls.cw_rest_attr_info()[0]
    67         # Try eid first, then rest attribute as for URL path evaluation
    68         return EntityResource(self.request, self.cls, attrname, value)
    68         # mecanism in cubicweb.web.views.urlpublishing.
       
    69         for attrname in ('eid', self.cls.cw_rest_attr_info()[0]):
       
    70             resource = EntityResource(self.request, self.cls, attrname, value)
       
    71             try:
       
    72                 rset = resource.rset
       
    73             except HTTPNotFound:
       
    74                 continue
       
    75             if rset.rowcount:
       
    76                 return resource
       
    77         raise KeyError(value)
    69 
    78 
    70     @reify
    79     @reify
    71     def rset(self):
    80     def rset(self):
    72         rql = self.cls.fetch_rql(self.request.cw_cnx.user)
    81         rql = self.cls.fetch_rql(self.request.cw_cnx.user)
    73         rset = self.request.cw_request.execute(rql)
    82         rset = self.request.cw_request.execute(rql)