web/views/urlpublishing.py
changeset 7794 aed065b97f12
parent 7272 771f594c12a2
child 7828 749e1a67987f
equal deleted inserted replaced
7792:163d25c9fdd2 7794:aed065b97f12
   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):