src/pyams_security/permission.py
changeset 72 6dd8bc7bb7b5
parent 2 94e76f8e9828
equal deleted inserted replaced
71:0a612729eb2f 72:6dd8bc7bb7b5
    14 
    14 
    15 # import standard library
    15 # import standard library
    16 
    16 
    17 # import interfaces
    17 # import interfaces
    18 from pyams_security.interfaces import IPermission
    18 from pyams_security.interfaces import IPermission
    19 from zope.schema.interfaces import IVocabularyFactory
       
    20 
    19 
    21 # import packages
    20 # import packages
    22 from pyams_utils.request import check_request
    21 from pyams_utils.request import check_request
    23 from zope.interface import implementer, provider
    22 from pyams_utils.vocabulary import vocabulary_config
       
    23 from zope.interface import implementer
    24 from zope.schema.fieldproperty import FieldProperty
    24 from zope.schema.fieldproperty import FieldProperty
    25 from zope.schema.vocabulary import getVocabularyRegistry, SimpleTerm, SimpleVocabulary
    25 from zope.schema.vocabulary import SimpleTerm, SimpleVocabulary
    26 
    26 
    27 
    27 
    28 @implementer(IPermission)
    28 @implementer(IPermission)
    29 class Permission(object):
    29 class Permission(object):
    30     """Permission utility class"""
    30     """Permission utility class"""
    51     if not IPermission.providedBy(permission):
    51     if not IPermission.providedBy(permission):
    52         permission = Permission(permission)
    52         permission = Permission(permission)
    53     config.registry.registerUtility(permission, IPermission, name=permission.id)
    53     config.registry.registerUtility(permission, IPermission, name=permission.id)
    54 
    54 
    55 
    55 
    56 @provider(IVocabularyFactory)
    56 @vocabulary_config(name='PyAMS permissions')
    57 class PermissionsVocabulary(SimpleVocabulary):
    57 class PermissionsVocabulary(SimpleVocabulary):
    58     """Permissions vocabulary"""
    58     """Permissions vocabulary"""
    59 
    59 
    60     interface = IPermission
    60     interface = IPermission
    61 
    61 
    65         translate = request.localizer.translate
    65         translate = request.localizer.translate
    66         terms = [SimpleTerm(p.id, title=translate(p.title))
    66         terms = [SimpleTerm(p.id, title=translate(p.title))
    67                  for n, p in registry.getUtilitiesFor(self.interface)]
    67                  for n, p in registry.getUtilitiesFor(self.interface)]
    68         terms.sort(key=lambda x: x.title)
    68         terms.sort(key=lambda x: x.title)
    69         super(PermissionsVocabulary, self).__init__(terms)
    69         super(PermissionsVocabulary, self).__init__(terms)
    70 
       
    71 getVocabularyRegistry().register('PyAMS permissions', PermissionsVocabulary)