28 from pyams_form.interfaces.form import IFormContextPermissionChecker |
28 from pyams_form.interfaces.form import IFormContextPermissionChecker |
29 from pyams_portal.interfaces import IPortalContext |
29 from pyams_portal.interfaces import IPortalContext |
30 from pyams_security.interfaces import IDefaultProtectionPolicy, IGrantedRoleEvent, ISecurityManager |
30 from pyams_security.interfaces import IDefaultProtectionPolicy, IGrantedRoleEvent, ISecurityManager |
31 from pyams_utils.interfaces import MANAGE_SYSTEM_PERMISSION |
31 from pyams_utils.interfaces import MANAGE_SYSTEM_PERMISSION |
32 from pyams_utils.interfaces.site import IConfigurationFactory, IBackOfficeConfigurationFactory, ISiteRootFactory |
32 from pyams_utils.interfaces.site import IConfigurationFactory, IBackOfficeConfigurationFactory, ISiteRootFactory |
33 from zope.annotation.interfaces import IAnnotations |
|
34 |
33 |
35 # import packages |
34 # import packages |
36 from persistent import Persistent |
35 from persistent import Persistent |
37 from pyams_security.property import RolePrincipalsFieldProperty |
36 from pyams_security.property import RolePrincipalsFieldProperty |
38 from pyams_security.security import ProtectedObject |
37 from pyams_security.security import ProtectedObject |
39 from pyams_skin.configuration import Configuration, BackOfficeConfiguration |
38 from pyams_skin.configuration import Configuration, BackOfficeConfiguration |
40 from pyams_skin.skin import UserSkinnableContent |
39 from pyams_skin.skin import UserSkinnableContent |
41 from pyams_utils.adapter import adapter_config, ContextAdapter |
40 from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter |
42 from pyams_utils.registry import get_utility, utility_config |
41 from pyams_utils.registry import get_utility, utility_config |
43 from pyams_utils.site import BaseSiteRoot |
42 from pyams_utils.site import BaseSiteRoot |
44 from pyams_utils.traversing import get_parent |
43 from pyams_utils.traversing import get_parent |
45 from pyramid.events import subscriber |
44 from pyramid.events import subscriber |
46 from zope.interface import implementer |
45 from zope.interface import implementer |
134 forms_tool_name = None |
133 forms_tool_name = None |
135 imagemaps_tool_name = None |
134 imagemaps_tool_name = None |
136 logos_tool_name = None |
135 logos_tool_name = None |
137 news_tool_name = None |
136 news_tool_name = None |
138 |
137 |
|
138 |
139 SITEROOT_TOOLS_CONFIGURATION_KEY = 'pyams_config.tools.configuration' |
139 SITEROOT_TOOLS_CONFIGURATION_KEY = 'pyams_config.tools.configuration' |
140 |
140 |
141 |
141 |
142 @adapter_config(context=ISiteRoot, provides=ISiteRootToolsConfiguration) |
142 @adapter_config(context=ISiteRoot, provides=ISiteRootToolsConfiguration) |
143 def site_root_tools_configuration_factory(context): |
143 def site_root_tools_configuration_factory(context): |
144 """Site root tools configuration factory""" |
144 """Site root tools configuration factory""" |
145 annotations = IAnnotations(context) |
145 return get_annotation_adapter(context, SITEROOT_TOOLS_CONFIGURATION_KEY, SiteRootToolsConfiguration) |
146 config = annotations.get(SITEROOT_TOOLS_CONFIGURATION_KEY) |
|
147 if config is None: |
|
148 config = annotations[SITEROOT_TOOLS_CONFIGURATION_KEY] = SiteRootToolsConfiguration() |
|
149 return config |
|