web/views/basecontrollers.py
branchstable
changeset 6240 fd0cbb801007
parent 6239 7832e47d98bc
child 6249 1729f53b3e42
equal deleted inserted replaced
6239:7832e47d98bc 6240:fd0cbb801007
   258         return self.response(domid, status, args, entity)
   258         return self.response(domid, status, args, entity)
   259 
   259 
   260 def optional_kwargs(extraargs):
   260 def optional_kwargs(extraargs):
   261     if extraargs is None:
   261     if extraargs is None:
   262         return {}
   262         return {}
   263     else: # we receive unicode keys which is not supported by the **syntax
   263     # we receive unicode keys which is not supported by the **syntax
   264         return dict((str(key), value)
   264     return dict((str(key), value) for key, value in extraargs.iteritems())
   265                     for key, value in extraargs.items())
       
   266 
   265 
   267 class JSonController(Controller):
   266 class JSonController(Controller):
   268     __regid__ = 'json'
   267     __regid__ = 'json'
   269 
   268 
   270     def publish(self, rset=None):
   269     def publish(self, rset=None):
   426         #except NoSelectableObject:
   425         #except NoSelectableObject:
   427         #    raise RemoteCallFailed('unselectable')
   426         #    raise RemoteCallFailed('unselectable')
   428         return self._call_view(comp, **extraargs)
   427         return self._call_view(comp, **extraargs)
   429 
   428 
   430     @xhtmlize
   429     @xhtmlize
   431     def js_render(self, registry, oid, eid=None, selectargs=None, renderargs=None):
   430     def js_render(self, registry, oid, eid=None,
       
   431                   selectargs=None, renderargs=None):
   432         if eid is not None:
   432         if eid is not None:
   433             rset = self._cw.eid_rset(eid)
   433             rset = self._cw.eid_rset(eid)
   434         elif self._cw.form.get('rql'):
   434         elif self._cw.form.get('rql'):
   435             rset = self._cw.execute(self._cw.form['rql'])
   435             rset = self._cw.execute(self._cw.form['rql'])
   436         else:
   436         else:
   437             rset = None
   437             rset = None
   438         selectargs = optional_kwargs(selectargs)
   438         view = self._cw.vreg[registry].select(oid, self._cw, rset=rset,
   439         view = self._cw.vreg[registry].select(oid, self._cw, rset=rset, **selectargs)
   439                                               **optional_kwargs(selectargs))
   440         return self._call_view(view, **optional_kwargs(renderargs))
   440         return self._call_view(view, **optional_kwargs(renderargs))
   441 
   441 
   442     @check_pageid
   442     @check_pageid
   443     @xhtmlize
   443     @xhtmlize
   444     def js_inline_creation_form(self, peid, petype, ttype, rtype, role, i18nctx):
   444     def js_inline_creation_form(self, peid, petype, ttype, rtype, role, i18nctx):