transfer form value
This commit is contained in:
parent
e9de9d11d5
commit
d1a2bb1e92
|
@ -1253,11 +1253,11 @@ def test_form_titles(pub):
|
|||
resp.form['f1'] = 'foo'
|
||||
resp = resp.form.submit('submit')
|
||||
assert '<h3 data-field-id="6">title of second page</h3>' in resp.text
|
||||
resp.form['f3'] = 'foo'
|
||||
resp = resp.form.submit('submit') # -> validation page
|
||||
assert '<h3>1st page</h3>' in resp.text
|
||||
assert '<h4 data-field-id="5">subtitle of 1st page</h4>' in resp.text
|
||||
assert '<h3 data-field-id="6">title of second page</h3>' in resp.text
|
||||
resp.form['f3'] = 'foo'
|
||||
resp = resp.form.submit('submit').follow() # -> submit
|
||||
assert '<h3>1st page</h3>' in resp.text
|
||||
assert not '<div class="title "><h3>1st page</h3></div>' in resp.text
|
||||
|
|
|
@ -541,6 +541,7 @@ class WidgetField(Field):
|
|||
form.add(self.widget_class, self.field_key, title = self.label,
|
||||
value = value, readonly = 'readonly', **kwargs)
|
||||
widget = form.get_widget(self.field_key)
|
||||
widget.transfer_form_value(get_request())
|
||||
if self.extra_css_class:
|
||||
if hasattr(widget, 'extra_css_class') and widget.extra_css_class:
|
||||
widget.extra_css_class = '%s %s' % (widget.extra_css_class, self.extra_css_class)
|
||||
|
|
|
@ -386,6 +386,7 @@ class FormPage(Directory, FormTemplateMixin):
|
|||
if not isinstance(v, str) and field.convert_value_to_str:
|
||||
v = field.convert_value_to_str(v)
|
||||
form.get_widget('f%s' % k).set_value(v)
|
||||
form.get_widget('f%s' % k).transfer_form_value(req)
|
||||
if field.type == 'item' and v and form.get_widget('f%s' % k).value != v:
|
||||
# mark field as invalid if the value was not accepted
|
||||
# (this is required by quixote>=3 as the value would
|
||||
|
@ -395,10 +396,6 @@ class FormPage(Directory, FormTemplateMixin):
|
|||
if locked:
|
||||
form.get_widget('f%s' % k).readonly = 'readonly'
|
||||
form.get_widget('f%s' % k).attrs['readonly'] = 'readonly'
|
||||
if field.key == 'map':
|
||||
req.form['f%s$latlng' % k] = v
|
||||
else:
|
||||
req.form['f%s' % k] = v
|
||||
had_prefill = True
|
||||
|
||||
if had_prefill:
|
||||
|
|
|
@ -309,6 +309,15 @@ def get_selection_error_text(*args):
|
|||
SelectWidget.SELECTION_ERROR = property(get_selection_error_text)
|
||||
|
||||
|
||||
def transfer_form_value(self, request):
|
||||
# transfer form value (set in constructor, or using set_value) to
|
||||
# request.form{}
|
||||
request.form[self.name] = self.value
|
||||
|
||||
|
||||
Widget.transfer_form_value = transfer_form_value
|
||||
|
||||
|
||||
class Form(QuixoteForm):
|
||||
TOKEN_NOTICE = N_(
|
||||
"The form you have submitted is invalid. Most "
|
||||
|
@ -487,6 +496,9 @@ class HtmlWidget(object):
|
|||
def clear_error(self, request=None):
|
||||
pass
|
||||
|
||||
def transfer_form_value(self, request):
|
||||
pass
|
||||
|
||||
|
||||
class CommentWidget(Widget):
|
||||
template_name = 'qommon/forms/widgets/comment.html'
|
||||
|
@ -509,6 +521,10 @@ class CommentWidget(Widget):
|
|||
class CompositeWidget(quixote.form.CompositeWidget):
|
||||
content_extra_attributes = {'role': 'group'}
|
||||
|
||||
def transfer_form_value(self, request):
|
||||
for widget in self.get_widgets():
|
||||
widget.transfer_form_value(request)
|
||||
|
||||
def render_as_thead(self):
|
||||
r = TemplateIO(html=True)
|
||||
r += htmltext('<tr>\n')
|
||||
|
@ -1433,6 +1449,10 @@ class WidgetList(quixote.form.widget.WidgetList):
|
|||
def add_media(self):
|
||||
get_response().add_javascript(['jquery.js', 'widget_list.js'])
|
||||
|
||||
def transfer_form_value(self, request):
|
||||
for widget in self.get_widgets():
|
||||
widget.transfer_form_value(request)
|
||||
|
||||
def render(self):
|
||||
return render(self)
|
||||
|
||||
|
|
Loading…
Reference in New Issue