﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
25193	MultiWidget is_hidden is True if subwidgets are dynamically added during its render function	Meredith Roman	nobody	"I have a custom MultiWidget that dynamically adds subwidgets during its render function. I use this widget as part of a form builder that lets a user generate a checklist or radio field with as many options as they need. Because I don't know how many subwidgets the user will need, I am unable to set the subwidgets during form initializaiton.

This is how I add subwidgets during the MultiWidget's render function: 

{{{ 
def render(self, name, value, attrs=None):
  if not isinstance(value, list):
    value = self.decompress(value)
  self.widgets = []
  for option in value:
    self.widgets.append(forms.TextInput())
  return super(OptionsWidget, self).render(name, value, attrs) 
}}}
  
This is the way that the MultiWidget is_hidden property is currently set:

{{{
@property
def is_hidden(self):
  return all(w.is_hidden for w in self.widgets)
}}}

Because I do not have any subwidgets assigned to my widget at form initilaization, and because all() returns True on an empty iterable, is_hidden was set to True for my widget.

I'm currently using this overwritten version of is_hidden for the widget:

{{{
@property
def is_hidden(self):
  return False if self.widgets == [] else all(w.is_hidden for w in self.widgets)
}}}"	Bug	closed	Forms	1.7	Normal	wontfix			Unreviewed	1	0	0	0	1	0
