12 |
12 |
13 __docformat__ = 'restructuredtext' |
13 __docformat__ = 'restructuredtext' |
14 |
14 |
15 from persistent import Persistent |
15 from persistent import Persistent |
16 from zope.container.contained import Contained |
16 from zope.container.contained import Contained |
17 from zope.interface import implementer |
|
18 from zope.schema.fieldproperty import FieldProperty |
17 from zope.schema.fieldproperty import FieldProperty |
19 |
18 |
20 from pyams_content.component.theme.interfaces import IThemesManagerTarget, IThemesManager, THEMES_MANAGER_KEY, \ |
19 from pyams_content.component.theme.interfaces import IThemesManagerTarget, IThemesManager, THEMES_MANAGER_KEY, \ |
21 IThemesTarget, IThemesInfo, THEMES_INFO_KEY, ITagsManager, ITagsManagerTarget, TAGS_MANAGER_KEY, ITagsInfo, \ |
20 IThemesTarget, IThemesInfo, THEMES_INFO_KEY, ITagsManager, ITagsManagerTarget, TAGS_MANAGER_KEY, ITagsInfo, \ |
22 ITagsTarget, TAGS_INFO_KEY, ICollectionsManager, ICollectionsManagerTarget, COLLECTIONS_MANAGER_KEY, \ |
21 ITagsTarget, TAGS_INFO_KEY, ICollectionsManager, ICollectionsManagerTarget, COLLECTIONS_MANAGER_KEY, \ |
23 ICollectionsInfo, ICollectionsTarget, COLLECTIONS_INFO_KEY |
22 ICollectionsInfo, ICollectionsTarget, COLLECTIONS_INFO_KEY |
24 from pyams_content.features.checker import BaseContentChecker |
23 from pyams_content.features.checker import BaseContentChecker |
25 from pyams_content.features.checker.interfaces import IContentChecker, ERROR_VALUE |
24 from pyams_content.features.checker.interfaces import IContentChecker, ERROR_VALUE |
26 from pyams_utils.adapter import adapter_config, get_annotation_adapter |
25 from pyams_utils.adapter import adapter_config, get_annotation_adapter |
|
26 from pyams_utils.factory import factory_config |
27 |
27 |
28 from pyams_content import _ |
28 from pyams_content import _ |
29 |
29 |
30 |
30 |
31 # |
31 # |
32 # Tags management |
32 # Tags management |
33 # |
33 # |
34 |
34 |
35 @implementer(ITagsManager) |
35 @factory_config(ITagsManager) |
36 class TagsManager(Persistent, Contained): |
36 class TagsManager(Persistent, Contained): |
37 """Tags manager persistent class""" |
37 """Tags manager persistent class""" |
38 |
38 |
39 thesaurus_name = FieldProperty(ITagsManager['thesaurus_name']) |
39 thesaurus_name = FieldProperty(ITagsManager['thesaurus_name']) |
40 extract_name = FieldProperty(ITagsManager['extract_name']) |
40 extract_name = FieldProperty(ITagsManager['extract_name']) |
47 |
47 |
48 |
48 |
49 @adapter_config(context=ITagsManagerTarget, provides=ITagsManager) |
49 @adapter_config(context=ITagsManagerTarget, provides=ITagsManager) |
50 def tags_manager_factory(target): |
50 def tags_manager_factory(target): |
51 """Tags manager factory""" |
51 """Tags manager factory""" |
52 return get_annotation_adapter(target, TAGS_MANAGER_KEY, TagsManager, name='++tags-manager++') |
52 return get_annotation_adapter(target, TAGS_MANAGER_KEY, ITagsManager, |
|
53 name='++tags-manager++') |
53 |
54 |
54 |
55 |
55 @implementer(ITagsInfo) |
56 @factory_config(ITagsInfo) |
56 class TagsInfo(Persistent, Contained): |
57 class TagsInfo(Persistent, Contained): |
57 """Tags info persistent class""" |
58 """Tags info persistent class""" |
58 |
59 |
59 tags = FieldProperty(ITagsInfo['tags']) |
60 tags = FieldProperty(ITagsInfo['tags']) |
60 |
61 |
61 |
62 |
62 @adapter_config(context=ITagsTarget, provides=ITagsInfo) |
63 @adapter_config(context=ITagsTarget, provides=ITagsInfo) |
63 def tags_info_factory(target): |
64 def tags_info_factory(target): |
64 """Tags info factory""" |
65 """Tags info factory""" |
65 return get_annotation_adapter(target, TAGS_INFO_KEY, TagsInfo, name='++tags++') |
66 return get_annotation_adapter(target, TAGS_INFO_KEY, ITagsInfo, |
|
67 name='++tags++') |
66 |
68 |
67 |
69 |
68 @adapter_config(name='tags', context=ITagsTarget, provides=IContentChecker) |
70 @adapter_config(name='tags', context=ITagsTarget, provides=IContentChecker) |
69 class TagsContentChecker(BaseContentChecker): |
71 class TagsContentChecker(BaseContentChecker): |
70 """Tags info content checker""" |
72 """Tags info content checker""" |
84 |
86 |
85 # |
87 # |
86 # Themes management |
88 # Themes management |
87 # |
89 # |
88 |
90 |
89 @implementer(IThemesManager) |
91 @factory_config(IThemesManager) |
90 class ThemesManager(Persistent, Contained): |
92 class ThemesManager(Persistent, Contained): |
91 """Themes manager persistent class""" |
93 """Themes manager persistent class""" |
92 |
94 |
93 thesaurus_name = FieldProperty(IThemesManager['thesaurus_name']) |
95 thesaurus_name = FieldProperty(IThemesManager['thesaurus_name']) |
94 extract_name = FieldProperty(IThemesManager['extract_name']) |
96 extract_name = FieldProperty(IThemesManager['extract_name']) |
95 |
97 |
96 |
98 |
97 @adapter_config(context=IThemesManagerTarget, provides=IThemesManager) |
99 @adapter_config(context=IThemesManagerTarget, provides=IThemesManager) |
98 def themes_manager_factory(target): |
100 def themes_manager_factory(target): |
99 """Themes manager factory""" |
101 """Themes manager factory""" |
100 return get_annotation_adapter(target, THEMES_MANAGER_KEY, ThemesManager, name='++themes-manager++') |
102 return get_annotation_adapter(target, THEMES_MANAGER_KEY, IThemesManager, |
|
103 name='++themes-manager++') |
101 |
104 |
102 |
105 |
103 @implementer(IThemesInfo) |
106 @factory_config(IThemesInfo) |
104 class ThemesInfo(Persistent, Contained): |
107 class ThemesInfo(Persistent, Contained): |
105 """Themes info persistent class""" |
108 """Themes info persistent class""" |
106 |
109 |
107 themes = FieldProperty(IThemesInfo['themes']) |
110 themes = FieldProperty(IThemesInfo['themes']) |
108 |
111 |
109 |
112 |
110 @adapter_config(context=IThemesTarget, provides=IThemesInfo) |
113 @adapter_config(context=IThemesTarget, provides=IThemesInfo) |
111 def themes_info_factory(target): |
114 def themes_info_factory(target): |
112 """Themes info factory""" |
115 """Themes info factory""" |
113 return get_annotation_adapter(target, THEMES_INFO_KEY, ThemesInfo, name='++themes++') |
116 return get_annotation_adapter(target, THEMES_INFO_KEY, IThemesInfo, |
|
117 name='++themes++') |
114 |
118 |
115 |
119 |
116 @adapter_config(name='themes', context=IThemesTarget, provides=IContentChecker) |
120 @adapter_config(name='themes', context=IThemesTarget, provides=IContentChecker) |
117 class ThemesContentChecker(BaseContentChecker): |
121 class ThemesContentChecker(BaseContentChecker): |
118 """Themes info content checker""" |
122 """Themes info content checker""" |
132 |
136 |
133 # |
137 # |
134 # Collections management |
138 # Collections management |
135 # |
139 # |
136 |
140 |
137 @implementer(ICollectionsManager) |
141 @factory_config(ICollectionsManager) |
138 class CollectionsManager(Persistent, Contained): |
142 class CollectionsManager(Persistent, Contained): |
139 """Collections manager persistent class""" |
143 """Collections manager persistent class""" |
140 |
144 |
141 thesaurus_name = FieldProperty(ICollectionsManager['thesaurus_name']) |
145 thesaurus_name = FieldProperty(ICollectionsManager['thesaurus_name']) |
142 extract_name = FieldProperty(ICollectionsManager['extract_name']) |
146 extract_name = FieldProperty(ICollectionsManager['extract_name']) |
143 |
147 |
144 |
148 |
145 @adapter_config(context=ICollectionsManagerTarget, provides=ICollectionsManager) |
149 @adapter_config(context=ICollectionsManagerTarget, provides=ICollectionsManager) |
146 def collections_manager_factory(target): |
150 def collections_manager_factory(target): |
147 """Collections manager factory""" |
151 """Collections manager factory""" |
148 return get_annotation_adapter(target, COLLECTIONS_MANAGER_KEY, CollectionsManager, name='++collections-manager++') |
152 return get_annotation_adapter(target, COLLECTIONS_MANAGER_KEY, ICollectionsManager, |
|
153 name='++collections-manager++') |
149 |
154 |
150 |
155 |
151 @implementer(ICollectionsInfo) |
156 @factory_config(ICollectionsInfo) |
152 class CollectionsInfo(Persistent, Contained): |
157 class CollectionsInfo(Persistent, Contained): |
153 """Collections info persistent class""" |
158 """Collections info persistent class""" |
154 |
159 |
155 collections = FieldProperty(ICollectionsInfo['collections']) |
160 collections = FieldProperty(ICollectionsInfo['collections']) |
156 |
161 |
157 |
162 |
158 @adapter_config(context=ICollectionsTarget, provides=ICollectionsInfo) |
163 @adapter_config(context=ICollectionsTarget, provides=ICollectionsInfo) |
159 def collections_info_factory(target): |
164 def collections_info_factory(target): |
160 """Collections info factory""" |
165 """Collections info factory""" |
161 return get_annotation_adapter(target, COLLECTIONS_INFO_KEY, CollectionsInfo, name='++collections++') |
166 return get_annotation_adapter(target, COLLECTIONS_INFO_KEY, ICollectionsInfo, |
|
167 name='++collections++') |
162 |
168 |
163 |
169 |
164 @adapter_config(name='collections', context=ICollectionsTarget, provides=IContentChecker) |
170 @adapter_config(name='collections', context=ICollectionsTarget, provides=IContentChecker) |
165 class CollectionsContentChecker(BaseContentChecker): |
171 class CollectionsContentChecker(BaseContentChecker): |
166 """Collections info content checker""" |
172 """Collections info content checker""" |