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) 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): def __init__(self, arg):
value = self.raw_value if isinstance(arg, dict):
if value is None: self.enumeration = arg
return '' else:
if value in enum: self(arg)
return enum[value]
return str(value)
def render(self, **kwargs): def __call__(self, field):
opts = [(enum[x], x) for x in sorted(enum)] super(EnumFieldRenderer, self).__init__(field)
return SelectFieldRenderer.render(self, opts, **kwargs) 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): class YesNoFieldRenderer(CheckBoxFieldRenderer):