36 lines
1009 B
Python
36 lines
1009 B
Python
from zope.interface import implements
|
|
from zope.schema import Choice, Field
|
|
|
|
from zope.schema.interfaces import IFromUnicode
|
|
from zope.schema.interfaces import WrongType
|
|
|
|
from themisfields.interfaces import ICommission
|
|
from themisfields.vocabs import CommissionsSource
|
|
|
|
|
|
class Commission(Field):
|
|
implements(ICommission, IFromUnicode)
|
|
|
|
def __init__(self, **kw):
|
|
self.vocabulary = CommissionsSource
|
|
super(Commission, self).__init__(**kw)
|
|
|
|
source = property(lambda self: self.vocabulary)
|
|
|
|
def bind(self, object):
|
|
"""See zope.schema._bootstrapinterfaces.IField."""
|
|
clone = super(Commission, self).bind(object)
|
|
clone.vocabulary = self.vocabulary(object)
|
|
return clone
|
|
|
|
def _validate(self, value):
|
|
super(Commission, self)._validate(value)
|
|
vocabulary = self.vocabulary
|
|
if value not in vocabulary:
|
|
raise ConstraintNotSatisfied(value)
|
|
|
|
def fromUnicode(self, str):
|
|
self.validate(str)
|
|
return str
|
|
|