This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
themis.fields/themisfields/__init__.py

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