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()) |