Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Config with default template #9

Merged
merged 11 commits into from
Apr 25, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Generated from:
# https://github.com/plone/meta/tree/master/config/default
#
# EditorConfig Configuration file, for more details see:
# http://EditorConfig.org
# EditorConfig is a convention description, that could be interpreted
# by multiple editors to enforce common coding conventions for specific
# file types

# top-most EditorConfig file:
# Will ignore other EditorConfig files in Home directory or upper tree level.
root = true


[*] # For All Files
# Unix-style newlines with a newline ending every file
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
# Set default charset
charset = utf-8
# Indent style default
indent_style = space
# Max Line Length - a hard line wrap, should be disabled
max_line_length = off

[*.{py,cfg,ini}]
# 4 space indentation
indent_size = 4

[*.{yml,zpt,pt,dtml,zcml}]
# 2 space indentation
indent_size = 2

[{Makefile,.gitmodules}]
# Tab indentation (no size specified, but view as 4 spaces)
indent_style = tab
indent_size = unset
tab_width = unset
5 changes: 5 additions & 0 deletions .meta.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Generated from:
# https://github.com/plone/meta/tree/master/config/default
[meta]
template = "default"
commit-id = "2a4ba395"
42 changes: 42 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Generated from:
# https://github.com/plone/meta/tree/master/config/default
ci:
autofix_prs: false
autoupdate_schedule: monthly

repos:
- repo: https://github.com/asottile/pyupgrade
rev: v3.3.1
hooks:
- id: pyupgrade
args: [--py38-plus]
- repo: https://github.com/pycqa/isort
rev: 5.12.0
hooks:
- id: isort
- repo: https://github.com/psf/black
rev: 23.3.0
hooks:
- id: black
- repo: https://github.com/collective/zpretty
rev: 3.0.3
hooks:
- id: zpretty
- repo: https://github.com/PyCQA/flake8
rev: 6.0.0
hooks:
- id: flake8
- repo: https://github.com/codespell-project/codespell
rev: v2.2.4
hooks:
- id: codespell
additional_dependencies:
- tomli
- repo: https://github.com/mgedmin/check-manifest
rev: "0.49"
hooks:
- id: check-manifest
- repo: https://github.com/regebro/pyroma
rev: "4.2"
hooks:
- id: pyroma
2 changes: 2 additions & 0 deletions news/2a4ba395.internal
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Update configuration files.
[plone devs]
7 changes: 1 addition & 6 deletions plone/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1 @@
# See http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
try:
__import__('pkg_resources').declare_namespace(__name__)
except ImportError:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
__import__("pkg_resources").declare_namespace(__name__)
3 changes: 3 additions & 0 deletions plone/theme/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ Before we turn on the skin, we will get the default view.
>>> from __future__ import print_function
>>> print(browser.contents)
Default
...

However, if we turn the skin on, we should see the effects of the marker
interface being applied.
Expand All @@ -79,6 +80,7 @@ interface being applied.
>>> browser.open(layer['portal'].absolute_url() + '/@@layer-test-view')
>>> print(browser.contents)
My Theme
...

And if we switch back:

Expand All @@ -88,3 +90,4 @@ And if we switch back:
>>> browser.open(layer['portal'].absolute_url() + '/@@layer-test-view')
>>> print(browser.contents)
Default
...
13 changes: 7 additions & 6 deletions plone/theme/configure.zcml
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:five="http://namespaces.zope.org/five">
xmlns:five="http://namespaces.zope.org/five"
>

<subscriber
for="Products.CMFCore.interfaces.ISiteRoot
zope.traversing.interfaces.IBeforeTraverseEvent"
handler=".layer.mark_layer"
/>
<subscriber
for="Products.CMFCore.interfaces.ISiteRoot
zope.traversing.interfaces.IBeforeTraverseEvent"
handler=".layer.mark_layer"
/>

</configure>
3 changes: 1 addition & 2 deletions plone/theme/interfaces.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,4 @@


class IDefaultPloneLayer(IDefaultBrowserLayer):
"""A Zope 3 browser layer corresponding to Plone defaults
"""
"""A Zope 3 browser layer corresponding to Plone defaults"""
19 changes: 13 additions & 6 deletions plone/theme/layer.py
Original file line number Diff line number Diff line change
@@ -1,26 +1,27 @@
# -*- coding: utf-8 -*-
from plone.theme.interfaces import IDefaultPloneLayer
from Products.CMFCore.utils import getToolByName
from zope.component import queryUtility
from zope.interface import directlyProvides, directlyProvidedBy
from zope.interface import directlyProvidedBy
from zope.interface import directlyProvides
from zope.publisher.interfaces.browser import IBrowserSkinType
from zope.publisher.interfaces.browser import IDefaultBrowserLayer


default_layers = [
IDefaultPloneLayer,
IDefaultBrowserLayer,
]
]


def mark_layer(site, event):
"""Mark the request with a layer corresponding to the current skin,
as set in the portal_skins tool.
"""
if getattr(event.request, '_plonetheme_', False):
if getattr(event.request, "_plonetheme_", False):
return
event.request._plonetheme_ = True

portal_skins = getToolByName(site, 'portal_skins', None)
portal_skins = getToolByName(site, "portal_skins", None)
if portal_skins is not None:
skin_name = site.getCurrentSkinName()
if skin_name is None:
Expand All @@ -40,5 +41,11 @@ def mark_layer(site, event):
continue
else:
layer_ifaces.append(layer)
ifaces = [skin, ] + layer_ifaces + default_ifaces
ifaces = (
[
skin,
]
+ layer_ifaces
+ default_ifaces
)
directlyProvides(event.request, *ifaces)
15 changes: 7 additions & 8 deletions plone/theme/testing.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,21 @@
# -*- coding: utf-8 -*-

from plone.app.testing import PloneSandboxLayer
from plone.app.testing.layers import FunctionalTesting
from plone.app.testing.layers import IntegrationTesting


class PloneThemeLayer(PloneSandboxLayer):

def setUpZope(self, app, configurationContext):
import plone.theme.tests
self.loadZCML('tests.zcml', package=plone.theme.tests)

self.loadZCML("tests.zcml", package=plone.theme.tests)


PLONETHEME_FIXTURE = PloneThemeLayer()

PLONETHEME_FUNCTIONAL_TESTING = FunctionalTesting(
bases=(PLONETHEME_FIXTURE,),
name="PloneTheme:Functional")
bases=(PLONETHEME_FIXTURE,), name="PloneTheme:Functional"
)

PLONETHEME_INTEGRATION_TESTING = IntegrationTesting(
bases=(PLONETHEME_FIXTURE,),
name="PloneTheme:Integration")
bases=(PLONETHEME_FIXTURE,), name="PloneTheme:Integration"
)
2 changes: 1 addition & 1 deletion plone/theme/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
#
#
4 changes: 3 additions & 1 deletion plone/theme/tests/default.pt
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
<tal:block define="dummy python:request.response.setHeader('Content-Type', 'text/plain')" />Default
<tal:block define="
dummy python:request.response.setHeader('Content-Type', 'text/plain');
" />Default
3 changes: 1 addition & 2 deletions plone/theme/tests/interfaces.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,4 @@


class IMyTheme(IDefaultPloneLayer):
"""Marker interface used in the tests
"""
"""Marker interface used in the tests"""
4 changes: 3 additions & 1 deletion plone/theme/tests/mytheme.pt
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
<tal:block define="dummy python:request.response.setHeader('Content-Type', 'text/plain')" />My Theme
<tal:block define="
dummy python:request.response.setHeader('Content-Type', 'text/plain');
" />My Theme
36 changes: 18 additions & 18 deletions plone/theme/tests/testBrowserLayerPrecedence.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@

from plone.theme.interfaces import IDefaultPloneLayer
from plone.theme.testing import PLONETHEME_INTEGRATION_TESTING

from zope.event import notify
from zope.interface import Interface, directlyProvides, directlyProvidedBy
from zope.component import getGlobalSiteManager
from zope.event import notify
from zope.interface import directlyProvidedBy
from zope.interface import directlyProvides
from zope.interface import Interface
from zope.publisher.browser import setDefaultSkin
from zope.publisher.interfaces.browser import IBrowserSkinType
from zope.publisher.interfaces.browser import IDefaultBrowserLayer
from zope.publisher.browser import setDefaultSkin
from zope.traversing.interfaces import BeforeTraverseEvent

import unittest
Expand All @@ -28,25 +29,23 @@ class IAdditiveLayerExtendingDefault(IDefaultPloneLayer):


class LayerPrecedenceTestCase(unittest.TestCase):

layer = PLONETHEME_INTEGRATION_TESTING

additive_layer = None
theme_layer = None

def setUp(self):
self.portal = self.layer['portal']
self.portal = self.layer["portal"]
gsm = getGlobalSiteManager()
if self.theme_layer is not None:
self._skin_name = self.portal.portal_skins.getDefaultSkin()
self._old_theme_layer = gsm.queryUtility(IBrowserSkinType,
name=self._skin_name)
gsm.registerUtility(self.theme_layer,
IBrowserSkinType,
self._skin_name)
self._old_theme_layer = gsm.queryUtility(
IBrowserSkinType, name=self._skin_name
)
gsm.registerUtility(self.theme_layer, IBrowserSkinType, self._skin_name)

def _get_request_interfaces(self):
request = self.layer['request']
request = self.layer["request"]
setDefaultSkin(request)
orig_iro = list(directlyProvidedBy(request).__iro__)
directlyProvides(request, [self.additive_layer] + orig_iro)
Expand Down Expand Up @@ -78,13 +77,12 @@ def testLayerPrecedence(self):
def beforeTearDown(self):
gsm = getGlobalSiteManager()
if self.theme_layer is not None:
res = gsm.unregisterUtility(provided=IBrowserSkinType,
name=self._skin_name)
res = gsm.unregisterUtility(provided=IBrowserSkinType, name=self._skin_name)
self.assertTrue(res)
if self._old_theme_layer is not None:
gsm.registerUtility(self._old_theme_layer,
IBrowserSkinType,
self._skin_name)
gsm.registerUtility(
self._old_theme_layer, IBrowserSkinType, self._skin_name
)


class TestPrecedenceWithAdditiveLayerExtendingInterface(LayerPrecedenceTestCase):
Expand All @@ -103,7 +101,9 @@ class TestPrecedenceWithNoThemeLayer(LayerPrecedenceTestCase):


def test_suite():
from unittest import TestSuite, makeSuite
from unittest import makeSuite
from unittest import TestSuite

suite = TestSuite()
suite.addTest(makeSuite(TestPrecedenceWithAdditiveLayerExtendingInterface))
suite.addTest(makeSuite(TestPrecedenceWithAdditiveLayerExtendingDefault))
Expand Down
20 changes: 13 additions & 7 deletions plone/theme/tests/test_doctest.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
import unittest
import doctest

from plone.testing import layered
from plone.theme.testing import PLONETHEME_FUNCTIONAL_TESTING

from plone.testing import layered
import doctest
import unittest


def test_suite():
return unittest.TestSuite(
[layered(doctest.DocFileSuite('README.rst', package='plone.theme',
optionflags=doctest.ELLIPSIS | doctest.REPORT_ONLY_FIRST_FAILURE),
layer=PLONETHEME_FUNCTIONAL_TESTING)]
[
layered(
doctest.DocFileSuite(
"README.rst",
package="plone.theme",
optionflags=doctest.ELLIPSIS | doctest.REPORT_ONLY_FIRST_FAILURE,
),
layer=PLONETHEME_FUNCTIONAL_TESTING,
)
]
)
31 changes: 16 additions & 15 deletions plone/theme/tests/tests.zcml
Original file line number Diff line number Diff line change
@@ -1,26 +1,27 @@
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser">
xmlns:browser="http://namespaces.zope.org/browser"
>

<interface
<interface
interface=".interfaces.IMyTheme"
type="zope.publisher.interfaces.browser.IBrowserSkinType"
name="My Theme"
/>

<browser:page
name="layer-test-view"
for="*"
template="default.pt"
permission="zope2.View"
/>
<browser:page
name="layer-test-view"
for="*"
template="default.pt"
permission="zope2.View"
/>

<browser:page
name="layer-test-view"
for="*"
layer=".interfaces.IMyTheme"
template="mytheme.pt"
permission="zope2.View"
/>
<browser:page
name="layer-test-view"
for="*"
template="mytheme.pt"
permission="zope2.View"
layer=".interfaces.IMyTheme"
/>

</configure>
Loading
Loading