Made EnumFieldRenderer a proper class.

This commit is contained in:
Lance Edgar 2013-09-27 08:16:22 -07:00
parent a11b8d9ff2
commit 3070c280cc

View file

@ -76,26 +76,32 @@ class AutocompleteFieldRenderer(FieldRenderer):
return unicode(value)
def EnumFieldRenderer(enum):
class EnumFieldRenderer(SelectFieldRenderer):
"""
Adds support for enumeration fields.
Renderer for simple enumeration fields.
"""
class Renderer(SelectFieldRenderer):
enumeration = {}
def render_readonly(self, **kwargs):
value = self.raw_value
if value is None:
return ''
if value in enum:
return enum[value]
return str(value)
def __init__(self, arg):
if isinstance(arg, dict):
self.enumeration = arg
else:
self(arg)
def render(self, **kwargs):
opts = [(enum[x], x) for x in sorted(enum)]
return SelectFieldRenderer.render(self, opts, **kwargs)
def __call__(self, field):
super(EnumFieldRenderer, self).__init__(field)
return self
return Renderer
def render_readonly(self, **kwargs):
value = self.raw_value
if value is None:
return u''
return self.enumeration.get(value, unicode(value))
def render(self, **kwargs):
opts = [(self.enumeration[x], x) for x in sorted(self.enumeration)]
return SelectFieldRenderer.render(self, opts, **kwargs)
class YesNoFieldRenderer(CheckBoxFieldRenderer):