web/views/basecontrollers.py
changeset 5454 76b828dc3b9f
parent 5453 d0c8076e298b
child 5467 57372dbfd114
equal deleted inserted replaced
5453:d0c8076e298b 5454:76b828dc3b9f
   338         except Exception, ex:
   338         except Exception, ex:
   339             self.exception("error in _exec(rql=%s): %s", rql, ex)
   339             self.exception("error in _exec(rql=%s): %s", rql, ex)
   340             return None
   340             return None
   341         return None
   341         return None
   342 
   342 
   343     def _call_view(self, view, **kwargs):
   343     def _call_view(self, view, paginate=False, **kwargs):
   344         req = self._cw
   344         divid = self._cw.form.get('divid', 'pageContent')
   345         divid = req.form.get('divid', 'pageContent')
       
   346         # we need to call pagination before with the stream set
   345         # we need to call pagination before with the stream set
   347         stream = view.set_stream()
   346         stream = view.set_stream()
   348         if req.form.get('paginate'):
   347         if paginate:
   349             if divid == 'pageContent':
   348             if divid == 'pageContent':
   350                 # mimick main template behaviour
   349                 # mimick main template behaviour
   351                 stream.write(u'<div id="pageContent">')
   350                 stream.write(u'<div id="pageContent">')
   352                 vtitle = self._cw.form.get('vtitle')
   351                 vtitle = self._cw.form.get('vtitle')
   353                 if vtitle:
   352                 if vtitle:
   354                     stream.write(u'<h1 class="vtitle">%s</h1>\n' % vtitle)
   353                     stream.write(u'<h1 class="vtitle">%s</h1>\n' % vtitle)
   355             view.paginate()
   354             view.paginate()
   356             if divid == 'pageContent':
   355             if divid == 'pageContent':
   357                 stream.write(u'<div id="contentmain">')
   356                 stream.write(u'<div id="contentmain">')
   358         view.render(**kwargs)
   357         view.render(**kwargs)
   359         extresources = req.html_headers.getvalue(skiphead=True)
   358         extresources = self._cw.html_headers.getvalue(skiphead=True)
   360         if extresources:
   359         if extresources:
   361             stream.write(u'<div class="ajaxHtmlHead">\n') # XXX use a widget ?
   360             stream.write(u'<div class="ajaxHtmlHead">\n') # XXX use a widget ?
   362             stream.write(extresources)
   361             stream.write(extresources)
   363             stream.write(u'</div>\n')
   362             stream.write(u'</div>\n')
   364         if req.form.get('paginate') and divid == 'pageContent':
   363         if paginate and divid == 'pageContent':
   365             stream.write(u'</div></div>')
   364             stream.write(u'</div></div>')
   366         return stream.getvalue()
   365         return stream.getvalue()
   367 
   366 
   368     @xhtmlize
   367     @xhtmlize
   369     def js_view(self):
   368     def js_view(self):
   379             view = self._cw.vreg['views'].select(vid, req, rset=rset)
   378             view = self._cw.vreg['views'].select(vid, req, rset=rset)
   380         except NoSelectableObject:
   379         except NoSelectableObject:
   381             vid = req.form.get('fallbackvid', 'noresult')
   380             vid = req.form.get('fallbackvid', 'noresult')
   382             view = self._cw.vreg['views'].select(vid, req, rset=rset)
   381             view = self._cw.vreg['views'].select(vid, req, rset=rset)
   383         self.validate_cache(view)
   382         self.validate_cache(view)
   384         return self._call_view(view)
   383         return self._call_view(view, paginate=req.form.get('paginate'))
   385 
   384 
   386     @xhtmlize
   385     @xhtmlize
   387     def js_prop_widget(self, propkey, varname, tabindex=None):
   386     def js_prop_widget(self, propkey, varname, tabindex=None):
   388         """specific method for CWProperty handling"""
   387         """specific method for CWProperty handling"""
   389         entity = self._cw.vreg['etypes'].etype_class('CWProperty')(self._cw)
   388         entity = self._cw.vreg['etypes'].etype_class('CWProperty')(self._cw)
   417         #try:
   416         #try:
   418         comp = self._cw.vreg[registry].select(compid, self._cw, rset=rset,
   417         comp = self._cw.vreg[registry].select(compid, self._cw, rset=rset,
   419                                               **extraargs)
   418                                               **extraargs)
   420         #except NoSelectableObject:
   419         #except NoSelectableObject:
   421         #    raise RemoteCallFailed('unselectable')
   420         #    raise RemoteCallFailed('unselectable')
   422         extraargs = extraargs or {}
   421         return self._call_view(comp, **extraargs)
   423         stream = comp.set_stream()
       
   424         comp.render(**extraargs)
       
   425         # XXX why not _call_view ?
       
   426         extresources = self._cw.html_headers.getvalue(skiphead=True)
       
   427         if extresources:
       
   428             stream.write(u'<div class="ajaxHtmlHead">\n')
       
   429             stream.write(extresources)
       
   430             stream.write(u'</div>\n')
       
   431         return stream.getvalue()
       
   432 
   422 
   433     @check_pageid
   423     @check_pageid
   434     @xhtmlize
   424     @xhtmlize
   435     def js_inline_creation_form(self, peid, petype, ttype, rtype, role, i18nctx):
   425     def js_inline_creation_form(self, peid, petype, ttype, rtype, role, i18nctx):
   436         view = self._cw.vreg['views'].select('inline-creation', self._cw,
   426         view = self._cw.vreg['views'].select('inline-creation', self._cw,
   455         # note: default is reserved in js land
   445         # note: default is reserved in js land
   456         args['default'] = self._cw.form['default_value']
   446         args['default'] = self._cw.form['default_value']
   457         args['reload'] = json.loads(args['reload'])
   447         args['reload'] = json.loads(args['reload'])
   458         rset = req.eid_rset(int(self._cw.form['eid']))
   448         rset = req.eid_rset(int(self._cw.form['eid']))
   459         view = req.vreg['views'].select('doreledit', req, rset=rset, rtype=args['rtype'])
   449         view = req.vreg['views'].select('doreledit', req, rset=rset, rtype=args['rtype'])
   460         stream = view.set_stream()
   450         return self._call_view(view, **args)
   461         view.render(**args)
       
   462         # XXX why not _call_view ?
       
   463         extresources = req.html_headers.getvalue(skiphead=True)
       
   464         if extresources:
       
   465             stream.write(u'<div class="ajaxHtmlHead">\n')
       
   466             stream.write(extresources)
       
   467             stream.write(u'</div>\n')
       
   468         return stream.getvalue()
       
   469 
   451 
   470     @jsonize
   452     @jsonize
   471     def js_i18n(self, msgids):
   453     def js_i18n(self, msgids):
   472         """returns the translation of `msgid`"""
   454         """returns the translation of `msgid`"""
   473         return [self._cw._(msgid) for msgid in msgids]
   455         return [self._cw._(msgid) for msgid in msgids]