# HG changeset patch # User sylvain.thenault@logilab.fr # Date 1236766508 -3600 # Node ID 21d4d5e6aa4534662b66e94e7dbe0e604c862a48 # Parent 52ee022d87e3b3abc5b80210d3822032ff2ca030 make forms selectable (appobject) diff -r 52ee022d87e3 -r 21d4d5e6aa45 web/form.py --- a/web/form.py Wed Mar 11 11:13:41 2009 +0100 +++ b/web/form.py Wed Mar 11 11:15:08 2009 +0100 @@ -17,8 +17,9 @@ from yams.constraints import SizeConstraint, StaticVocabularyConstraint from cubicweb import typed_eid +from cubicweb.appobject import AppObject from cubicweb.utils import ustrftime -from cubicweb.selectors import match_form_params +from cubicweb.selectors import yes, match_form_params, non_final_entity from cubicweb.view import NOINDEX, NOFOLLOW, View, EntityView, AnyRsetView from cubicweb.common.registerers import accepts_registerer from cubicweb.common.uilib import toggle_action @@ -718,14 +719,17 @@ return super(metafieldsform, mcs).__new__(mcs, name, bases, classdict) -class FieldsForm(FormMixIn): +class FieldsForm(FormMixIn, AppObject): __metaclass__ = metafieldsform + __registry__ = 'forms' + __select__ = yes() - def __init__(self, req, domid=None, title=None, action='edit', - onsubmit="return freezeFormButtons('%s');", + def __init__(self, req, rset=None, domid=None, title=None, action='edit', + onsubmit="return freezeFormButtons('%(domid)s');", cssclass=None, cssstyle=None, cwtarget=None, buttons=None, redirect_path=None, set_error_url=True, copy_nav_params=False): self.req = req + self.rset = rset self.config = req.vreg.config self.domid = domid or 'form' self.title = title @@ -805,6 +809,7 @@ class EntityFieldsForm(FieldsForm): + __select__ = non_final_entity() def __init__(self, *args, **kwargs): kwargs.setdefault('domid', 'entityForm') diff -r 52ee022d87e3 -r 21d4d5e6aa45 web/views/baseforms.py --- a/web/views/baseforms.py Wed Mar 11 11:13:41 2009 +0100 +++ b/web/views/baseforms.py Wed Mar 11 11:15:08 2009 +0100 @@ -74,6 +74,7 @@ class ChangeStateForm(EntityFieldsForm): + id = 'changestate' __method = StringField(name='__method', initial='set_state', widget=HiddenInput) state = StringField(widget=HiddenInput, eidparam=True) # XXX format field @@ -101,8 +102,8 @@ self.req.add_js('cubicweb.edition.js') self.req.add_css('cubicweb.form.css') _ = self.req._ - form = ChangeStateForm(self.req, entity=entity, - redirect_path=self.redirectpath(entity)) + form = self.select_object('forms', 'changestate', self.req, self.rset, row, col, + entity=entity, redirect_path=self.redirectpath(entity)) self.w(form.error_message()) self.w(u'