equal
deleted
inserted
replaced
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 |
19 |
20 |
20 # import packages |
21 # import packages |
21 from zope.interface import implementer |
22 from pyams_utils.request import check_request |
|
23 from zope.interface import implementer, provider |
22 from zope.schema.fieldproperty import FieldProperty |
24 from zope.schema.fieldproperty import FieldProperty |
|
25 from zope.schema.vocabulary import getVocabularyRegistry, SimpleTerm, SimpleVocabulary |
23 |
26 |
24 |
27 |
25 @implementer(IPermission) |
28 @implementer(IPermission) |
26 class Permission(object): |
29 class Permission(object): |
27 """Permission utility class""" |
30 """Permission utility class""" |
46 ZMI features |
49 ZMI features |
47 """ |
50 """ |
48 if not IPermission.providedBy(permission): |
51 if not IPermission.providedBy(permission): |
49 permission = Permission(permission) |
52 permission = Permission(permission) |
50 config.registry.registerUtility(permission, IPermission, name=permission.id) |
53 config.registry.registerUtility(permission, IPermission, name=permission.id) |
|
54 |
|
55 |
|
56 @provider(IVocabularyFactory) |
|
57 class PermissionsVocabulary(SimpleVocabulary): |
|
58 """Permissions vocabulary""" |
|
59 |
|
60 interface = IPermission |
|
61 |
|
62 def __init__(self, *args, **kwargs): |
|
63 request = check_request() |
|
64 registry = request.registry |
|
65 translate = request.localizer.translate |
|
66 terms = [SimpleTerm(p.id, title=translate(p.title)) |
|
67 for n, p in registry.getUtilitiesFor(self.interface)] |
|
68 terms.sort(key=lambda x: x.title) |
|
69 super(PermissionsVocabulary, self).__init__(terms) |
|
70 |
|
71 getVocabularyRegistry().register('PyAMS permissions', PermissionsVocabulary) |