# HG changeset patch # User Thierry Florac # Date 1541609035 -3600 # Node ID 1f86294651419e14d5dd7708083173225c4a570b # Parent 258bb3e29cbbc8cd90af1325d5c68d2f792f89c9 Moved skin features to PyAMS default theme diff -r 258bb3e29cbb -r 1f8629465141 src/pyams_content/features/sitemap/__init__.py --- a/src/pyams_content/features/sitemap/__init__.py Wed Nov 07 17:36:53 2018 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -# -# Copyright (c) 2008-2018 Thierry Florac -# All Rights Reserved. -# -# This software is subject to the provisions of the Zope Public License, -# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. -# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED -# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS -# FOR A PARTICULAR PURPOSE. -# - -__docformat__ = 'restructuredtext' - - diff -r 258bb3e29cbb -r 1f8629465141 src/pyams_content/features/sitemap/skin/__init__.py --- a/src/pyams_content/features/sitemap/skin/__init__.py Wed Nov 07 17:36:53 2018 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -# -# Copyright (c) 2008-2018 Thierry Florac -# All Rights Reserved. -# -# This software is subject to the provisions of the Zope Public License, -# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. -# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED -# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS -# FOR A PARTICULAR PURPOSE. -# - -__docformat__ = 'restructuredtext' - -from datetime import datetime -from itertools import product - -from hypatia.catalog import CatalogQuery -from hypatia.interfaces import ICatalog -from hypatia.query import Any, Eq -from pyramid.view import view_config -from zope.intid import IIntIds - -from pyams_catalog.query import CatalogResultSet -from pyams_content.root import ISiteRoot, ISiteRootToolsConfiguration -from pyams_content.shared.common import CONTENT_TYPES, IBaseSharedTool -from pyams_i18n.interfaces import II18nManager -from pyams_skin.layer import IPyAMSUserLayer -from pyams_utils.list import unique_iter -from pyams_utils.registry import get_all_utilities_registered_for, get_utility -from pyams_workflow.interfaces import IWorkflow, IWorkflowPublicationInfo - - -@view_config(name='robots.txt', context=ISiteRoot, request_type=IPyAMSUserLayer, - renderer='templates/robots.pt') -def site_root_robots_view(request): - """Site root robots.txt view""" - request.response.content_type = 'text/plain' - return { - 'tools_configuration': ISiteRootToolsConfiguration(request.root), - 'disallow': [tool for tool in get_all_utilities_registered_for(IBaseSharedTool) - if not tool.shared_content_menu] - } - - -@view_config(name='humans.txt', context=ISiteRoot, request_type=IPyAMSUserLayer, - renderer='templates/humans.pt') -def site_root_humans_view(request): - """Site root humans.txt view""" - request.response.content_type = 'text/plain' - return {} - - -@view_config(name='sitemap.xml', context=ISiteRoot, request_type=IPyAMSUserLayer, - renderer='templates/root-sitemap.pt') -class SiteRootSitemapView(object): - """Site root sitemap view""" - - def __init__(self, request): - self.request = request - - def __call__(self): - self.request.response.content_type = 'text/xml' - return {} - - @property - def sources(self): - timestamp = datetime.utcnow().isoformat() - for tool in get_all_utilities_registered_for(IBaseSharedTool): - if not tool.shared_content_menu: - continue - publication_info = IWorkflowPublicationInfo(tool, None) - if (publication_info is None) or publication_info.is_visible(self.request): - yield timestamp, tool - - -@view_config(name='sitemap.xml', context=IBaseSharedTool, request_type=IPyAMSUserLayer, - renderer='templates/tool-sitemap.pt') -class SharedToolSitemapView(object): - """Shared tool sitemap view""" - - def __init__(self, request): - self.request = request - - def __call__(self): - self.request.response.content_type = 'text/xml' - return {} - - @property - def contents(self): - context = self.request.context - catalog = get_utility(ICatalog) - intids = get_utility(IIntIds) - workflow = IWorkflow(context) - params = Eq(catalog['parents'], intids.register(context)) & \ - Any(catalog['content_type'], CONTENT_TYPES.keys()) & \ - Any(catalog['workflow_state'], workflow.published_states) - for version in unique_iter(CatalogResultSet(CatalogQuery(catalog).query(params))): - yield from product(II18nManager(version).get_languages(), (version,))