diff --git a/composer/schema/field.py b/composer/schema/field.py index 1e122d2..95a8740 100644 --- a/composer/schema/field.py +++ b/composer/schema/field.py @@ -39,6 +39,7 @@ class Field(Component): required = False standardFieldName = None + vocabulary = None renderFactory = None def __init__(self, name, title=None, fieldType='textline', **kw): @@ -58,6 +59,12 @@ class Field(Component): def getTitleValue(self): return self.title or self.name + def getVocabularyItems(self): + voc = (self.vocabulary or '') + if isinstance(voc, basestring): + voc = voc.splitlines() + return [dict(token=v, title=v) for v in voc if v.strip()] + def getFieldTypeInfo(self): return fieldTypes.getTerm(self.fieldType) diff --git a/composer/schema/interfaces.py b/composer/schema/interfaces.py index fec3082..299e086 100644 --- a/composer/schema/interfaces.py +++ b/composer/schema/interfaces.py @@ -139,6 +139,12 @@ class IField(IComponent): '(only for type textarea)'), default=3, required=False,) + vocabulary = schema.Text( + title=_(u'Vocabulary'), + description=_(u'Values that may be selected as values for ' + 'this field; enter one value per line ' + '(only for dropdown and other selection fields)'), + required=False,) renderFactory = Attribute('A class or another factory providing an ' 'object used for rendering the data e.g. as a '