19 lines
762 B
Python
19 lines
762 B
Python
|
from django.forms.widgets import Widget
|
||
|
from django.forms.util import flatatt
|
||
|
from django.utils.safestring import mark_safe
|
||
|
|
||
|
class TriStateCheckbox(Widget):
|
||
|
|
||
|
def __init__(self, attrs=None, choices=()):
|
||
|
super(TriStateCheckbox, self).__init__(attrs)
|
||
|
# choices can be any iterable, but we may need to render this widget
|
||
|
# multiple times. Thus, collapse it into a list so it can be consumed
|
||
|
# more than once.
|
||
|
self.choices = list(choices)
|
||
|
|
||
|
def render(self, name, value, attrs=None, choices=()):
|
||
|
if value is None: value = 'none'
|
||
|
final_attrs = self.build_attrs(attrs, value=value)
|
||
|
output = [u"<span class=\"tristate\"%s></span>" % flatatt(final_attrs)]
|
||
|
return mark_safe('\n'.join(output))
|