15 |
15 |
16 # import standard library |
16 # import standard library |
17 |
17 |
18 # import interfaces |
18 # import interfaces |
19 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, \ |
20 IThemesTarget, IThemesInfo, THEMES_INFO_KEY |
20 IThemesTarget, IThemesInfo, THEMES_INFO_KEY, ITagsManager, ITagsManagerTarget, TAGS_MANAGER_KEY, ITagsInfo, \ |
|
21 ITagsTarget, TAGS_INFO_KEY |
21 from pyams_content.features.checker.interfaces import IContentChecker, ERROR_VALUE |
22 from pyams_content.features.checker.interfaces import IContentChecker, ERROR_VALUE |
22 |
23 |
23 # import packages |
24 # import packages |
24 from persistent import Persistent |
25 from persistent import Persistent |
25 from pyams_content.features.checker import BaseContentChecker |
26 from pyams_content.features.checker import BaseContentChecker |
28 from zope.interface import implementer |
29 from zope.interface import implementer |
29 from zope.schema.fieldproperty import FieldProperty |
30 from zope.schema.fieldproperty import FieldProperty |
30 |
31 |
31 from pyams_content import _ |
32 from pyams_content import _ |
32 |
33 |
|
34 |
|
35 # |
|
36 # Tags management |
|
37 # |
|
38 |
|
39 @implementer(ITagsManager) |
|
40 class TagsManager(Persistent, Contained): |
|
41 """Tags manager persistent class""" |
|
42 |
|
43 thesaurus_name = FieldProperty(ITagsManager['thesaurus_name']) |
|
44 extract_name = FieldProperty(ITagsManager['extract_name']) |
|
45 |
|
46 |
|
47 @adapter_config(context=ITagsManagerTarget, provides=ITagsManager) |
|
48 def tags_manager_factory(target): |
|
49 """Tags manager factory""" |
|
50 return get_annotation_adapter(target, TAGS_MANAGER_KEY, TagsManager, name='++tags-manager++') |
|
51 |
|
52 |
|
53 @implementer(ITagsInfo) |
|
54 class TagsInfo(Persistent, Contained): |
|
55 """Tags info persistent class""" |
|
56 |
|
57 tags = FieldProperty(ITagsInfo['tags']) |
|
58 |
|
59 |
|
60 @adapter_config(context=ITagsTarget, provides=ITagsInfo) |
|
61 def tags_info_factory(target): |
|
62 """Tags info factory""" |
|
63 return get_annotation_adapter(target, TAGS_INFO_KEY, TagsInfo, name='++tags++') |
|
64 |
|
65 |
|
66 @adapter_config(name='tags', context=ITagsTarget, provides=IContentChecker) |
|
67 class TagsContentChecker(BaseContentChecker): |
|
68 """Tags info content checker""" |
|
69 |
|
70 label = _("Tags") |
|
71 weight = 205 |
|
72 |
|
73 def inner_check(self, request): |
|
74 output = [] |
|
75 translate = request.localizer.translate |
|
76 tags = ITagsInfo(self.context) |
|
77 if not tags.tags: |
|
78 output.append(translate(ERROR_VALUE).format(field=translate(ITagsInfo['tags'].title), |
|
79 message=translate(_("no defined tag")))) |
|
80 return output |
|
81 |
|
82 |
|
83 # |
|
84 # Themes management |
|
85 # |
33 |
86 |
34 @implementer(IThemesManager) |
87 @implementer(IThemesManager) |
35 class ThemesManager(Persistent, Contained): |
88 class ThemesManager(Persistent, Contained): |
36 """Themes manager persistent class""" |
89 """Themes manager persistent class""" |
37 |
90 |