13 __docformat__ = 'restructuredtext' |
13 __docformat__ = 'restructuredtext' |
14 |
14 |
15 |
15 |
16 # import standard library |
16 # import standard library |
17 |
17 |
18 # import interfaces |
|
19 from pyams_content.component.keynumber.interfaces import IKeyNumber, IKeyNumberContainerTarget, IKeyNumberContainer, \ |
|
20 KEYNUMBER_CONTAINER_KEY |
|
21 from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE |
|
22 from pyams_form.interfaces.form import IFormContextPermissionChecker |
|
23 from pyams_i18n.interfaces import II18n, II18nManager, INegotiator |
|
24 from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectModifiedEvent, IObjectRemovedEvent |
|
25 from zope.location.interfaces import ISublocations |
|
26 from zope.traversing.interfaces import ITraversable |
|
27 |
|
28 # import packages |
|
29 from pyams_catalog.utils import index_object |
|
30 from pyams_content.features.checker import BaseContentChecker |
|
31 from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter |
|
32 from pyams_utils.registry import get_current_registry, get_utility |
|
33 from pyams_utils.request import check_request |
|
34 from pyams_utils.traversing import get_parent |
|
35 from persistent import Persistent |
18 from persistent import Persistent |
36 from pyramid.events import subscriber |
19 from pyramid.events import subscriber |
37 from zope.container.contained import Contained |
20 from zope.container.contained import Contained |
38 from zope.container.ordered import OrderedContainer |
21 from zope.container.ordered import OrderedContainer |
39 from zope.interface import implementer |
22 from zope.interface import implementer |
40 from zope.lifecycleevent import ObjectModifiedEvent |
23 from zope.lifecycleevent import ObjectModifiedEvent |
|
24 from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectModifiedEvent, IObjectRemovedEvent |
|
25 from zope.location.interfaces import ISublocations |
41 from zope.location.location import locate |
26 from zope.location.location import locate |
42 from zope.schema.fieldproperty import FieldProperty |
27 from zope.schema.fieldproperty import FieldProperty |
43 |
28 from zope.traversing.interfaces import ITraversable |
|
29 |
|
30 # import packages |
|
31 from pyams_catalog.utils import index_object |
44 from pyams_content import _ |
32 from pyams_content import _ |
|
33 # import interfaces |
|
34 from pyams_content.component.keynumber.interfaces import IKeyNumber, IKeyNumberContainer, IKeyNumberContainerTarget, \ |
|
35 KEYNUMBER_CONTAINER_KEY |
|
36 from pyams_content.features.checker import BaseContentChecker |
|
37 from pyams_content.features.checker.interfaces import IContentChecker, MISSING_LANG_VALUE, MISSING_VALUE |
|
38 from pyams_form.interfaces.form import IFormContextPermissionChecker |
|
39 from pyams_i18n.interfaces import II18n, II18nManager, INegotiator |
|
40 from pyams_utils.adapter import ContextAdapter, adapter_config, get_annotation_adapter |
|
41 from pyams_utils.registry import get_current_registry, get_utility |
|
42 from pyams_utils.request import check_request |
|
43 from pyams_utils.traversing import get_parent |
45 |
44 |
46 |
45 |
47 # |
46 # |
48 # Key number class and adapters |
47 # Key number class and adapters |
49 # |
48 # |
168 |
167 |
169 @adapter_config(name='keynumbers', context=IKeyNumberContainerTarget, provides=ITraversable) |
168 @adapter_config(name='keynumbers', context=IKeyNumberContainerTarget, provides=ITraversable) |
170 class KeyNumberContainerNamespace(ContextAdapter): |
169 class KeyNumberContainerNamespace(ContextAdapter): |
171 """Key numbers container ++keynumbers++ namespace""" |
170 """Key numbers container ++keynumbers++ namespace""" |
172 |
171 |
173 def traverse(self, name, furtherpaath=None): |
172 def traverse(self, name, furtherpath=None): |
174 return IKeyNumberContainer(self.context) |
173 return IKeyNumberContainer(self.context) |
175 |
174 |
176 |
175 |
177 @adapter_config(name='keynumbers', context=IKeyNumberContainerTarget, provides=ISublocations) |
176 @adapter_config(name='keynumbers', context=IKeyNumberContainerTarget, provides=ISublocations) |
178 class KeyNumberContainerSublocations(ContextAdapter): |
177 class KeyNumberContainerSublocations(ContextAdapter): |