126 except Exception, ex: |
126 except Exception, ex: |
127 self.exception('while handling __method') |
127 self.exception('while handling __method') |
128 req.set_message(req._("error while handling __method: %s") % req._(ex)) |
128 req.set_message(req._("error while handling __method: %s") % req._(ex)) |
129 vid = req.form.get('vid') or vid_from_rset(req, rset, self.schema) |
129 vid = req.form.get('vid') or vid_from_rset(req, rset, self.schema) |
130 try: |
130 try: |
131 view = self.vreg.select_view(vid, req, rset) |
131 view = self.vreg.select('views', vid, req, rset=rset) |
132 except ObjectNotFound: |
132 except ObjectNotFound: |
133 self.warning("the view %s could not be found", vid) |
133 self.warning("the view %s could not be found", vid) |
134 req.set_message(req._("The view %s could not be found") % vid) |
134 req.set_message(req._("The view %s could not be found") % vid) |
135 vid = vid_from_rset(req, rset, self.schema) |
135 vid = vid_from_rset(req, rset, self.schema) |
136 view = self.vreg.select_view(vid, req, rset) |
136 view = self.vreg.select('views', vid, req, rset=rset) |
137 except NoSelectableObject: |
137 except NoSelectableObject: |
138 if rset: |
138 if rset: |
139 req.set_message(req._("The view %s can not be applied to this query") % vid) |
139 req.set_message(req._("The view %s can not be applied to this query") % vid) |
140 else: |
140 else: |
141 req.set_message(req._("You have no access to this view or it's not applyable to current data")) |
141 req.set_message(req._("You have no access to this view or it's not applyable to current data")) |
142 self.warning("the view %s can not be applied to this query", vid) |
142 self.warning("the view %s can not be applied to this query", vid) |
143 vid = vid_from_rset(req, rset, self.schema) |
143 vid = vid_from_rset(req, rset, self.schema) |
144 view = self.vreg.select_view(vid, req, rset) |
144 view = self.vreg.select('views', vid, req, rset=rset) |
145 return view, rset |
145 return view, rset |
146 |
146 |
147 def add_to_breadcrumbs(self, view): |
147 def add_to_breadcrumbs(self, view): |
148 # update breadcrumps **before** validating cache, unless the view |
148 # update breadcrumps **before** validating cache, unless the view |
149 # specifies explicitly it should not be added to breadcrumb or the |
149 # specifies explicitly it should not be added to breadcrumb or the |
182 id = 'validateform' |
182 id = 'validateform' |
183 |
183 |
184 def publish(self, rset=None): |
184 def publish(self, rset=None): |
185 vreg = self.vreg |
185 vreg = self.vreg |
186 try: |
186 try: |
187 ctrl = vreg.select(vreg.registry_objects('controllers', 'edit'), |
187 ctrl = vreg.select('controllers', 'edit', self.req, |
188 req=self.req, appli=self.appli) |
188 appli=self.appli) |
189 except NoSelectableObject: |
189 except NoSelectableObject: |
190 status, args = (False, {None: self.req._('not authorized')}) |
190 status, args = (False, {None: self.req._('not authorized')}) |
191 else: |
191 else: |
192 try: |
192 try: |
193 ctrl.publish(None, fromjson=True) |
193 ctrl.publish(None, fromjson=True) |
304 rset = self._exec(rql) |
306 rset = self._exec(rql) |
305 else: |
307 else: |
306 rset = None |
308 rset = None |
307 vid = req.form.get('vid') or vid_from_rset(req, rset, self.schema) |
309 vid = req.form.get('vid') or vid_from_rset(req, rset, self.schema) |
308 try: |
310 try: |
309 view = self.vreg.select_view(vid, req, rset) |
311 view = self.vreg.select('views', vid, req, rset=rset) |
310 except NoSelectableObject: |
312 except NoSelectableObject: |
311 vid = req.form.get('fallbackvid', 'noresult') |
313 vid = req.form.get('fallbackvid', 'noresult') |
312 view = self.vreg.select_view(vid, req, rset) |
314 view = self.vreg.select('views', vid, req, rset=rset) |
313 divid = req.form.get('divid', 'pageContent') |
315 divid = req.form.get('divid', 'pageContent') |
314 # we need to call pagination before with the stream set |
316 # we need to call pagination before with the stream set |
315 stream = view.set_stream() |
317 stream = view.set_stream() |
316 if req.form.get('paginate'): |
318 if req.form.get('paginate'): |
317 if divid == 'pageContent': |
319 if divid == 'pageContent': |
337 def js_prop_widget(self, propkey, varname, tabindex=None): |
339 def js_prop_widget(self, propkey, varname, tabindex=None): |
338 """specific method for CWProperty handling""" |
340 """specific method for CWProperty handling""" |
339 entity = self.vreg.etype_class('CWProperty')(self.req, None, None) |
341 entity = self.vreg.etype_class('CWProperty')(self.req, None, None) |
340 entity.eid = varname |
342 entity.eid = varname |
341 entity['pkey'] = propkey |
343 entity['pkey'] = propkey |
342 form = self.vreg.select_object('forms', 'edition', self.req, None, |
344 form = self.vreg.select('forms', 'edition', self.req, entity=entity) |
343 entity=entity) |
|
344 form.form_build_context() |
345 form.form_build_context() |
345 vfield = form.field_by_name('value') |
346 vfield = form.field_by_name('value') |
346 renderer = FormRenderer(self.req) |
347 renderer = FormRenderer(self.req) |
347 return vfield.render(form, renderer, tabindex=tabindex) \ |
348 return vfield.render(form, renderer, tabindex=tabindex) \ |
348 + renderer.render_help(form, vfield) |
349 + renderer.render_help(form, vfield) |
351 def js_component(self, compid, rql, registry='components', extraargs=None): |
352 def js_component(self, compid, rql, registry='components', extraargs=None): |
352 if rql: |
353 if rql: |
353 rset = self._exec(rql) |
354 rset = self._exec(rql) |
354 else: |
355 else: |
355 rset = None |
356 rset = None |
356 comp = self.vreg.select_object(registry, compid, self.req, rset) |
357 comp = self.vreg.select(registry, compid, self.req, rset=rset) |
357 if extraargs is None: |
358 if extraargs is None: |
358 extraargs = {} |
359 extraargs = {} |
359 else: # we receive unicode keys which is not supported by the **syntax |
360 else: # we receive unicode keys which is not supported by the **syntax |
360 extraargs = dict((str(key), value) |
361 extraargs = dict((str(key), value) |
361 for key, value in extraargs.items()) |
362 for key, value in extraargs.items()) |
363 return comp.render(**extraargs) |
364 return comp.render(**extraargs) |
364 |
365 |
365 @check_pageid |
366 @check_pageid |
366 @xhtmlize |
367 @xhtmlize |
367 def js_inline_creation_form(self, peid, ttype, rtype, role): |
368 def js_inline_creation_form(self, peid, ttype, rtype, role): |
368 view = self.vreg.select_view('inline-creation', self.req, None, |
369 view = self.vreg.select('views', 'inline-creation', self.req, |
369 etype=ttype, peid=peid, rtype=rtype, |
370 etype=ttype, peid=peid, rtype=rtype, role=role) |
370 role=role) |
|
371 return view.render(etype=ttype, peid=peid, rtype=rtype, role=role) |
371 return view.render(etype=ttype, peid=peid, rtype=rtype, role=role) |
372 |
372 |
373 @jsonize |
373 @jsonize |
374 def js_validate_form(self, action, names, values): |
374 def js_validate_form(self, action, names, values): |
375 return self.validate_form(action, names, values) |
375 return self.validate_form(action, names, values) |
378 # XXX this method (and correspoding js calls) should use the new |
378 # XXX this method (and correspoding js calls) should use the new |
379 # `RemoteCallFailed` mechansim |
379 # `RemoteCallFailed` mechansim |
380 self.req.form = self._rebuild_posted_form(names, values, action) |
380 self.req.form = self._rebuild_posted_form(names, values, action) |
381 vreg = self.vreg |
381 vreg = self.vreg |
382 try: |
382 try: |
383 ctrl = vreg.select(vreg.registry_objects('controllers', 'edit'), |
383 ctrl = vreg.select('controllers', 'edit', self.req) |
384 req=self.req) |
|
385 except NoSelectableObject: |
384 except NoSelectableObject: |
386 return (False, {None: self.req._('not authorized')}) |
385 return (False, {None: self.req._('not authorized')}) |
387 try: |
386 try: |
388 ctrl.publish(None, fromjson=True) |
387 ctrl.publish(None, fromjson=True) |
389 except ValidationError, err: |
388 except ValidationError, err: |