equal
deleted
inserted
replaced
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) |