web/views/autoform.py
changeset 8253 df7d6c57a6c8
parent 8190 2a3c1b787688
child 8665 e65af61bde7d
equal deleted inserted replaced
8251:df46bf02b107 8253:df7d6c57a6c8
   132 from cubicweb.schema import display_name
   132 from cubicweb.schema import display_name
   133 from cubicweb.view import EntityView
   133 from cubicweb.view import EntityView
   134 from cubicweb.predicates import (
   134 from cubicweb.predicates import (
   135     match_kwargs, match_form_params, non_final_entity,
   135     match_kwargs, match_form_params, non_final_entity,
   136     specified_etype_implements)
   136     specified_etype_implements)
   137 from cubicweb.utils import json, json_dumps
   137 from cubicweb.utils import json_dumps
   138 from cubicweb.web import (stdmsgs, uicfg, eid_param,
   138 from cubicweb.web import (stdmsgs, uicfg, eid_param,
   139                           form as f, formwidgets as fw, formfields as ff)
   139                           form as f, formwidgets as fw, formfields as ff)
   140 from cubicweb.web.views import forms
   140 from cubicweb.web.views import forms
   141 from cubicweb.web.views.ajaxcontroller import ajaxfunc
   141 from cubicweb.web.views.ajaxcontroller import ajaxfunc
   142 
   142 
   457     We need to clear associated req's data :
   457     We need to clear associated req's data :
   458       - errorurl
   458       - errorurl
   459       - pending insertions / deletions
   459       - pending insertions / deletions
   460     """
   460     """
   461     self._cw.cancel_edition(errorurl)
   461     self._cw.cancel_edition(errorurl)
   462 
       
   463 @ajaxfunc(output_type='xhtml')
       
   464 def reledit_form(self):
       
   465     req = self._cw
       
   466     args = dict((x, req.form[x])
       
   467                 for x in ('formid', 'rtype', 'role', 'reload', 'action'))
       
   468     rset = req.eid_rset(typed_eid(self._cw.form['eid']))
       
   469     try:
       
   470         args['reload'] = json.loads(args['reload'])
       
   471     except ValueError: # not true/false, an absolute url
       
   472         assert args['reload'].startswith('http')
       
   473     view = req.vreg['views'].select('reledit', req, rset=rset, rtype=args['rtype'])
       
   474     return self._call_view(view, **args)
       
   475 
   462 
   476 
   463 
   477 def _add_pending(req, eidfrom, rel, eidto, kind):
   464 def _add_pending(req, eidfrom, rel, eidto, kind):
   478     key = 'pending_%s' % kind
   465     key = 'pending_%s' % kind
   479     pendings = req.session.data.setdefault(key, set())
   466     pendings = req.session.data.setdefault(key, set())