# HG changeset patch # User Thierry Florac # Date 1429516251 -7200 # Node ID 5b6650d040c2e9446312535bae3b5c144a3d6752 # Parent 862bed30e85b67a70008af3dc28b7957e47faea2 Added Permission and PermissionsSet fields diff -r 862bed30e85b -r 5b6650d040c2 src/pyams_security/schema.py --- a/src/pyams_security/schema.py Fri Apr 17 14:55:45 2015 +0200 +++ b/src/pyams_security/schema.py Mon Apr 20 09:50:51 2015 +0200 @@ -16,11 +16,39 @@ # import standard library # import interfaces -from zope.schema.interfaces import ITextLine, ISet +from zope.schema.interfaces import ITextLine, IChoice, ISet # import packages from zope.interface import implementer, Interface -from zope.schema import TextLine, Set +from zope.schema import TextLine, Choice, Set + + +class IPermissionField(IChoice): + """Permission field interface""" + + +@implementer(IPermissionField) +class PermissionField(Choice): + """Permission field""" + + def __init__(self, **kwargs): + if 'vocabulary' in kwargs: + del kwargs['vocabulary'] + super(PermissionField, self).__init__(vocabulary='PyAMS permissions', **kwargs) + + +class IPermissionsSetField(ISet): + """Permissions set field interface""" + + +@implementer(IPermissionsSetField) +class PermissionsSetField(Set): + """Permissions set field""" + + def __init__(self, **kwargs): + if 'value_type'in kwargs: + del kwargs['value_type'] + super(PermissionsSetField, self).__init__(value_type=PermissionField(), **kwargs) class IRoleField(Interface):