src/pyams_security/security.py
changeset 155 326ee1e62dcb
parent 126 18711a1f3140
child 159 9bff468cbfc3
--- a/src/pyams_security/security.py	Fri Jan 11 13:17:36 2019 +0100
+++ b/src/pyams_security/security.py	Thu Jan 17 10:12:34 2019 +0100
@@ -12,30 +12,29 @@
 
 __docformat__ = 'restructuredtext'
 
-# import standard library
 import logging
-logger = logging.getLogger('PyAMS (security)')
 
-# import interfaces
-from pyams_security.interfaces import IProtectedObject, IRole, IPrincipalInfo, GrantedRoleEvent, RevokedRoleEvent, \
-    IDefaultProtectionPolicy, IRoleProtectedObject, ADMIN_USER_ID
-from pyams_utils.interfaces import PUBLIC_PERMISSION
-
-# import packages
 from persistent import Persistent
 from persistent.dict import PersistentDict
+from pyramid.location import lineage
+from pyramid.security import ALL_PERMISSIONS, Allow, Authenticated, DENY_ALL, Deny, Everyone
+from pyramid.threadlocal import get_current_registry
+from zope.container.contained import Contained
+from zope.schema.fieldproperty import FieldProperty
+
+from pyams_security.interfaces import ADMIN_USER_ID, GrantedRoleEvent, IDefaultProtectionPolicy, IPrincipalInfo, \
+    IProtectedObject, IRole, IRoleProtectedObject, RevokedRoleEvent
 from pyams_utils.adapter import adapter_config, get_annotation_adapter
+from pyams_utils.factory import factory_config
+from pyams_utils.interfaces import PUBLIC_PERMISSION
 from pyams_utils.registry import query_utility
 from pyams_utils.request import request_property
-from pyramid.location import lineage
-from pyramid.security import DENY_ALL, Everyone, Allow, Deny, ALL_PERMISSIONS, Authenticated
-from pyramid.threadlocal import get_current_registry
-from zope.container.contained import Contained
-from zope.interface import implementer
-from zope.schema.fieldproperty import FieldProperty
 
 
-@implementer(IRoleProtectedObject)
+logger = logging.getLogger('PyAMS (security)')
+
+
+@factory_config(IRoleProtectedObject)
 class RoleProtectedObject(Persistent, Contained):
     """Base class for object protected by roles"""
 
@@ -202,7 +201,7 @@
 @adapter_config(context=IDefaultProtectionPolicy, provides=IRoleProtectedObject)
 def protected_object_factory(context):
     """Default protected object factory"""
-    return get_annotation_adapter(context, ROLES_ANNOTATIONS_KEY, RoleProtectedObject)
+    return get_annotation_adapter(context, ROLES_ANNOTATIONS_KEY, IRoleProtectedObject)
 
 
 class ProtectedObject(object):