193 rset = req.execute(cls.fetch_rql(req.user)) |
193 rset = req.execute(cls.fetch_rql(req.user)) |
194 self.set_vid_for_rset(req, cls, rset) |
194 self.set_vid_for_rset(req, cls, rset) |
195 return None, rset |
195 return None, rset |
196 |
196 |
197 def handle_etype_attr(self, req, cls, attrname, value): |
197 def handle_etype_attr(self, req, cls, attrname, value): |
198 rql = cls.fetch_rql(req.user, ['X %s %%(x)s' % (attrname)], |
198 st = cls.fetch_rqlst(req.user, ordermethod=None) |
199 mainvar='X', ordermethod=None) |
199 st.add_constant_restriction(st.get_variable('X'), attrname, |
|
200 'x', 'Substitute') |
200 if attrname == 'eid': |
201 if attrname == 'eid': |
201 try: |
202 try: |
202 rset = req.execute(rql, {'x': typed_eid(value)}) |
203 rset = req.execute(st.as_string(), {'x': typed_eid(value)}) |
203 except (ValueError, TypeResolverException): |
204 except (ValueError, TypeResolverException): |
204 # conflicting eid/type |
205 # conflicting eid/type |
205 raise PathDontMatch() |
206 raise PathDontMatch() |
206 else: |
207 else: |
207 rset = req.execute(rql, {'x': value}) |
208 rset = req.execute(st.as_string(), {'x': value}) |
208 self.set_vid_for_rset(req, cls, rset) |
209 self.set_vid_for_rset(req, cls, rset) |
209 return None, rset |
210 return None, rset |
210 |
211 |
211 |
212 |
212 class URLRewriteEvaluator(URLPathEvaluator): |
213 class URLRewriteEvaluator(URLPathEvaluator): |