--- 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):