|
1 # |
|
2 # Copyright (c) 2008-2018 Thierry Florac <tflorac AT ulthar.net> |
|
3 # All Rights Reserved. |
|
4 # |
|
5 # This software is subject to the provisions of the Zope Public License, |
|
6 # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. |
|
7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED |
|
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
|
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
|
10 # FOR A PARTICULAR PURPOSE. |
|
11 # |
|
12 |
|
13 from zope.annotation import IAnnotations |
|
14 |
|
15 from pyams_content.component.theme import COLLECTIONS_MANAGER_KEY, ICollectionsManager, \ |
|
16 ITagsManager |
|
17 from pyams_content.features.search.interfaces import ISearchManagerInfo |
|
18 from pyams_content.shared.resource.interfaces import IResourceManager |
|
19 from pyams_utils.registry import get_local_registry, query_utility, set_local_registry |
|
20 |
|
21 __docformat__ = 'restructuredtext' |
|
22 |
|
23 |
|
24 def evolve(site): |
|
25 """Evolve 3: update search settings""" |
|
26 registry = get_local_registry() |
|
27 try: |
|
28 set_local_registry(site.getSiteManager()) |
|
29 # tags search updates |
|
30 tags_info = ITagsManager(site) |
|
31 search_info = ISearchManagerInfo(site) |
|
32 if getattr(tags_info, 'enable_tags_search', None) is not None: |
|
33 print("Updating tags search settings...") |
|
34 search_info.enable_tags_search = tags_info.enable_tags_search |
|
35 search_info.tags_search_target = tags_info.tags_search_target |
|
36 del tags_info.tags_search_target |
|
37 del tags_info.enable_tags_search |
|
38 # collections settings updates from resources settings |
|
39 resources = query_utility(IResourceManager) |
|
40 if resources is not None: |
|
41 annotations = IAnnotations(resources) |
|
42 res_collections_info = annotations.get(COLLECTIONS_MANAGER_KEY) |
|
43 if res_collections_info is not None: |
|
44 print("Updating collections settings...") |
|
45 root_collections_info = ICollectionsManager(site) |
|
46 if getattr(res_collections_info, 'thesaurus_name', None) is not None: |
|
47 root_collections_info.thesaurus_name = res_collections_info.thesaurus_name |
|
48 root_collections_info.extract_name = getattr(res_collections_info, |
|
49 'extract_name', None) |
|
50 del annotations[COLLECTIONS_MANAGER_KEY] |
|
51 finally: |
|
52 set_local_registry(registry) |