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

4.1 robot #2

Merged
merged 1 commit into from Nov 7, 2011
Merged

4.1 robot #2

merged 1 commit into from Nov 7, 2011

Conversation

mpeeters
Copy link
Member

@mpeeters mpeeters commented Nov 7, 2011

No description provided.

gotcha added a commit that referenced this pull request Nov 7, 2011
@gotcha gotcha merged commit 63f7a54 into plone:4.1-robot Nov 7, 2011
jensens added a commit that referenced this pull request Mar 5, 2015
Branch: refs/heads/master
Date: 2015-03-05T17:27:41+01:00
Author: Asko Soukka (datakurre) <asko.soukka@iki.fi>
Commit: https://github.com/plone/plone.subrequest/commit/161041e7b0b5aa2403d22ea7fff63fb3fd1639a4

Fix issue where new cookies from the main request.response are not passed to subrequests.

Files changed:
M plone/subrequest/__init__.py
M plone/subrequest/tests.py

diff --git a/plone/subrequest/__init__.py b/plone/subrequest/__init__.py
index c9d4453..4fe947d 100644
--- a/plone/subrequest/__init__.py
+++ b/plone/subrequest/__init__.py
@@ -95,6 +95,8 @@ def subrequest(url, root=None, stdout=None):
         if name in OTHER_IGNORE or OTHER_IGNORE_RE.match(name) or name.startswith('_'):
             continue
         request.other[name] = parent_value
+    for key, value in parent_request.response.cookies.items():
+        request.cookies[key] = value['value']
     request['PARENT_REQUEST'] = parent_request
     alsoProvides(request, ISubRequest)
     try:
diff --git a/plone/subrequest/tests.py b/plone/subrequest/tests.py
index a7d7c1d..c5f9d8b 100644
--- a/plone/subrequest/tests.py
+++ b/plone/subrequest/tests.py
@@ -152,6 +152,12 @@ def test_parameter(self):
         self.assertTrue('foo' in response.body)
 
     def test_cookies(self):
+        request = getRequest()
+        request.response.setCookie('cookie_name', 'cookie_value')
+        response = subrequest('/folder1/@@parameter')
+        self.assertTrue("'cookie_name'" in response.body)
+
+    def test_subrequest_cookies(self):
         response = subrequest('/folder1/@@test?url=/folder1/cookie')
         self.assertTrue('cookie_name' in response.cookies)
 


Repository: plone.subrequest
Branch: refs/heads/master
Date: 2015-03-05T17:27:41+01:00
Author: Asko Soukka (datakurre) <asko.soukka@iki.fi>
Commit: https://github.com/plone/plone.subrequest/commit/9ca8b8e99cd4c52dbec8f2fd0bfa161729cdf8ef

Update changelog

Files changed:
M CHANGES.txt

diff --git a/CHANGES.txt b/CHANGES.txt
index ee2204c..e45e81c 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,6 +1,13 @@
 Changelog
 =========
 
+1.6.9 (unreleased)
+------------------
+
+- Fix issue where new cookies from the main request.response are not passed to
+  subrequests.
+  [datakurre]
+
 1.6.8 (unreleased)
 ------------------
 


Repository: plone.subrequest
Branch: refs/heads/master
Date: 2015-03-05T17:27:41+01:00
Author: Asko Soukka (datakurre) <asko.soukka@iki.fi>
Commit: https://github.com/plone/plone.subrequest/commit/9161b1d804a3933f0a18d38b9ebe469ec1d4a386

Update changelog

Files changed:
M CHANGES.txt

diff --git a/CHANGES.txt b/CHANGES.txt
index e45e81c..29d8f74 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -8,9 +8,6 @@ Changelog
   subrequests.
   [datakurre]
 
-1.6.8 (unreleased)
-------------------
-
 - Handle sub-requests which contain a doubled // in the path.
   [gweis]
 


Repository: plone.subrequest
Branch: refs/heads/master
Date: 2015-03-05T17:27:41+01:00
Author: Asko Soukka (datakurre) <asko.soukka@iki.fi>
Commit: https://github.com/plone/plone.subrequest/commit/1263a402e411789f296adbd17758af4a719f4e8a

Fix the next version in changelog

Files changed:
M CHANGES.txt

diff --git a/CHANGES.txt b/CHANGES.txt
index 29d8f74..9db44b7 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,7 +1,7 @@
 Changelog
 =========
 
-1.6.9 (unreleased)
+1.6.8 (unreleased)
 ------------------
 
 - Fix issue where new cookies from the main request.response are not passed to


Repository: plone.subrequest
Branch: refs/heads/master
Date: 2015-03-05T17:31:13+01:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: https://github.com/plone/plone.subrequest/commit/9fe6bd48f1efca3bbb7d1d5610a0d3b4b0a2e422

fix version confusion

Files changed:
M CHANGES.txt
M setup.py

diff --git a/CHANGES.txt b/CHANGES.txt
index 9db44b7..7f9ebcb 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,13 +1,15 @@
 Changelog
 =========
 
-1.6.8 (unreleased)
+1.6.9 (unreleased)
 ------------------
 
 - Fix issue where new cookies from the main request.response are not passed to
   subrequests.
   [datakurre]
 
+1.6.8 (2014-03-04)
+------------------
 - Handle sub-requests which contain a doubled // in the path.
   [gweis]
 
diff --git a/setup.py b/setup.py
index eee1369..c98e240 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
 import os.path
 from setuptools import setup, find_packages
 
-version = '1.6.8.dev0'
+version = '1.6.9.dev0'
 
 setup(
     name = 'plone.subrequest',


Repository: plone.subrequest
Branch: refs/heads/master
Date: 2015-03-05T17:32:12+01:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: https://github.com/plone/plone.subrequest/commit/bd485843b90f4a3a21c976691be2ea366f4f6559

housekeeping: txt-&gt;rst

Files changed:
A CHANGES.rst
A README.rst
M setup.py
D CHANGES.txt
D README.txt

diff --git a/CHANGES.rst b/CHANGES.rst
new file mode 100644
index 0000000..7f9ebcb
--- /dev/null
+++ b/CHANGES.rst
@@ -0,0 +1,114 @@
+Changelog
+=========
+
+1.6.9 (unreleased)
+------------------
+
+- Fix issue where new cookies from the main request.response are not passed to
+  subrequests.
+  [datakurre]
+
+1.6.8 (2014-03-04)
+------------------
+- Handle sub-requests which contain a doubled // in the path.
+  [gweis]
+
+1.6.7 (2012-10-22)
+------------------
+
+- Ensure correct handling of bare virtual hosting urls.
+  [elro]
+
+1.6.6 (2012-06-29)
+------------------
+
+- Log errors that occur handling a subrequest to help debug plone.app.theming
+  errors including content from a different url
+  [anthonygerrard]
+
+1.6.5 (2012-04-15)
+------------------
+
+- Ensure parent url is a string and not unicode.
+  [davisagli]
+
+1.6.4 - 2012-03-22
+------------------
+
+- Fix problems with double encoding some unicode charse by not copying too
+  many ``other`` variables.
+  [elro]
+
+1.6.3 - 2012-02-12
+------------------
+
+- Copy ``other`` request variables such as ``LANGUAGE`` to subrequest.
+  [elro]
+
+1.6.2 - 2011-07-04
+------------------
+
+- Handle spaces in default documents. http://dev.plone.org/plone/ticket/12278
+
+1.6.1 - 2011-07-04
+------------------
+
+- Move tests to package directory to making testing possible when installed
+  normally.
+
+1.6 - 2011-06-06
+----------------
+
+- Ensure url is a string and not unicode.
+  [elro]
+
+1.6b2 - 2011-05-20
+------------------
+
+- Set PARENT_REQUEST and add ISubRequest interface to subrequests.
+  [elro]
+
+1.6b1 - 2011-02-11
+------------------
+
+- Handle IStreamIterator.
+  [elro]
+
+- Simplify API so ``response.getBody()`` always works.
+  [elro]
+
+1.5 - 2010-11-26
+----------------
+
+- Merge cookies from subrequest response into parent response.
+  [awello]
+
+1.4 - 2010-11-10
+----------------
+
+- First processInput, then traverse (fixes #11254)
+  [awello]
+
+1.3 - 2010-08-24
+----------------
+
+- Fixed bug with virtual hosting and quoted paths.
+  [elro]
+
+1.2 - 2010-08-16
+----------------
+
+- Restore zope.component site after subrequest.
+  [elro]
+
+1.1 - 2010-08-14
+----------------
+
+- Virtual hosting, relative url and error response support.
+  [elro]
+
+1.0 - 2010-07-28
+----------------
+
+- Initial release.
+  [elro]
diff --git a/CHANGES.txt b/CHANGES.txt
deleted file mode 100644
index 7f9ebcb..0000000
--- a/CHANGES.txt
+++ /dev/null
@@ -1,114 +0,0 @@
-Changelog
-=========
-
-1.6.9 (unreleased)
-------------------
-
-- Fix issue where new cookies from the main request.response are not passed to
-  subrequests.
-  [datakurre]
-
-1.6.8 (2014-03-04)
-------------------
-- Handle sub-requests which contain a doubled // in the path.
-  [gweis]
-
-1.6.7 (2012-10-22)
-------------------
-
-- Ensure correct handling of bare virtual hosting urls.
-  [elro]
-
-1.6.6 (2012-06-29)
-------------------
-
-- Log errors that occur handling a subrequest to help debug plone.app.theming
-  errors including content from a different url
-  [anthonygerrard]
-
-1.6.5 (2012-04-15)
-------------------
-
-- Ensure parent url is a string and not unicode.
-  [davisagli]
-
-1.6.4 - 2012-03-22
-------------------
-
-- Fix problems with double encoding some unicode charse by not copying too
-  many ``other`` variables.
-  [elro]
-
-1.6.3 - 2012-02-12
-------------------
-
-- Copy ``other`` request variables such as ``LANGUAGE`` to subrequest.
-  [elro]
-
-1.6.2 - 2011-07-04
-------------------
-
-- Handle spaces in default documents. http://dev.plone.org/plone/ticket/12278
-
-1.6.1 - 2011-07-04
-------------------
-
-- Move tests to package directory to making testing possible when installed
-  normally.
-
-1.6 - 2011-06-06
-----------------
-
-- Ensure url is a string and not unicode.
-  [elro]
-
-1.6b2 - 2011-05-20
-------------------
-
-- Set PARENT_REQUEST and add ISubRequest interface to subrequests.
-  [elro]
-
-1.6b1 - 2011-02-11
-------------------
-
-- Handle IStreamIterator.
-  [elro]
-
-- Simplify API so ``response.getBody()`` always works.
-  [elro]
-
-1.5 - 2010-11-26
-----------------
-
-- Merge cookies from subrequest response into parent response.
-  [awello]
-
-1.4 - 2010-11-10
-----------------
-
-- First processInput, then traverse (fixes #11254)
-  [awello]
-
-1.3 - 2010-08-24
-----------------
-
-- Fixed bug with virtual hosting and quoted paths.
-  [elro]
-
-1.2 - 2010-08-16
-----------------
-
-- Restore zope.component site after subrequest.
-  [elro]
-
-1.1 - 2010-08-14
-----------------
-
-- Virtual hosting, relative url and error response support.
-  [elro]
-
-1.0 - 2010-07-28
-----------------
-
-- Initial release.
-  [elro]
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..6441138
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,27 @@
+Overview
+========
+
+plone.subrequest provides a mechanism for issuing subrequests under Zope2.
+
+Installation
+============
+
+Plone 4
+-------
+
+An entry point is provided so no special installation is required past adding
+`plone.subrequest` to your instance's `eggs`.
+
+Zope 2.12 without Plone
+-----------------------
+
+Load this package's ZCML in the usual manner.
+
+Zope 2.10
+---------
+
+You must install ZPublisherEventsBackport_ to use this package with Zope 2.10
+and load both package's ZCML. The tests require Zope 2.12 / Python 2.6 so will
+not run.
+
+.. _ZPublisherEventsBackport: http://pypi.python.org/pypi/ZPublisherEventsBackport
diff --git a/README.txt b/README.txt
deleted file mode 100644
index 6441138..0000000
--- a/README.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-Overview
-========
-
-plone.subrequest provides a mechanism for issuing subrequests under Zope2.
-
-Installation
-============
-
-Plone 4
--------
-
-An entry point is provided so no special installation is required past adding
-`plone.subrequest` to your instance's `eggs`.
-
-Zope 2.12 without Plone
------------------------
-
-Load this package's ZCML in the usual manner.
-
-Zope 2.10
----------
-
-You must install ZPublisherEventsBackport_ to use this package with Zope 2.10
-and load both package's ZCML. The tests require Zope 2.12 / Python 2.6 so will
-not run.
-
-.. _ZPublisherEventsBackport: http://pypi.python.org/pypi/ZPublisherEventsBackport
diff --git a/setup.py b/setup.py
index c98e240..a0ce162 100644
--- a/setup.py
+++ b/setup.py
@@ -7,9 +7,9 @@
     name = 'plone.subrequest',
     version = version,
     description = 'Subrequests for Zope2',
-    long_description=open("README.txt").read() + "\n\n" +
+    long_description=open("README.rst").read() + "\n\n" +
         open(os.path.join('plone', 'subrequest', 'usage.txt')).read() + "\n\n" +
-        open("CHANGES.txt").read(),
+        open("CHANGES.rst").read(),
     classifiers=[
         "Environment :: Web Environment",
         "Framework :: Plone",


Repository: plone.subrequest
Branch: refs/heads/master
Date: 2015-03-05T17:55:59+01:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: https://github.com/plone/plone.subrequest/commit/034cd27880cbd705bd54a3534e14d9d6ca26434b

housekeeping

Files changed:
M .gitignore

diff --git a/.gitignore b/.gitignore
index e089dba..1545667 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,23 @@
+*.EGG
+*.EGG-INFO
+*.egg
+*.egg-info
 *.py?
-plone.subrequest.egg-info/
+*.tmp*
+.*.cfg
+.idea
+/*.egg-info/
+/bin/
+/build/
+/build/
+/develop-eggs/
+/dist/
+/downloads/
+/eggs/
+/extras/
+/html/
+/include/
+/lib/
+/local/
+/parts/
+/var/


Repository: plone.subrequest
Branch: refs/heads/master
Date: 2015-03-05T18:14:49+01:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: https://github.com/plone/plone.subrequest/commit/8013724732e784dfa59431b1019e3698e7ce496c

pep8 et al

Files changed:
M buildout.cfg
M plone/__init__.py
M plone/subrequest/__init__.py
M plone/subrequest/subresponse.py
M plone/subrequest/testing.py
M plone/subrequest/tests.py
M setup.py

diff --git a/buildout.cfg b/buildout.cfg
index 6f5e928..a9df8db 100644
--- a/buildout.cfg
+++ b/buildout.cfg
@@ -1,10 +1,10 @@
 [buildout]
-develop = .
 parts = checkdocs test
 versions = versions
-extends = http://dist.plone.org/release/4.0-latest/versions.cfg
-extensions = buildout.dumppickedversions
+extends = 
+    http://dist.plone.org/release/4.3-latest/versions.cfg
 
+develop = .
 [checkdocs]
 recipe = zc.recipe.egg
 eggs = collective.checkdocs
@@ -13,8 +13,10 @@ interpreter = py
 [test]
 recipe = zc.recipe.testrunner
 eggs =
-    plone.subrequest [test]
+    plone.subrequest[test]
 defaults = ['--auto-color', '--auto-progress']
 
 [versions]
-unittest2 = 0.5.1
+zc.buildout =
+setuptools =
+plone.subrequest = >1.6.8
diff --git a/plone/__init__.py b/plone/__init__.py
index f48ad10..68c04af 100644
--- a/plone/__init__.py
+++ b/plone/__init__.py
@@ -1,6 +1,2 @@
-# 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__)
+# -*- coding: utf-8 -*-
+__import__('pkg_resources').declare_namespace(__name__)
diff --git a/plone/subrequest/__init__.py b/plone/subrequest/__init__.py
index 4fe947d..002ad91 100644
--- a/plone/subrequest/__init__.py
+++ b/plone/subrequest/__init__.py
@@ -1,5 +1,4 @@
-import re
-
+# -*- coding: utf-8 -*-
 from AccessControl import getSecurityManager
 from AccessControl.SecurityManagement import setSecurityManager
 from Acquisition import aq_base
@@ -9,18 +8,20 @@
 from ZPublisher.mapply import mapply
 from cStringIO import StringIO
 from logging import getLogger
+from plone.subrequest.interfaces import ISubRequest
+from plone.subrequest.subresponse import SubResponse
 from posixpath import normpath
+from urllib import unquote  # Python2.4 does not have urlparse.unquote
 from urlparse import urlsplit, urljoin
-from urllib import unquote # Python2.4 does not have urlparse.unquote
-from zope.interface import alsoProvides
 from zope.globalrequest import getRequest, setRequest
+from zope.interface import alsoProvides
+import re
+
 try:
     from zope.site.hooks import getSite, setSite
 except ImportError:
     from zope.app.component.hooks import getSite, setSite
 
-from plone.subrequest.subresponse import SubResponse
-from plone.subrequest.interfaces import ISubRequest
 
 __all__ = ['subrequest', 'SubResponse']
 
@@ -31,7 +32,7 @@
     'HTTP_IF_MATCH',
     'HTTP_IF_NONE_MATCH',
     'HTTP_IF_RANGE',
-    'HTTP_RANGE', # Not strictly a conditional header, but scrub it anyway
+    'HTTP_RANGE',  # Not strictly a conditional header, but scrub it anyway
     ]
 
 OTHER_IGNORE = set([
@@ -55,13 +56,15 @@
 
 logger = getLogger("plone.subrequest")
 
+
 def subrequest(url, root=None, stdout=None):
     assert url is not None, "You must pass a url"
     if isinstance(url, unicode):
         url = url.encode('utf-8')
     _, _, path, query, _ = urlsplit(url)
     parent_request = getRequest()
-    assert parent_request is not None, "Unable to get request, perhaps zope.globalrequest is not configured."
+    assert parent_request is not None, \
+        "Unable to get request, perhaps zope.globalrequest is not configured."
     parent_site = getSite()
     security_manager = getSecurityManager()
     parent_app = parent_request.PARENTS[-1]
@@ -71,7 +74,9 @@ def subrequest(url, root=None, stdout=None):
         if vurl_parts is not None:
             # Use the virtual host root
             path_past_root = unquote(vurl_parts[-1])
-            root_path = normpath(parent_request['PATH_INFO']).rstrip('/')[:-len(path_past_root) or None]
+            root_path = normpath(
+                parent_request['PATH_INFO']
+            ).rstrip('/')[:-len(path_past_root) or None]
             if root is None:
                 path = root_path + path
             else:
@@ -92,7 +97,9 @@ def subrequest(url, root=None, stdout=None):
         path = normpath(path)
     request = parent_request.clone()
     for name, parent_value in parent_request.other.items():
-        if name in OTHER_IGNORE or OTHER_IGNORE_RE.match(name) or name.startswith('_'):
+        if name in OTHER_IGNORE \
+           or OTHER_IGNORE_RE.match(name) \
+           or name.startswith('_'):
             continue
         request.other[name] = parent_value
     for key, value in parent_request.response.cookies.items():
@@ -106,9 +113,9 @@ def subrequest(url, root=None, stdout=None):
         request['PARENTS'] = [app]
         response = request.response
         response.__class__ = SubResponse
-        response.stderr = None # only used on retry it seems
+        response.stderr = None  # only used on retry it seems
         if stdout is None:
-            stdout = StringIO() # It might be possible to optimize this
+            stdout = StringIO()  # It might be possible to optimize this
         response.stdout = stdout
         environ = request.environ
         environ['PATH_INFO'] = path
@@ -140,4 +147,3 @@ def subrequest(url, root=None, stdout=None):
         setRequest(parent_request)
         setSite(parent_site)
         setSecurityManager(security_manager)
-
diff --git a/plone/subrequest/subresponse.py b/plone/subrequest/subresponse.py
index 2e89a4f..d8c84a9 100644
--- a/plone/subrequest/subresponse.py
+++ b/plone/subrequest/subresponse.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 from ZPublisher.HTTPResponse import HTTPResponse
 from ZPublisher.Iterators import IStreamIterator
 try:
@@ -6,6 +7,7 @@
     class BlobStreamIterator:
         pass
 
+
 class SubResponse(HTTPResponse):
 
     def setBody(self, body, title='', is_error=0, **kw):
@@ -14,8 +16,10 @@ def setBody(self, body, title='', is_error=0, **kw):
             return HTTPResponse.setBody(self, body, title, is_error, **kw)
         assert not self._wrote
         if isinstance(body, BlobStreamIterator):
-            body = body.blob # A BlobFile
-        if hasattr(body, 'seek') and hasattr(body, 'read') and hasattr(body, 'close'):
+            body = body.blob  # A BlobFile
+        if hasattr(body, 'seek') \
+           and hasattr(body, 'read') and \
+           hasattr(body, 'close'):
             self.stdout = body
             self._wrote = 1
             return
diff --git a/plone/subrequest/testing.py b/plone/subrequest/testing.py
index 1d2ee64..6a3ba0d 100644
--- a/plone/subrequest/testing.py
+++ b/plone/subrequest/testing.py
@@ -1,9 +1,12 @@
-import OFS.Folder
+# -*- coding: utf-8 -*-
 from Products.Five.browser import BrowserView
 from five.localsitemanager import make_site
 from plone.subrequest import subrequest
-from plone.testing import Layer, z2, zodb, zca
-from zope.globalrequest import getRequest, setRequest
+from plone.testing import Layer
+from plone.testing import z2
+from plone.testing import zca
+from plone.testing import zodb
+from zope.globalrequest import setRequest
 
 
 class CookieView(BrowserView):
@@ -20,7 +23,6 @@ def __init__(self, context, request):
         self.keys = self.request.keys()
 
     def __call__(self):
-        response = self.request.response
         return str(self.keys)
 
 
@@ -91,17 +93,23 @@ def __call__(self):
 def singleton(cls):
     return cls()
 
+
 @singleton
 class PLONE_SUBREQEST_FIXTURE(Layer):
     defaultBases = (z2.STARTUP,)
 
     def setUp(self):
         # Stack a new DemoStorage on top of the one from z2.STARTUP.
-        self['zodbDB'] = zodb.stackDemoStorage(self.get('zodbDB'), name='PloneSubRequestFixture')
+        self['zodbDB'] = zodb.stackDemoStorage(
+            self.get('zodbDB'),
+            name='PloneSubRequestFixture'
+        )
 
         # Create a new global registry
         zca.pushGlobalRegistry()
-        self['configurationContext'] = context = zca.stackConfigurationContext(self.get('configurationContext'))
+        self['configurationContext'] = context = zca.stackConfigurationContext(
+            self.get('configurationContext')
+        )
 
         # Load out ZCML
         from zope.configuration import xmlconfig
@@ -111,7 +119,8 @@ def setUp(self):
         with z2.zopeApp() as app:
             # Enable virtual hosting
             z2.installProduct(app, 'Products.SiteAccess')
-            from Products.SiteAccess.VirtualHostMonster import VirtualHostMonster
+            from Products.SiteAccess.VirtualHostMonster import \
+                VirtualHostMonster
             vhm = VirtualHostMonster()
             app._setObject(vhm.getId(), vhm, suppress_events=True)
             # With suppress_events=False, this is called twice...
@@ -149,6 +158,12 @@ def testTearDown(self):
         setRequest(None)
 
 
-INTEGRATION_TESTING = PloneSubrequestLifecycle(bases=(PLONE_SUBREQEST_FIXTURE,), name="PloneSubrequest:Integration")
-FUNCTIONAL_TESTING = z2.FunctionalTesting(bases=(PLONE_SUBREQEST_FIXTURE,), name="PloneSubrequest:Functional")
+INTEGRATION_TESTING = PloneSubrequestLifecycle(
+    bases=(PLONE_SUBREQEST_FIXTURE,),
+    name="PloneSubrequest:Integration"
+)
+FUNCTIONAL_TESTING = z2.FunctionalTesting(
+    bases=(PLONE_SUBREQEST_FIXTURE,),
+    name="PloneSubrequest:Functional"
+)
 
diff --git a/plone/subrequest/tests.py b/plone/subrequest/tests.py
index c5f9d8b..5ee13aa 100644
--- a/plone/subrequest/tests.py
+++ b/plone/subrequest/tests.py
@@ -1,21 +1,29 @@
+# -*- coding: utf-8 -*-
+from plone.subrequest import subrequest
+from plone.subrequest.testing import FUNCTIONAL_TESTING
+from plone.subrequest.testing import INTEGRATION_TESTING
+from plone.testing import z2
+from zope.globalrequest import getRequest
+from zope.site.hooks import getSite
 import manuel.doctest
 import manuel.testcase
 import manuel.testing
 import unittest2 as unittest
 
-from plone.subrequest import subrequest
-from plone.subrequest.testing import INTEGRATION_TESTING, FUNCTIONAL_TESTING
-from plone.testing import z2
-from zope.globalrequest import getRequest
-from zope.site.hooks import getSite
 
 def traverse(url):
     request = getRequest()
-    traversed = request.traverse(url)
+    request.traverse(url)
     request.processInputs()
     request['PATH_INFO'] = url
     return request
 
+VH_TPL = (
+    "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot"
+    "/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s"
+)
+NOHOST_VH_TPL = 'http://nohost' + VH_TPL
+
 
 class FunctionalTests(unittest.TestCase):
     layer = FUNCTIONAL_TESTING
@@ -30,7 +38,7 @@ def test_absolute(self):
     def test_virtual_hosting(self):
         parts = ('folder1', 'folder1A/@@url')
         expect = 'folder1A'
-        url = "http://nohost/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % parts
+        url = NOHOST_VH_TPL % parts
         expect_url = 'http://example.org/fizz/buzz/fizzbuzz/%s' % expect
         self.browser.open(url)
         self.assertEqual(self.browser.contents, expect_url)
@@ -38,7 +46,7 @@ def test_virtual_hosting(self):
     def test_virtual_hosting_relative(self):
         parts = ('folder1', 'folder1A?url=folder1Ai/@@url')
         expect = 'folder1A/folder1Ai'
-        url = "http://nohost/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % parts
+        url = NOHOST_VH_TPL % parts
         expect_url = 'http://example.org/fizz/buzz/fizzbuzz/%s' % expect
         self.browser.open(url)
         self.assertEqual(self.browser.contents, expect_url)
@@ -46,7 +54,7 @@ def test_virtual_hosting_relative(self):
     def test_virtual_hosting_absolute(self):
         parts = ('folder1', 'folder1A?url=/folder1B/@@url')
         expect = 'folder1B'
-        url = "http://nohost/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % parts
+        url = NOHOST_VH_TPL % parts
         expect_url = 'http://example.org/fizz/buzz/fizzbuzz/%s' % expect
         self.browser.open(url)
         self.assertEqual(self.browser.contents, expect_url)
@@ -57,35 +65,56 @@ class IntegrationTests(unittest.TestCase):
 
     def test_absolute(self):
         response = subrequest('/folder1/@@url')
-        self.assertEqual(response.body, 'http://nohost/folder1')
+        self.assertEqual(
+            response.body,
+            'http://nohost/folder1'
+        )
 
     def test_absolute_query(self):
         response = subrequest('/folder1/folder1A?url=/folder2/folder2A/@@url')
-        self.assertEqual(response.body, 'http://nohost/folder2/folder2A')
+        self.assertEqual(
+            response.body,
+            'http://nohost/folder2/folder2A'
+        )
 
     def test_relative(self):
         response = subrequest('/folder1?url=folder1B/@@url')
         # /folder1 resolves to /folder1/@@test
-        self.assertEqual(response.body, 'http://nohost/folder1/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://nohost/folder1/folder1B'
+        )
 
     def test_root(self):
         response = subrequest('/')
-        self.assertEqual(response.body, 'Root: http://nohost')
+        self.assertEqual(
+            response.body,
+            'Root: http://nohost'
+        )
 
     def test_virtual_hosting(self):
-        url = "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % ('folder1', 'folder1A/@@url')
+        url = VH_TPL % ('folder1', 'folder1A/@@url')
         response = subrequest(url)
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1A')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1A'
+        )
 
     def test_virtual_hosting_unicode(self):
-        url = u"/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % ('folder1', 'folder1A/@@url')
+        url = VH_TPL % ('folder1', 'folder1A/@@url')
         response = subrequest(url)
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1A')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1A'
+        )
 
     def test_virtual_hosting_relative(self):
-        url = "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % ('folder1', 'folder1A?url=folder1B/@@url')
+        url = VH_TPL % ('folder1', 'folder1A?url=folder1B/@@url')
         response = subrequest(url)
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1B'
+        )
 
     def test_not_found(self):
         response = subrequest('/notfound')
@@ -93,53 +122,85 @@ def test_not_found(self):
 
     def test_virtual_host_root(self):
         parts = ('folder1', 'folder1A/@@url')
-        url = "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % parts
+        url = VH_TPL % parts
         traverse(url)
         response = subrequest('/folder1B/@@url')
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1B'
+        )
 
     def test_virtual_host_root_with_root(self):
         parts = ('folder1', 'folder1A/@@url')
-        url = "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % parts
+        url = VH_TPL % parts
         traverse(url)
         app = self.layer['app']
         response = subrequest('/folder1Ai/@@url', root=app.folder1.folder1A)
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1A/folder1Ai')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1A/folder1Ai'
+        )
 
     def test_virtual_host_space(self):
         parts = ('folder2', 'folder2A/folder2Ai space/@@url')
-        url = "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/%s" % parts
+        url = (
+            "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/%s" %
+            parts
+        )
         traverse(url)
         app = self.layer['app']
         response = subrequest('/folder2A/@@url', root=app.folder2)
-        self.assertEqual(response.body, 'http://example.org/folder2A')
+        self.assertEqual(
+            response.body,
+            'http://example.org/folder2A'
+        )
 
     def test_virtual_host_root_at_root(self):
-        url = "/VirtualHostBase/http/example.org:80/folder1/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz"
+        url = (
+            "/VirtualHostBase/http/example.org:80/folder1/VirtualHostRoot/"
+            "_vh_fizz/_vh_buzz/_vh_fizzbuzz"
+        )
         traverse(url)
         response = subrequest('/folder1B/@@url')
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1B'
+        )
 
     def test_virtual_host_root_at_root_trailing(self):
-        url = "/VirtualHostBase/http/example.org:80/folder1/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/"
+        url = (
+            "/VirtualHostBase/http/example.org:80/folder1/VirtualHostRoot/"
+            "_vh_fizz/_vh_buzz/_vh_fizzbuzz/"
+        )
         traverse(url)
         response = subrequest('/folder1B/@@url')
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1B'
+        )
 
     def test_virtual_host_with_root_double_slash(self):
-        url = "/VirtualHostBase/http/example.org:80/VirtualHostRoot/_vh_fizz/folder1/folder2//folder2A"
+        url = (
+            "/VirtualHostBase/http/example.org:80/VirtualHostRoot/"
+            "_vh_fizz/folder1/folder2//folder2A"
+        )
         traverse(url)
         root = self.layer['app'].folder1
         response = subrequest('/folder1B/@@url', root=root)
-        self.assertEqual(response.body, 'http://example.org/fizz/folder1/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/folder1/folder1B'
+        )
 
     def test_subrequest_root(self):
         app = self.layer['app']
         response = subrequest('/folder1Ai/@@url', root=app.folder1.folder1A)
-        self.assertEqual(response.body, 'http://nohost/folder1/folder1A/folder1Ai')
+        self.assertEqual(
+            response.body,
+            'http://nohost/folder1/folder1A/folder1Ai'
+        )
 
     def test_site(self):
-        app = self.layer['app']
         traverse('/folder1')
         site_url1 = getSite().absolute_url()
         response = subrequest('/folder2/@@url')
@@ -204,7 +265,11 @@ def test_suite():
     suite = unittest.defaultTestLoader.loadTestsFromName(__name__)
     m = manuel.doctest.Manuel()
     m += manuel.testcase.MarkerManuel()
-    doctests = manuel.testing.TestSuite(m, 'usage.txt', globs=dict(subrequest=subrequest, traverse=traverse))
+    doctests = manuel.testing.TestSuite(
+        m,
+        'usage.txt',
+        globs=dict(subrequest=subrequest, traverse=traverse)
+    )
     # Set the layer on the manuel doctests for now
     for test in doctests:
         test.layer = INTEGRATION_TESTING
diff --git a/setup.py b/setup.py
index a0ce162..1a06ff4 100644
--- a/setup.py
+++ b/setup.py
@@ -4,9 +4,9 @@
 version = '1.6.9.dev0'
 
 setup(
-    name = 'plone.subrequest',
-    version = version,
-    description = 'Subrequests for Zope2',
+    name='plone.subrequest',
+    version=version,
+    description='Subrequests for Zope2',
     long_description=open("README.rst").read() + "\n\n" +
         open(os.path.join('plone', 'subrequest', 'usage.txt')).read() + "\n\n" +
         open("CHANGES.rst").read(),


Repository: plone.subrequest
Branch: refs/heads/master
Date: 2015-03-05T19:03:55+01:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: https://github.com/plone/plone.subrequest/commit/f92904947f358fd12f095b0eb0ca5d27b187afc8

Workaround for broken test because of missing dependency declaration in upstream package, see https://github.com/plone/plone.app.blob/issues/19 for details.

Files changed:
M CHANGES.rst
M setup.py

diff --git a/CHANGES.rst b/CHANGES.rst
index 7f9ebcb..69fe80a 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -4,6 +4,14 @@ Changelog
 1.6.9 (unreleased)
 ------------------
 
+- Workaround for broken test because of missing dependency declaration in 
+  upstream package, see https://github.com/plone/plone.app.blob/issues/19
+  for details.
+  [jensens]
+
+- Housekeeping and code cleanup (pep8, et al).
+  [jensens]
+
 - Fix issue where new cookies from the main request.response are not passed to
   subrequests.
   [datakurre]
diff --git a/setup.py b/setup.py
index 1a06ff4..ee51e16 100644
--- a/setup.py
+++ b/setup.py
@@ -41,6 +41,9 @@
             'manuel',
             'plone.testing [z2]',
             'plone.app.blob',
+
+            # see https://github.com/plone/plone.app.blob/issues/19
+            'Products.MimetypesRegistry',
             ],
         },
     entry_points="""


Repository: plone.subrequest
Branch: refs/heads/master
Date: 2015-03-05T19:21:06+01:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: https://github.com/plone/plone.subrequest/commit/0f52a877f0be19fa585d65496db35d4088bbc76c

Merge pull request #2 from plone/mosaicsprint

Fix issue where new cookies from the main request.response are not passed to subrequests

Files changed:
A CHANGES.rst
A README.rst
M .gitignore
M buildout.cfg
M plone/__init__.py
M plone/subrequest/__init__.py
M plone/subrequest/subresponse.py
M plone/subrequest/testing.py
M plone/subrequest/tests.py
M setup.py
D CHANGES.txt
D README.txt

diff --git a/.gitignore b/.gitignore
index e089dba..1545667 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,23 @@
+*.EGG
+*.EGG-INFO
+*.egg
+*.egg-info
 *.py?
-plone.subrequest.egg-info/
+*.tmp*
+.*.cfg
+.idea
+/*.egg-info/
+/bin/
+/build/
+/build/
+/develop-eggs/
+/dist/
+/downloads/
+/eggs/
+/extras/
+/html/
+/include/
+/lib/
+/local/
+/parts/
+/var/
diff --git a/CHANGES.rst b/CHANGES.rst
new file mode 100644
index 0000000..69fe80a
--- /dev/null
+++ b/CHANGES.rst
@@ -0,0 +1,122 @@
+Changelog
+=========
+
+1.6.9 (unreleased)
+------------------
+
+- Workaround for broken test because of missing dependency declaration in 
+  upstream package, see https://github.com/plone/plone.app.blob/issues/19
+  for details.
+  [jensens]
+
+- Housekeeping and code cleanup (pep8, et al).
+  [jensens]
+
+- Fix issue where new cookies from the main request.response are not passed to
+  subrequests.
+  [datakurre]
+
+1.6.8 (2014-03-04)
+------------------
+- Handle sub-requests which contain a doubled // in the path.
+  [gweis]
+
+1.6.7 (2012-10-22)
+------------------
+
+- Ensure correct handling of bare virtual hosting urls.
+  [elro]
+
+1.6.6 (2012-06-29)
+------------------
+
+- Log errors that occur handling a subrequest to help debug plone.app.theming
+  errors including content from a different url
+  [anthonygerrard]
+
+1.6.5 (2012-04-15)
+------------------
+
+- Ensure parent url is a string and not unicode.
+  [davisagli]
+
+1.6.4 - 2012-03-22
+------------------
+
+- Fix problems with double encoding some unicode charse by not copying too
+  many ``other`` variables.
+  [elro]
+
+1.6.3 - 2012-02-12
+------------------
+
+- Copy ``other`` request variables such as ``LANGUAGE`` to subrequest.
+  [elro]
+
+1.6.2 - 2011-07-04
+------------------
+
+- Handle spaces in default documents. http://dev.plone.org/plone/ticket/12278
+
+1.6.1 - 2011-07-04
+------------------
+
+- Move tests to package directory to making testing possible when installed
+  normally.
+
+1.6 - 2011-06-06
+----------------
+
+- Ensure url is a string and not unicode.
+  [elro]
+
+1.6b2 - 2011-05-20
+------------------
+
+- Set PARENT_REQUEST and add ISubRequest interface to subrequests.
+  [elro]
+
+1.6b1 - 2011-02-11
+------------------
+
+- Handle IStreamIterator.
+  [elro]
+
+- Simplify API so ``response.getBody()`` always works.
+  [elro]
+
+1.5 - 2010-11-26
+----------------
+
+- Merge cookies from subrequest response into parent response.
+  [awello]
+
+1.4 - 2010-11-10
+----------------
+
+- First processInput, then traverse (fixes #11254)
+  [awello]
+
+1.3 - 2010-08-24
+----------------
+
+- Fixed bug with virtual hosting and quoted paths.
+  [elro]
+
+1.2 - 2010-08-16
+----------------
+
+- Restore zope.component site after subrequest.
+  [elro]
+
+1.1 - 2010-08-14
+----------------
+
+- Virtual hosting, relative url and error response support.
+  [elro]
+
+1.0 - 2010-07-28
+----------------
+
+- Initial release.
+  [elro]
diff --git a/CHANGES.txt b/CHANGES.txt
deleted file mode 100644
index ee2204c..0000000
--- a/CHANGES.txt
+++ /dev/null
@@ -1,108 +0,0 @@
-Changelog
-=========
-
-1.6.8 (unreleased)
-------------------
-
-- Handle sub-requests which contain a doubled // in the path.
-  [gweis]
-
-1.6.7 (2012-10-22)
-------------------
-
-- Ensure correct handling of bare virtual hosting urls.
-  [elro]
-
-1.6.6 (2012-06-29)
-------------------
-
-- Log errors that occur handling a subrequest to help debug plone.app.theming
-  errors including content from a different url
-  [anthonygerrard]
-
-1.6.5 (2012-04-15)
-------------------
-
-- Ensure parent url is a string and not unicode.
-  [davisagli]
-
-1.6.4 - 2012-03-22
-------------------
-
-- Fix problems with double encoding some unicode charse by not copying too
-  many ``other`` variables.
-  [elro]
-
-1.6.3 - 2012-02-12
-------------------
-
-- Copy ``other`` request variables such as ``LANGUAGE`` to subrequest.
-  [elro]
-
-1.6.2 - 2011-07-04
-------------------
-
-- Handle spaces in default documents. http://dev.plone.org/plone/ticket/12278
-
-1.6.1 - 2011-07-04
-------------------
-
-- Move tests to package directory to making testing possible when installed
-  normally.
-
-1.6 - 2011-06-06
-----------------
-
-- Ensure url is a string and not unicode.
-  [elro]
-
-1.6b2 - 2011-05-20
-------------------
-
-- Set PARENT_REQUEST and add ISubRequest interface to subrequests.
-  [elro]
-
-1.6b1 - 2011-02-11
-------------------
-
-- Handle IStreamIterator.
-  [elro]
-
-- Simplify API so ``response.getBody()`` always works.
-  [elro]
-
-1.5 - 2010-11-26
-----------------
-
-- Merge cookies from subrequest response into parent response.
-  [awello]
-
-1.4 - 2010-11-10
-----------------
-
-- First processInput, then traverse (fixes #11254)
-  [awello]
-
-1.3 - 2010-08-24
-----------------
-
-- Fixed bug with virtual hosting and quoted paths.
-  [elro]
-
-1.2 - 2010-08-16
-----------------
-
-- Restore zope.component site after subrequest.
-  [elro]
-
-1.1 - 2010-08-14
-----------------
-
-- Virtual hosting, relative url and error response support.
-  [elro]
-
-1.0 - 2010-07-28
-----------------
-
-- Initial release.
-  [elro]
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..6441138
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,27 @@
+Overview
+========
+
+plone.subrequest provides a mechanism for issuing subrequests under Zope2.
+
+Installation
+============
+
+Plone 4
+-------
+
+An entry point is provided so no special installation is required past adding
+`plone.subrequest` to your instance's `eggs`.
+
+Zope 2.12 without Plone
+-----------------------
+
+Load this package's ZCML in the usual manner.
+
+Zope 2.10
+---------
+
+You must install ZPublisherEventsBackport_ to use this package with Zope 2.10
+and load both package's ZCML. The tests require Zope 2.12 / Python 2.6 so will
+not run.
+
+.. _ZPublisherEventsBackport: http://pypi.python.org/pypi/ZPublisherEventsBackport
diff --git a/README.txt b/README.txt
deleted file mode 100644
index 6441138..0000000
--- a/README.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-Overview
-========
-
-plone.subrequest provides a mechanism for issuing subrequests under Zope2.
-
-Installation
-============
-
-Plone 4
--------
-
-An entry point is provided so no special installation is required past adding
-`plone.subrequest` to your instance's `eggs`.
-
-Zope 2.12 without Plone
------------------------
-
-Load this package's ZCML in the usual manner.
-
-Zope 2.10
----------
-
-You must install ZPublisherEventsBackport_ to use this package with Zope 2.10
-and load both package's ZCML. The tests require Zope 2.12 / Python 2.6 so will
-not run.
-
-.. _ZPublisherEventsBackport: http://pypi.python.org/pypi/ZPublisherEventsBackport
diff --git a/buildout.cfg b/buildout.cfg
index 6f5e928..a9df8db 100644
--- a/buildout.cfg
+++ b/buildout.cfg
@@ -1,10 +1,10 @@
 [buildout]
-develop = .
 parts = checkdocs test
 versions = versions
-extends = http://dist.plone.org/release/4.0-latest/versions.cfg
-extensions = buildout.dumppickedversions
+extends = 
+    http://dist.plone.org/release/4.3-latest/versions.cfg
 
+develop = .
 [checkdocs]
 recipe = zc.recipe.egg
 eggs = collective.checkdocs
@@ -13,8 +13,10 @@ interpreter = py
 [test]
 recipe = zc.recipe.testrunner
 eggs =
-    plone.subrequest [test]
+    plone.subrequest[test]
 defaults = ['--auto-color', '--auto-progress']
 
 [versions]
-unittest2 = 0.5.1
+zc.buildout =
+setuptools =
+plone.subrequest = >1.6.8
diff --git a/plone/__init__.py b/plone/__init__.py
index f48ad10..68c04af 100644
--- a/plone/__init__.py
+++ b/plone/__init__.py
@@ -1,6 +1,2 @@
-# 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__)
+# -*- coding: utf-8 -*-
+__import__('pkg_resources').declare_namespace(__name__)
diff --git a/plone/subrequest/__init__.py b/plone/subrequest/__init__.py
index c9d4453..002ad91 100644
--- a/plone/subrequest/__init__.py
+++ b/plone/subrequest/__init__.py
@@ -1,5 +1,4 @@
-import re
-
+# -*- coding: utf-8 -*-
 from AccessControl import getSecurityManager
 from AccessControl.SecurityManagement import setSecurityManager
 from Acquisition import aq_base
@@ -9,18 +8,20 @@
 from ZPublisher.mapply import mapply
 from cStringIO import StringIO
 from logging import getLogger
+from plone.subrequest.interfaces import ISubRequest
+from plone.subrequest.subresponse import SubResponse
 from posixpath import normpath
+from urllib import unquote  # Python2.4 does not have urlparse.unquote
 from urlparse import urlsplit, urljoin
-from urllib import unquote # Python2.4 does not have urlparse.unquote
-from zope.interface import alsoProvides
 from zope.globalrequest import getRequest, setRequest
+from zope.interface import alsoProvides
+import re
+
 try:
     from zope.site.hooks import getSite, setSite
 except ImportError:
     from zope.app.component.hooks import getSite, setSite
 
-from plone.subrequest.subresponse import SubResponse
-from plone.subrequest.interfaces import ISubRequest
 
 __all__ = ['subrequest', 'SubResponse']
 
@@ -31,7 +32,7 @@
     'HTTP_IF_MATCH',
     'HTTP_IF_NONE_MATCH',
     'HTTP_IF_RANGE',
-    'HTTP_RANGE', # Not strictly a conditional header, but scrub it anyway
+    'HTTP_RANGE',  # Not strictly a conditional header, but scrub it anyway
     ]
 
 OTHER_IGNORE = set([
@@ -55,13 +56,15 @@
 
 logger = getLogger("plone.subrequest")
 
+
 def subrequest(url, root=None, stdout=None):
     assert url is not None, "You must pass a url"
     if isinstance(url, unicode):
         url = url.encode('utf-8')
     _, _, path, query, _ = urlsplit(url)
     parent_request = getRequest()
-    assert parent_request is not None, "Unable to get request, perhaps zope.globalrequest is not configured."
+    assert parent_request is not None, \
+        "Unable to get request, perhaps zope.globalrequest is not configured."
     parent_site = getSite()
     security_manager = getSecurityManager()
     parent_app = parent_request.PARENTS[-1]
@@ -71,7 +74,9 @@ def subrequest(url, root=None, stdout=None):
         if vurl_parts is not None:
             # Use the virtual host root
             path_past_root = unquote(vurl_parts[-1])
-            root_path = normpath(parent_request['PATH_INFO']).rstrip('/')[:-len(path_past_root) or None]
+            root_path = normpath(
+                parent_request['PATH_INFO']
+            ).rstrip('/')[:-len(path_past_root) or None]
             if root is None:
                 path = root_path + path
             else:
@@ -92,9 +97,13 @@ def subrequest(url, root=None, stdout=None):
         path = normpath(path)
     request = parent_request.clone()
     for name, parent_value in parent_request.other.items():
-        if name in OTHER_IGNORE or OTHER_IGNORE_RE.match(name) or name.startswith('_'):
+        if name in OTHER_IGNORE \
+           or OTHER_IGNORE_RE.match(name) \
+           or name.startswith('_'):
             continue
         request.other[name] = parent_value
+    for key, value in parent_request.response.cookies.items():
+        request.cookies[key] = value['value']
     request['PARENT_REQUEST'] = parent_request
     alsoProvides(request, ISubRequest)
     try:
@@ -104,9 +113,9 @@ def subrequest(url, root=None, stdout=None):
         request['PARENTS'] = [app]
         response = request.response
         response.__class__ = SubResponse
-        response.stderr = None # only used on retry it seems
+        response.stderr = None  # only used on retry it seems
         if stdout is None:
-            stdout = StringIO() # It might be possible to optimize this
+            stdout = StringIO()  # It might be possible to optimize this
         response.stdout = stdout
         environ = request.environ
         environ['PATH_INFO'] = path
@@ -138,4 +147,3 @@ def subrequest(url, root=None, stdout=None):
         setRequest(parent_request)
         setSite(parent_site)
         setSecurityManager(security_manager)
-
diff --git a/plone/subrequest/subresponse.py b/plone/subrequest/subresponse.py
index 2e89a4f..d8c84a9 100644
--- a/plone/subrequest/subresponse.py
+++ b/plone/subrequest/subresponse.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 from ZPublisher.HTTPResponse import HTTPResponse
 from ZPublisher.Iterators import IStreamIterator
 try:
@@ -6,6 +7,7 @@
     class BlobStreamIterator:
         pass
 
+
 class SubResponse(HTTPResponse):
 
     def setBody(self, body, title='', is_error=0, **kw):
@@ -14,8 +16,10 @@ def setBody(self, body, title='', is_error=0, **kw):
             return HTTPResponse.setBody(self, body, title, is_error, **kw)
         assert not self._wrote
         if isinstance(body, BlobStreamIterator):
-            body = body.blob # A BlobFile
-        if hasattr(body, 'seek') and hasattr(body, 'read') and hasattr(body, 'close'):
+            body = body.blob  # A BlobFile
+        if hasattr(body, 'seek') \
+           and hasattr(body, 'read') and \
+           hasattr(body, 'close'):
             self.stdout = body
             self._wrote = 1
             return
diff --git a/plone/subrequest/testing.py b/plone/subrequest/testing.py
index 1d2ee64..6a3ba0d 100644
--- a/plone/subrequest/testing.py
+++ b/plone/subrequest/testing.py
@@ -1,9 +1,12 @@
-import OFS.Folder
+# -*- coding: utf-8 -*-
 from Products.Five.browser import BrowserView
 from five.localsitemanager import make_site
 from plone.subrequest import subrequest
-from plone.testing import Layer, z2, zodb, zca
-from zope.globalrequest import getRequest, setRequest
+from plone.testing import Layer
+from plone.testing import z2
+from plone.testing import zca
+from plone.testing import zodb
+from zope.globalrequest import setRequest
 
 
 class CookieView(BrowserView):
@@ -20,7 +23,6 @@ def __init__(self, context, request):
         self.keys = self.request.keys()
 
     def __call__(self):
-        response = self.request.response
         return str(self.keys)
 
 
@@ -91,17 +93,23 @@ def __call__(self):
 def singleton(cls):
     return cls()
 
+
 @singleton
 class PLONE_SUBREQEST_FIXTURE(Layer):
     defaultBases = (z2.STARTUP,)
 
     def setUp(self):
         # Stack a new DemoStorage on top of the one from z2.STARTUP.
-        self['zodbDB'] = zodb.stackDemoStorage(self.get('zodbDB'), name='PloneSubRequestFixture')
+        self['zodbDB'] = zodb.stackDemoStorage(
+            self.get('zodbDB'),
+            name='PloneSubRequestFixture'
+        )
 
         # Create a new global registry
         zca.pushGlobalRegistry()
-        self['configurationContext'] = context = zca.stackConfigurationContext(self.get('configurationContext'))
+        self['configurationContext'] = context = zca.stackConfigurationContext(
+            self.get('configurationContext')
+        )
 
         # Load out ZCML
         from zope.configuration import xmlconfig
@@ -111,7 +119,8 @@ def setUp(self):
         with z2.zopeApp() as app:
             # Enable virtual hosting
             z2.installProduct(app, 'Products.SiteAccess')
-            from Products.SiteAccess.VirtualHostMonster import VirtualHostMonster
+            from Products.SiteAccess.VirtualHostMonster import \
+                VirtualHostMonster
             vhm = VirtualHostMonster()
             app._setObject(vhm.getId(), vhm, suppress_events=True)
             # With suppress_events=False, this is called twice...
@@ -149,6 +158,12 @@ def testTearDown(self):
         setRequest(None)
 
 
-INTEGRATION_TESTING = PloneSubrequestLifecycle(bases=(PLONE_SUBREQEST_FIXTURE,), name="PloneSubrequest:Integration")
-FUNCTIONAL_TESTING = z2.FunctionalTesting(bases=(PLONE_SUBREQEST_FIXTURE,), name="PloneSubrequest:Functional")
+INTEGRATION_TESTING = PloneSubrequestLifecycle(
+    bases=(PLONE_SUBREQEST_FIXTURE,),
+    name="PloneSubrequest:Integration"
+)
+FUNCTIONAL_TESTING = z2.FunctionalTesting(
+    bases=(PLONE_SUBREQEST_FIXTURE,),
+    name="PloneSubrequest:Functional"
+)
 
diff --git a/plone/subrequest/tests.py b/plone/subrequest/tests.py
index a7d7c1d..5ee13aa 100644
--- a/plone/subrequest/tests.py
+++ b/plone/subrequest/tests.py
@@ -1,21 +1,29 @@
+# -*- coding: utf-8 -*-
+from plone.subrequest import subrequest
+from plone.subrequest.testing import FUNCTIONAL_TESTING
+from plone.subrequest.testing import INTEGRATION_TESTING
+from plone.testing import z2
+from zope.globalrequest import getRequest
+from zope.site.hooks import getSite
 import manuel.doctest
 import manuel.testcase
 import manuel.testing
 import unittest2 as unittest
 
-from plone.subrequest import subrequest
-from plone.subrequest.testing import INTEGRATION_TESTING, FUNCTIONAL_TESTING
-from plone.testing import z2
-from zope.globalrequest import getRequest
-from zope.site.hooks import getSite
 
 def traverse(url):
     request = getRequest()
-    traversed = request.traverse(url)
+    request.traverse(url)
     request.processInputs()
     request['PATH_INFO'] = url
     return request
 
+VH_TPL = (
+    "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot"
+    "/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s"
+)
+NOHOST_VH_TPL = 'http://nohost' + VH_TPL
+
 
 class FunctionalTests(unittest.TestCase):
     layer = FUNCTIONAL_TESTING
@@ -30,7 +38,7 @@ def test_absolute(self):
     def test_virtual_hosting(self):
         parts = ('folder1', 'folder1A/@@url')
         expect = 'folder1A'
-        url = "http://nohost/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % parts
+        url = NOHOST_VH_TPL % parts
         expect_url = 'http://example.org/fizz/buzz/fizzbuzz/%s' % expect
         self.browser.open(url)
         self.assertEqual(self.browser.contents, expect_url)
@@ -38,7 +46,7 @@ def test_virtual_hosting(self):
     def test_virtual_hosting_relative(self):
         parts = ('folder1', 'folder1A?url=folder1Ai/@@url')
         expect = 'folder1A/folder1Ai'
-        url = "http://nohost/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % parts
+        url = NOHOST_VH_TPL % parts
         expect_url = 'http://example.org/fizz/buzz/fizzbuzz/%s' % expect
         self.browser.open(url)
         self.assertEqual(self.browser.contents, expect_url)
@@ -46,7 +54,7 @@ def test_virtual_hosting_relative(self):
     def test_virtual_hosting_absolute(self):
         parts = ('folder1', 'folder1A?url=/folder1B/@@url')
         expect = 'folder1B'
-        url = "http://nohost/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % parts
+        url = NOHOST_VH_TPL % parts
         expect_url = 'http://example.org/fizz/buzz/fizzbuzz/%s' % expect
         self.browser.open(url)
         self.assertEqual(self.browser.contents, expect_url)
@@ -57,35 +65,56 @@ class IntegrationTests(unittest.TestCase):
 
     def test_absolute(self):
         response = subrequest('/folder1/@@url')
-        self.assertEqual(response.body, 'http://nohost/folder1')
+        self.assertEqual(
+            response.body,
+            'http://nohost/folder1'
+        )
 
     def test_absolute_query(self):
         response = subrequest('/folder1/folder1A?url=/folder2/folder2A/@@url')
-        self.assertEqual(response.body, 'http://nohost/folder2/folder2A')
+        self.assertEqual(
+            response.body,
+            'http://nohost/folder2/folder2A'
+        )
 
     def test_relative(self):
         response = subrequest('/folder1?url=folder1B/@@url')
         # /folder1 resolves to /folder1/@@test
-        self.assertEqual(response.body, 'http://nohost/folder1/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://nohost/folder1/folder1B'
+        )
 
     def test_root(self):
         response = subrequest('/')
-        self.assertEqual(response.body, 'Root: http://nohost')
+        self.assertEqual(
+            response.body,
+            'Root: http://nohost'
+        )
 
     def test_virtual_hosting(self):
-        url = "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % ('folder1', 'folder1A/@@url')
+        url = VH_TPL % ('folder1', 'folder1A/@@url')
         response = subrequest(url)
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1A')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1A'
+        )
 
     def test_virtual_hosting_unicode(self):
-        url = u"/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % ('folder1', 'folder1A/@@url')
+        url = VH_TPL % ('folder1', 'folder1A/@@url')
         response = subrequest(url)
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1A')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1A'
+        )
 
     def test_virtual_hosting_relative(self):
-        url = "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % ('folder1', 'folder1A?url=folder1B/@@url')
+        url = VH_TPL % ('folder1', 'folder1A?url=folder1B/@@url')
         response = subrequest(url)
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1B'
+        )
 
     def test_not_found(self):
         response = subrequest('/notfound')
@@ -93,53 +122,85 @@ def test_not_found(self):
 
     def test_virtual_host_root(self):
         parts = ('folder1', 'folder1A/@@url')
-        url = "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % parts
+        url = VH_TPL % parts
         traverse(url)
         response = subrequest('/folder1B/@@url')
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1B'
+        )
 
     def test_virtual_host_root_with_root(self):
         parts = ('folder1', 'folder1A/@@url')
-        url = "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % parts
+        url = VH_TPL % parts
         traverse(url)
         app = self.layer['app']
         response = subrequest('/folder1Ai/@@url', root=app.folder1.folder1A)
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1A/folder1Ai')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1A/folder1Ai'
+        )
 
     def test_virtual_host_space(self):
         parts = ('folder2', 'folder2A/folder2Ai space/@@url')
-        url = "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/%s" % parts
+        url = (
+            "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/%s" %
+            parts
+        )
         traverse(url)
         app = self.layer['app']
         response = subrequest('/folder2A/@@url', root=app.folder2)
-        self.assertEqual(response.body, 'http://example.org/folder2A')
+        self.assertEqual(
+            response.body,
+            'http://example.org/folder2A'
+        )
 
     def test_virtual_host_root_at_root(self):
-        url = "/VirtualHostBase/http/example.org:80/folder1/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz"
+        url = (
+            "/VirtualHostBase/http/example.org:80/folder1/VirtualHostRoot/"
+            "_vh_fizz/_vh_buzz/_vh_fizzbuzz"
+        )
         traverse(url)
         response = subrequest('/folder1B/@@url')
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1B'
+        )
 
     def test_virtual_host_root_at_root_trailing(self):
-        url = "/VirtualHostBase/http/example.org:80/folder1/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/"
+        url = (
+            "/VirtualHostBase/http/example.org:80/folder1/VirtualHostRoot/"
+            "_vh_fizz/_vh_buzz/_vh_fizzbuzz/"
+        )
         traverse(url)
         response = subrequest('/folder1B/@@url')
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1B'
+        )
 
     def test_virtual_host_with_root_double_slash(self):
-        url = "/VirtualHostBase/http/example.org:80/VirtualHostRoot/_vh_fizz/folder1/folder2//folder2A"
+        url = (
+            "/VirtualHostBase/http/example.org:80/VirtualHostRoot/"
+            "_vh_fizz/folder1/folder2//folder2A"
+        )
         traverse(url)
         root = self.layer['app'].folder1
         response = subrequest('/folder1B/@@url', root=root)
-        self.assertEqual(response.body, 'http://example.org/fizz/folder1/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/folder1/folder1B'
+        )
 
     def test_subrequest_root(self):
         app = self.layer['app']
         response = subrequest('/folder1Ai/@@url', root=app.folder1.folder1A)
-        self.assertEqual(response.body, 'http://nohost/folder1/folder1A/folder1Ai')
+        self.assertEqual(
+            response.body,
+            'http://nohost/folder1/folder1A/folder1Ai'
+        )
 
     def test_site(self):
-        app = self.layer['app']
         traverse('/folder1')
         site_url1 = getSite().absolute_url()
         response = subrequest('/folder2/@@url')
@@ -152,6 +213,12 @@ def test_parameter(self):
         self.assertTrue('foo' in response.body)
 
     def test_cookies(self):
+        request = getRequest()
+        request.response.setCookie('cookie_name', 'cookie_value')
+        response = subrequest('/folder1/@@parameter')
+        self.assertTrue("'cookie_name'" in response.body)
+
+    def test_subrequest_cookies(self):
         response = subrequest('/folder1/@@test?url=/folder1/cookie')
         self.assertTrue('cookie_name' in response.cookies)
 
@@ -198,7 +265,11 @@ def test_suite():
     suite = unittest.defaultTestLoader.loadTestsFromName(__name__)
     m = manuel.doctest.Manuel()
     m += manuel.testcase.MarkerManuel()
-    doctests = manuel.testing.TestSuite(m, 'usage.txt', globs=dict(subrequest=subrequest, traverse=traverse))
+    doctests = manuel.testing.TestSuite(
+        m,
+        'usage.txt',
+        globs=dict(subrequest=subrequest, traverse=traverse)
+    )
     # Set the layer on the manuel doctests for now
     for test in doctests:
         test.layer = INTEGRATION_TESTING
diff --git a/setup.py b/setup.py
index eee1369..ee51e16 100644
--- a/setup.py
+++ b/setup.py
@@ -1,15 +1,15 @@
 import os.path
 from setuptools import setup, find_packages
 
-version = '1.6.8.dev0'
+version = '1.6.9.dev0'
 
 setup(
-    name = 'plone.subrequest',
-    version = version,
-    description = 'Subrequests for Zope2',
-    long_description=open("README.txt").read() + "\n\n" +
+    name='plone.subrequest',
+    version=version,
+    description='Subrequests for Zope2',
+    long_description=open("README.rst").read() + "\n\n" +
         open(os.path.join('plone', 'subrequest', 'usage.txt')).read() + "\n\n" +
-        open("CHANGES.txt").read(),
+        open("CHANGES.rst").read(),
     classifiers=[
         "Environment :: Web Environment",
         "Framework :: Plone",
@@ -41,6 +41,9 @@
             'manuel',
             'plone.testing [z2]',
             'plone.app.blob',
+
+            # see https://github.com/plone/plone.app.blob/issues/19
+            'Products.MimetypesRegistry',
             ],
         },
     entry_points="""
jensens added a commit that referenced this pull request Mar 5, 2015
Branch: refs/heads/master
Date: 2015-03-05T17:27:41+01:00
Author: Asko Soukka (datakurre) <asko.soukka@iki.fi>
Commit: https://github.com/plone/plone.subrequest/commit/161041e7b0b5aa2403d22ea7fff63fb3fd1639a4

Fix issue where new cookies from the main request.response are not passed to subrequests.

Files changed:
M plone/subrequest/__init__.py
M plone/subrequest/tests.py

diff --git a/plone/subrequest/__init__.py b/plone/subrequest/__init__.py
index c9d4453..4fe947d 100644
--- a/plone/subrequest/__init__.py
+++ b/plone/subrequest/__init__.py
@@ -95,6 +95,8 @@ def subrequest(url, root=None, stdout=None):
         if name in OTHER_IGNORE or OTHER_IGNORE_RE.match(name) or name.startswith('_'):
             continue
         request.other[name] = parent_value
+    for key, value in parent_request.response.cookies.items():
+        request.cookies[key] = value['value']
     request['PARENT_REQUEST'] = parent_request
     alsoProvides(request, ISubRequest)
     try:
diff --git a/plone/subrequest/tests.py b/plone/subrequest/tests.py
index a7d7c1d..c5f9d8b 100644
--- a/plone/subrequest/tests.py
+++ b/plone/subrequest/tests.py
@@ -152,6 +152,12 @@ def test_parameter(self):
         self.assertTrue('foo' in response.body)
 
     def test_cookies(self):
+        request = getRequest()
+        request.response.setCookie('cookie_name', 'cookie_value')
+        response = subrequest('/folder1/@@parameter')
+        self.assertTrue("'cookie_name'" in response.body)
+
+    def test_subrequest_cookies(self):
         response = subrequest('/folder1/@@test?url=/folder1/cookie')
         self.assertTrue('cookie_name' in response.cookies)
 


Repository: plone.subrequest
Branch: refs/heads/master
Date: 2015-03-05T17:27:41+01:00
Author: Asko Soukka (datakurre) <asko.soukka@iki.fi>
Commit: https://github.com/plone/plone.subrequest/commit/9ca8b8e99cd4c52dbec8f2fd0bfa161729cdf8ef

Update changelog

Files changed:
M CHANGES.txt

diff --git a/CHANGES.txt b/CHANGES.txt
index ee2204c..e45e81c 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,6 +1,13 @@
 Changelog
 =========
 
+1.6.9 (unreleased)
+------------------
+
+- Fix issue where new cookies from the main request.response are not passed to
+  subrequests.
+  [datakurre]
+
 1.6.8 (unreleased)
 ------------------
 


Repository: plone.subrequest
Branch: refs/heads/master
Date: 2015-03-05T17:27:41+01:00
Author: Asko Soukka (datakurre) <asko.soukka@iki.fi>
Commit: https://github.com/plone/plone.subrequest/commit/9161b1d804a3933f0a18d38b9ebe469ec1d4a386

Update changelog

Files changed:
M CHANGES.txt

diff --git a/CHANGES.txt b/CHANGES.txt
index e45e81c..29d8f74 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -8,9 +8,6 @@ Changelog
   subrequests.
   [datakurre]
 
-1.6.8 (unreleased)
-------------------
-
 - Handle sub-requests which contain a doubled // in the path.
   [gweis]
 


Repository: plone.subrequest
Branch: refs/heads/master
Date: 2015-03-05T17:27:41+01:00
Author: Asko Soukka (datakurre) <asko.soukka@iki.fi>
Commit: https://github.com/plone/plone.subrequest/commit/1263a402e411789f296adbd17758af4a719f4e8a

Fix the next version in changelog

Files changed:
M CHANGES.txt

diff --git a/CHANGES.txt b/CHANGES.txt
index 29d8f74..9db44b7 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,7 +1,7 @@
 Changelog
 =========
 
-1.6.9 (unreleased)
+1.6.8 (unreleased)
 ------------------
 
 - Fix issue where new cookies from the main request.response are not passed to


Repository: plone.subrequest
Branch: refs/heads/master
Date: 2015-03-05T17:31:13+01:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: https://github.com/plone/plone.subrequest/commit/9fe6bd48f1efca3bbb7d1d5610a0d3b4b0a2e422

fix version confusion

Files changed:
M CHANGES.txt
M setup.py

diff --git a/CHANGES.txt b/CHANGES.txt
index 9db44b7..7f9ebcb 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,13 +1,15 @@
 Changelog
 =========
 
-1.6.8 (unreleased)
+1.6.9 (unreleased)
 ------------------
 
 - Fix issue where new cookies from the main request.response are not passed to
   subrequests.
   [datakurre]
 
+1.6.8 (2014-03-04)
+------------------
 - Handle sub-requests which contain a doubled // in the path.
   [gweis]
 
diff --git a/setup.py b/setup.py
index eee1369..c98e240 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
 import os.path
 from setuptools import setup, find_packages
 
-version = '1.6.8.dev0'
+version = '1.6.9.dev0'
 
 setup(
     name = 'plone.subrequest',


Repository: plone.subrequest
Branch: refs/heads/master
Date: 2015-03-05T17:32:12+01:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: https://github.com/plone/plone.subrequest/commit/bd485843b90f4a3a21c976691be2ea366f4f6559

housekeeping: txt-&gt;rst

Files changed:
A CHANGES.rst
A README.rst
M setup.py
D CHANGES.txt
D README.txt

diff --git a/CHANGES.rst b/CHANGES.rst
new file mode 100644
index 0000000..7f9ebcb
--- /dev/null
+++ b/CHANGES.rst
@@ -0,0 +1,114 @@
+Changelog
+=========
+
+1.6.9 (unreleased)
+------------------
+
+- Fix issue where new cookies from the main request.response are not passed to
+  subrequests.
+  [datakurre]
+
+1.6.8 (2014-03-04)
+------------------
+- Handle sub-requests which contain a doubled // in the path.
+  [gweis]
+
+1.6.7 (2012-10-22)
+------------------
+
+- Ensure correct handling of bare virtual hosting urls.
+  [elro]
+
+1.6.6 (2012-06-29)
+------------------
+
+- Log errors that occur handling a subrequest to help debug plone.app.theming
+  errors including content from a different url
+  [anthonygerrard]
+
+1.6.5 (2012-04-15)
+------------------
+
+- Ensure parent url is a string and not unicode.
+  [davisagli]
+
+1.6.4 - 2012-03-22
+------------------
+
+- Fix problems with double encoding some unicode charse by not copying too
+  many ``other`` variables.
+  [elro]
+
+1.6.3 - 2012-02-12
+------------------
+
+- Copy ``other`` request variables such as ``LANGUAGE`` to subrequest.
+  [elro]
+
+1.6.2 - 2011-07-04
+------------------
+
+- Handle spaces in default documents. http://dev.plone.org/plone/ticket/12278
+
+1.6.1 - 2011-07-04
+------------------
+
+- Move tests to package directory to making testing possible when installed
+  normally.
+
+1.6 - 2011-06-06
+----------------
+
+- Ensure url is a string and not unicode.
+  [elro]
+
+1.6b2 - 2011-05-20
+------------------
+
+- Set PARENT_REQUEST and add ISubRequest interface to subrequests.
+  [elro]
+
+1.6b1 - 2011-02-11
+------------------
+
+- Handle IStreamIterator.
+  [elro]
+
+- Simplify API so ``response.getBody()`` always works.
+  [elro]
+
+1.5 - 2010-11-26
+----------------
+
+- Merge cookies from subrequest response into parent response.
+  [awello]
+
+1.4 - 2010-11-10
+----------------
+
+- First processInput, then traverse (fixes #11254)
+  [awello]
+
+1.3 - 2010-08-24
+----------------
+
+- Fixed bug with virtual hosting and quoted paths.
+  [elro]
+
+1.2 - 2010-08-16
+----------------
+
+- Restore zope.component site after subrequest.
+  [elro]
+
+1.1 - 2010-08-14
+----------------
+
+- Virtual hosting, relative url and error response support.
+  [elro]
+
+1.0 - 2010-07-28
+----------------
+
+- Initial release.
+  [elro]
diff --git a/CHANGES.txt b/CHANGES.txt
deleted file mode 100644
index 7f9ebcb..0000000
--- a/CHANGES.txt
+++ /dev/null
@@ -1,114 +0,0 @@
-Changelog
-=========
-
-1.6.9 (unreleased)
-------------------
-
-- Fix issue where new cookies from the main request.response are not passed to
-  subrequests.
-  [datakurre]
-
-1.6.8 (2014-03-04)
-------------------
-- Handle sub-requests which contain a doubled // in the path.
-  [gweis]
-
-1.6.7 (2012-10-22)
-------------------
-
-- Ensure correct handling of bare virtual hosting urls.
-  [elro]
-
-1.6.6 (2012-06-29)
-------------------
-
-- Log errors that occur handling a subrequest to help debug plone.app.theming
-  errors including content from a different url
-  [anthonygerrard]
-
-1.6.5 (2012-04-15)
-------------------
-
-- Ensure parent url is a string and not unicode.
-  [davisagli]
-
-1.6.4 - 2012-03-22
-------------------
-
-- Fix problems with double encoding some unicode charse by not copying too
-  many ``other`` variables.
-  [elro]
-
-1.6.3 - 2012-02-12
-------------------
-
-- Copy ``other`` request variables such as ``LANGUAGE`` to subrequest.
-  [elro]
-
-1.6.2 - 2011-07-04
-------------------
-
-- Handle spaces in default documents. http://dev.plone.org/plone/ticket/12278
-
-1.6.1 - 2011-07-04
-------------------
-
-- Move tests to package directory to making testing possible when installed
-  normally.
-
-1.6 - 2011-06-06
-----------------
-
-- Ensure url is a string and not unicode.
-  [elro]
-
-1.6b2 - 2011-05-20
-------------------
-
-- Set PARENT_REQUEST and add ISubRequest interface to subrequests.
-  [elro]
-
-1.6b1 - 2011-02-11
-------------------
-
-- Handle IStreamIterator.
-  [elro]
-
-- Simplify API so ``response.getBody()`` always works.
-  [elro]
-
-1.5 - 2010-11-26
-----------------
-
-- Merge cookies from subrequest response into parent response.
-  [awello]
-
-1.4 - 2010-11-10
-----------------
-
-- First processInput, then traverse (fixes #11254)
-  [awello]
-
-1.3 - 2010-08-24
-----------------
-
-- Fixed bug with virtual hosting and quoted paths.
-  [elro]
-
-1.2 - 2010-08-16
-----------------
-
-- Restore zope.component site after subrequest.
-  [elro]
-
-1.1 - 2010-08-14
-----------------
-
-- Virtual hosting, relative url and error response support.
-  [elro]
-
-1.0 - 2010-07-28
-----------------
-
-- Initial release.
-  [elro]
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..6441138
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,27 @@
+Overview
+========
+
+plone.subrequest provides a mechanism for issuing subrequests under Zope2.
+
+Installation
+============
+
+Plone 4
+-------
+
+An entry point is provided so no special installation is required past adding
+`plone.subrequest` to your instance's `eggs`.
+
+Zope 2.12 without Plone
+-----------------------
+
+Load this package's ZCML in the usual manner.
+
+Zope 2.10
+---------
+
+You must install ZPublisherEventsBackport_ to use this package with Zope 2.10
+and load both package's ZCML. The tests require Zope 2.12 / Python 2.6 so will
+not run.
+
+.. _ZPublisherEventsBackport: http://pypi.python.org/pypi/ZPublisherEventsBackport
diff --git a/README.txt b/README.txt
deleted file mode 100644
index 6441138..0000000
--- a/README.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-Overview
-========
-
-plone.subrequest provides a mechanism for issuing subrequests under Zope2.
-
-Installation
-============
-
-Plone 4
--------
-
-An entry point is provided so no special installation is required past adding
-`plone.subrequest` to your instance's `eggs`.
-
-Zope 2.12 without Plone
------------------------
-
-Load this package's ZCML in the usual manner.
-
-Zope 2.10
----------
-
-You must install ZPublisherEventsBackport_ to use this package with Zope 2.10
-and load both package's ZCML. The tests require Zope 2.12 / Python 2.6 so will
-not run.
-
-.. _ZPublisherEventsBackport: http://pypi.python.org/pypi/ZPublisherEventsBackport
diff --git a/setup.py b/setup.py
index c98e240..a0ce162 100644
--- a/setup.py
+++ b/setup.py
@@ -7,9 +7,9 @@
     name = 'plone.subrequest',
     version = version,
     description = 'Subrequests for Zope2',
-    long_description=open("README.txt").read() + "\n\n" +
+    long_description=open("README.rst").read() + "\n\n" +
         open(os.path.join('plone', 'subrequest', 'usage.txt')).read() + "\n\n" +
-        open("CHANGES.txt").read(),
+        open("CHANGES.rst").read(),
     classifiers=[
         "Environment :: Web Environment",
         "Framework :: Plone",


Repository: plone.subrequest
Branch: refs/heads/master
Date: 2015-03-05T17:55:59+01:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: https://github.com/plone/plone.subrequest/commit/034cd27880cbd705bd54a3534e14d9d6ca26434b

housekeeping

Files changed:
M .gitignore

diff --git a/.gitignore b/.gitignore
index e089dba..1545667 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,23 @@
+*.EGG
+*.EGG-INFO
+*.egg
+*.egg-info
 *.py?
-plone.subrequest.egg-info/
+*.tmp*
+.*.cfg
+.idea
+/*.egg-info/
+/bin/
+/build/
+/build/
+/develop-eggs/
+/dist/
+/downloads/
+/eggs/
+/extras/
+/html/
+/include/
+/lib/
+/local/
+/parts/
+/var/


Repository: plone.subrequest
Branch: refs/heads/master
Date: 2015-03-05T18:14:49+01:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: https://github.com/plone/plone.subrequest/commit/8013724732e784dfa59431b1019e3698e7ce496c

pep8 et al

Files changed:
M buildout.cfg
M plone/__init__.py
M plone/subrequest/__init__.py
M plone/subrequest/subresponse.py
M plone/subrequest/testing.py
M plone/subrequest/tests.py
M setup.py

diff --git a/buildout.cfg b/buildout.cfg
index 6f5e928..a9df8db 100644
--- a/buildout.cfg
+++ b/buildout.cfg
@@ -1,10 +1,10 @@
 [buildout]
-develop = .
 parts = checkdocs test
 versions = versions
-extends = http://dist.plone.org/release/4.0-latest/versions.cfg
-extensions = buildout.dumppickedversions
+extends = 
+    http://dist.plone.org/release/4.3-latest/versions.cfg
 
+develop = .
 [checkdocs]
 recipe = zc.recipe.egg
 eggs = collective.checkdocs
@@ -13,8 +13,10 @@ interpreter = py
 [test]
 recipe = zc.recipe.testrunner
 eggs =
-    plone.subrequest [test]
+    plone.subrequest[test]
 defaults = ['--auto-color', '--auto-progress']
 
 [versions]
-unittest2 = 0.5.1
+zc.buildout =
+setuptools =
+plone.subrequest = >1.6.8
diff --git a/plone/__init__.py b/plone/__init__.py
index f48ad10..68c04af 100644
--- a/plone/__init__.py
+++ b/plone/__init__.py
@@ -1,6 +1,2 @@
-# 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__)
+# -*- coding: utf-8 -*-
+__import__('pkg_resources').declare_namespace(__name__)
diff --git a/plone/subrequest/__init__.py b/plone/subrequest/__init__.py
index 4fe947d..002ad91 100644
--- a/plone/subrequest/__init__.py
+++ b/plone/subrequest/__init__.py
@@ -1,5 +1,4 @@
-import re
-
+# -*- coding: utf-8 -*-
 from AccessControl import getSecurityManager
 from AccessControl.SecurityManagement import setSecurityManager
 from Acquisition import aq_base
@@ -9,18 +8,20 @@
 from ZPublisher.mapply import mapply
 from cStringIO import StringIO
 from logging import getLogger
+from plone.subrequest.interfaces import ISubRequest
+from plone.subrequest.subresponse import SubResponse
 from posixpath import normpath
+from urllib import unquote  # Python2.4 does not have urlparse.unquote
 from urlparse import urlsplit, urljoin
-from urllib import unquote # Python2.4 does not have urlparse.unquote
-from zope.interface import alsoProvides
 from zope.globalrequest import getRequest, setRequest
+from zope.interface import alsoProvides
+import re
+
 try:
     from zope.site.hooks import getSite, setSite
 except ImportError:
     from zope.app.component.hooks import getSite, setSite
 
-from plone.subrequest.subresponse import SubResponse
-from plone.subrequest.interfaces import ISubRequest
 
 __all__ = ['subrequest', 'SubResponse']
 
@@ -31,7 +32,7 @@
     'HTTP_IF_MATCH',
     'HTTP_IF_NONE_MATCH',
     'HTTP_IF_RANGE',
-    'HTTP_RANGE', # Not strictly a conditional header, but scrub it anyway
+    'HTTP_RANGE',  # Not strictly a conditional header, but scrub it anyway
     ]
 
 OTHER_IGNORE = set([
@@ -55,13 +56,15 @@
 
 logger = getLogger("plone.subrequest")
 
+
 def subrequest(url, root=None, stdout=None):
     assert url is not None, "You must pass a url"
     if isinstance(url, unicode):
         url = url.encode('utf-8')
     _, _, path, query, _ = urlsplit(url)
     parent_request = getRequest()
-    assert parent_request is not None, "Unable to get request, perhaps zope.globalrequest is not configured."
+    assert parent_request is not None, \
+        "Unable to get request, perhaps zope.globalrequest is not configured."
     parent_site = getSite()
     security_manager = getSecurityManager()
     parent_app = parent_request.PARENTS[-1]
@@ -71,7 +74,9 @@ def subrequest(url, root=None, stdout=None):
         if vurl_parts is not None:
             # Use the virtual host root
             path_past_root = unquote(vurl_parts[-1])
-            root_path = normpath(parent_request['PATH_INFO']).rstrip('/')[:-len(path_past_root) or None]
+            root_path = normpath(
+                parent_request['PATH_INFO']
+            ).rstrip('/')[:-len(path_past_root) or None]
             if root is None:
                 path = root_path + path
             else:
@@ -92,7 +97,9 @@ def subrequest(url, root=None, stdout=None):
         path = normpath(path)
     request = parent_request.clone()
     for name, parent_value in parent_request.other.items():
-        if name in OTHER_IGNORE or OTHER_IGNORE_RE.match(name) or name.startswith('_'):
+        if name in OTHER_IGNORE \
+           or OTHER_IGNORE_RE.match(name) \
+           or name.startswith('_'):
             continue
         request.other[name] = parent_value
     for key, value in parent_request.response.cookies.items():
@@ -106,9 +113,9 @@ def subrequest(url, root=None, stdout=None):
         request['PARENTS'] = [app]
         response = request.response
         response.__class__ = SubResponse
-        response.stderr = None # only used on retry it seems
+        response.stderr = None  # only used on retry it seems
         if stdout is None:
-            stdout = StringIO() # It might be possible to optimize this
+            stdout = StringIO()  # It might be possible to optimize this
         response.stdout = stdout
         environ = request.environ
         environ['PATH_INFO'] = path
@@ -140,4 +147,3 @@ def subrequest(url, root=None, stdout=None):
         setRequest(parent_request)
         setSite(parent_site)
         setSecurityManager(security_manager)
-
diff --git a/plone/subrequest/subresponse.py b/plone/subrequest/subresponse.py
index 2e89a4f..d8c84a9 100644
--- a/plone/subrequest/subresponse.py
+++ b/plone/subrequest/subresponse.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 from ZPublisher.HTTPResponse import HTTPResponse
 from ZPublisher.Iterators import IStreamIterator
 try:
@@ -6,6 +7,7 @@
     class BlobStreamIterator:
         pass
 
+
 class SubResponse(HTTPResponse):
 
     def setBody(self, body, title='', is_error=0, **kw):
@@ -14,8 +16,10 @@ def setBody(self, body, title='', is_error=0, **kw):
             return HTTPResponse.setBody(self, body, title, is_error, **kw)
         assert not self._wrote
         if isinstance(body, BlobStreamIterator):
-            body = body.blob # A BlobFile
-        if hasattr(body, 'seek') and hasattr(body, 'read') and hasattr(body, 'close'):
+            body = body.blob  # A BlobFile
+        if hasattr(body, 'seek') \
+           and hasattr(body, 'read') and \
+           hasattr(body, 'close'):
             self.stdout = body
             self._wrote = 1
             return
diff --git a/plone/subrequest/testing.py b/plone/subrequest/testing.py
index 1d2ee64..6a3ba0d 100644
--- a/plone/subrequest/testing.py
+++ b/plone/subrequest/testing.py
@@ -1,9 +1,12 @@
-import OFS.Folder
+# -*- coding: utf-8 -*-
 from Products.Five.browser import BrowserView
 from five.localsitemanager import make_site
 from plone.subrequest import subrequest
-from plone.testing import Layer, z2, zodb, zca
-from zope.globalrequest import getRequest, setRequest
+from plone.testing import Layer
+from plone.testing import z2
+from plone.testing import zca
+from plone.testing import zodb
+from zope.globalrequest import setRequest
 
 
 class CookieView(BrowserView):
@@ -20,7 +23,6 @@ def __init__(self, context, request):
         self.keys = self.request.keys()
 
     def __call__(self):
-        response = self.request.response
         return str(self.keys)
 
 
@@ -91,17 +93,23 @@ def __call__(self):
 def singleton(cls):
     return cls()
 
+
 @singleton
 class PLONE_SUBREQEST_FIXTURE(Layer):
     defaultBases = (z2.STARTUP,)
 
     def setUp(self):
         # Stack a new DemoStorage on top of the one from z2.STARTUP.
-        self['zodbDB'] = zodb.stackDemoStorage(self.get('zodbDB'), name='PloneSubRequestFixture')
+        self['zodbDB'] = zodb.stackDemoStorage(
+            self.get('zodbDB'),
+            name='PloneSubRequestFixture'
+        )
 
         # Create a new global registry
         zca.pushGlobalRegistry()
-        self['configurationContext'] = context = zca.stackConfigurationContext(self.get('configurationContext'))
+        self['configurationContext'] = context = zca.stackConfigurationContext(
+            self.get('configurationContext')
+        )
 
         # Load out ZCML
         from zope.configuration import xmlconfig
@@ -111,7 +119,8 @@ def setUp(self):
         with z2.zopeApp() as app:
             # Enable virtual hosting
             z2.installProduct(app, 'Products.SiteAccess')
-            from Products.SiteAccess.VirtualHostMonster import VirtualHostMonster
+            from Products.SiteAccess.VirtualHostMonster import \
+                VirtualHostMonster
             vhm = VirtualHostMonster()
             app._setObject(vhm.getId(), vhm, suppress_events=True)
             # With suppress_events=False, this is called twice...
@@ -149,6 +158,12 @@ def testTearDown(self):
         setRequest(None)
 
 
-INTEGRATION_TESTING = PloneSubrequestLifecycle(bases=(PLONE_SUBREQEST_FIXTURE,), name="PloneSubrequest:Integration")
-FUNCTIONAL_TESTING = z2.FunctionalTesting(bases=(PLONE_SUBREQEST_FIXTURE,), name="PloneSubrequest:Functional")
+INTEGRATION_TESTING = PloneSubrequestLifecycle(
+    bases=(PLONE_SUBREQEST_FIXTURE,),
+    name="PloneSubrequest:Integration"
+)
+FUNCTIONAL_TESTING = z2.FunctionalTesting(
+    bases=(PLONE_SUBREQEST_FIXTURE,),
+    name="PloneSubrequest:Functional"
+)
 
diff --git a/plone/subrequest/tests.py b/plone/subrequest/tests.py
index c5f9d8b..5ee13aa 100644
--- a/plone/subrequest/tests.py
+++ b/plone/subrequest/tests.py
@@ -1,21 +1,29 @@
+# -*- coding: utf-8 -*-
+from plone.subrequest import subrequest
+from plone.subrequest.testing import FUNCTIONAL_TESTING
+from plone.subrequest.testing import INTEGRATION_TESTING
+from plone.testing import z2
+from zope.globalrequest import getRequest
+from zope.site.hooks import getSite
 import manuel.doctest
 import manuel.testcase
 import manuel.testing
 import unittest2 as unittest
 
-from plone.subrequest import subrequest
-from plone.subrequest.testing import INTEGRATION_TESTING, FUNCTIONAL_TESTING
-from plone.testing import z2
-from zope.globalrequest import getRequest
-from zope.site.hooks import getSite
 
 def traverse(url):
     request = getRequest()
-    traversed = request.traverse(url)
+    request.traverse(url)
     request.processInputs()
     request['PATH_INFO'] = url
     return request
 
+VH_TPL = (
+    "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot"
+    "/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s"
+)
+NOHOST_VH_TPL = 'http://nohost' + VH_TPL
+
 
 class FunctionalTests(unittest.TestCase):
     layer = FUNCTIONAL_TESTING
@@ -30,7 +38,7 @@ def test_absolute(self):
     def test_virtual_hosting(self):
         parts = ('folder1', 'folder1A/@@url')
         expect = 'folder1A'
-        url = "http://nohost/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % parts
+        url = NOHOST_VH_TPL % parts
         expect_url = 'http://example.org/fizz/buzz/fizzbuzz/%s' % expect
         self.browser.open(url)
         self.assertEqual(self.browser.contents, expect_url)
@@ -38,7 +46,7 @@ def test_virtual_hosting(self):
     def test_virtual_hosting_relative(self):
         parts = ('folder1', 'folder1A?url=folder1Ai/@@url')
         expect = 'folder1A/folder1Ai'
-        url = "http://nohost/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % parts
+        url = NOHOST_VH_TPL % parts
         expect_url = 'http://example.org/fizz/buzz/fizzbuzz/%s' % expect
         self.browser.open(url)
         self.assertEqual(self.browser.contents, expect_url)
@@ -46,7 +54,7 @@ def test_virtual_hosting_relative(self):
     def test_virtual_hosting_absolute(self):
         parts = ('folder1', 'folder1A?url=/folder1B/@@url')
         expect = 'folder1B'
-        url = "http://nohost/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % parts
+        url = NOHOST_VH_TPL % parts
         expect_url = 'http://example.org/fizz/buzz/fizzbuzz/%s' % expect
         self.browser.open(url)
         self.assertEqual(self.browser.contents, expect_url)
@@ -57,35 +65,56 @@ class IntegrationTests(unittest.TestCase):
 
     def test_absolute(self):
         response = subrequest('/folder1/@@url')
-        self.assertEqual(response.body, 'http://nohost/folder1')
+        self.assertEqual(
+            response.body,
+            'http://nohost/folder1'
+        )
 
     def test_absolute_query(self):
         response = subrequest('/folder1/folder1A?url=/folder2/folder2A/@@url')
-        self.assertEqual(response.body, 'http://nohost/folder2/folder2A')
+        self.assertEqual(
+            response.body,
+            'http://nohost/folder2/folder2A'
+        )
 
     def test_relative(self):
         response = subrequest('/folder1?url=folder1B/@@url')
         # /folder1 resolves to /folder1/@@test
-        self.assertEqual(response.body, 'http://nohost/folder1/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://nohost/folder1/folder1B'
+        )
 
     def test_root(self):
         response = subrequest('/')
-        self.assertEqual(response.body, 'Root: http://nohost')
+        self.assertEqual(
+            response.body,
+            'Root: http://nohost'
+        )
 
     def test_virtual_hosting(self):
-        url = "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % ('folder1', 'folder1A/@@url')
+        url = VH_TPL % ('folder1', 'folder1A/@@url')
         response = subrequest(url)
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1A')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1A'
+        )
 
     def test_virtual_hosting_unicode(self):
-        url = u"/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % ('folder1', 'folder1A/@@url')
+        url = VH_TPL % ('folder1', 'folder1A/@@url')
         response = subrequest(url)
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1A')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1A'
+        )
 
     def test_virtual_hosting_relative(self):
-        url = "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % ('folder1', 'folder1A?url=folder1B/@@url')
+        url = VH_TPL % ('folder1', 'folder1A?url=folder1B/@@url')
         response = subrequest(url)
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1B'
+        )
 
     def test_not_found(self):
         response = subrequest('/notfound')
@@ -93,53 +122,85 @@ def test_not_found(self):
 
     def test_virtual_host_root(self):
         parts = ('folder1', 'folder1A/@@url')
-        url = "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % parts
+        url = VH_TPL % parts
         traverse(url)
         response = subrequest('/folder1B/@@url')
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1B'
+        )
 
     def test_virtual_host_root_with_root(self):
         parts = ('folder1', 'folder1A/@@url')
-        url = "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % parts
+        url = VH_TPL % parts
         traverse(url)
         app = self.layer['app']
         response = subrequest('/folder1Ai/@@url', root=app.folder1.folder1A)
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1A/folder1Ai')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1A/folder1Ai'
+        )
 
     def test_virtual_host_space(self):
         parts = ('folder2', 'folder2A/folder2Ai space/@@url')
-        url = "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/%s" % parts
+        url = (
+            "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/%s" %
+            parts
+        )
         traverse(url)
         app = self.layer['app']
         response = subrequest('/folder2A/@@url', root=app.folder2)
-        self.assertEqual(response.body, 'http://example.org/folder2A')
+        self.assertEqual(
+            response.body,
+            'http://example.org/folder2A'
+        )
 
     def test_virtual_host_root_at_root(self):
-        url = "/VirtualHostBase/http/example.org:80/folder1/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz"
+        url = (
+            "/VirtualHostBase/http/example.org:80/folder1/VirtualHostRoot/"
+            "_vh_fizz/_vh_buzz/_vh_fizzbuzz"
+        )
         traverse(url)
         response = subrequest('/folder1B/@@url')
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1B'
+        )
 
     def test_virtual_host_root_at_root_trailing(self):
-        url = "/VirtualHostBase/http/example.org:80/folder1/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/"
+        url = (
+            "/VirtualHostBase/http/example.org:80/folder1/VirtualHostRoot/"
+            "_vh_fizz/_vh_buzz/_vh_fizzbuzz/"
+        )
         traverse(url)
         response = subrequest('/folder1B/@@url')
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1B'
+        )
 
     def test_virtual_host_with_root_double_slash(self):
-        url = "/VirtualHostBase/http/example.org:80/VirtualHostRoot/_vh_fizz/folder1/folder2//folder2A"
+        url = (
+            "/VirtualHostBase/http/example.org:80/VirtualHostRoot/"
+            "_vh_fizz/folder1/folder2//folder2A"
+        )
         traverse(url)
         root = self.layer['app'].folder1
         response = subrequest('/folder1B/@@url', root=root)
-        self.assertEqual(response.body, 'http://example.org/fizz/folder1/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/folder1/folder1B'
+        )
 
     def test_subrequest_root(self):
         app = self.layer['app']
         response = subrequest('/folder1Ai/@@url', root=app.folder1.folder1A)
-        self.assertEqual(response.body, 'http://nohost/folder1/folder1A/folder1Ai')
+        self.assertEqual(
+            response.body,
+            'http://nohost/folder1/folder1A/folder1Ai'
+        )
 
     def test_site(self):
-        app = self.layer['app']
         traverse('/folder1')
         site_url1 = getSite().absolute_url()
         response = subrequest('/folder2/@@url')
@@ -204,7 +265,11 @@ def test_suite():
     suite = unittest.defaultTestLoader.loadTestsFromName(__name__)
     m = manuel.doctest.Manuel()
     m += manuel.testcase.MarkerManuel()
-    doctests = manuel.testing.TestSuite(m, 'usage.txt', globs=dict(subrequest=subrequest, traverse=traverse))
+    doctests = manuel.testing.TestSuite(
+        m,
+        'usage.txt',
+        globs=dict(subrequest=subrequest, traverse=traverse)
+    )
     # Set the layer on the manuel doctests for now
     for test in doctests:
         test.layer = INTEGRATION_TESTING
diff --git a/setup.py b/setup.py
index a0ce162..1a06ff4 100644
--- a/setup.py
+++ b/setup.py
@@ -4,9 +4,9 @@
 version = '1.6.9.dev0'
 
 setup(
-    name = 'plone.subrequest',
-    version = version,
-    description = 'Subrequests for Zope2',
+    name='plone.subrequest',
+    version=version,
+    description='Subrequests for Zope2',
     long_description=open("README.rst").read() + "\n\n" +
         open(os.path.join('plone', 'subrequest', 'usage.txt')).read() + "\n\n" +
         open("CHANGES.rst").read(),


Repository: plone.subrequest
Branch: refs/heads/master
Date: 2015-03-05T19:03:55+01:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: https://github.com/plone/plone.subrequest/commit/f92904947f358fd12f095b0eb0ca5d27b187afc8

Workaround for broken test because of missing dependency declaration in upstream package, see https://github.com/plone/plone.app.blob/issues/19 for details.

Files changed:
M CHANGES.rst
M setup.py

diff --git a/CHANGES.rst b/CHANGES.rst
index 7f9ebcb..69fe80a 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -4,6 +4,14 @@ Changelog
 1.6.9 (unreleased)
 ------------------
 
+- Workaround for broken test because of missing dependency declaration in 
+  upstream package, see https://github.com/plone/plone.app.blob/issues/19
+  for details.
+  [jensens]
+
+- Housekeeping and code cleanup (pep8, et al).
+  [jensens]
+
 - Fix issue where new cookies from the main request.response are not passed to
   subrequests.
   [datakurre]
diff --git a/setup.py b/setup.py
index 1a06ff4..ee51e16 100644
--- a/setup.py
+++ b/setup.py
@@ -41,6 +41,9 @@
             'manuel',
             'plone.testing [z2]',
             'plone.app.blob',
+
+            # see https://github.com/plone/plone.app.blob/issues/19
+            'Products.MimetypesRegistry',
             ],
         },
     entry_points="""


Repository: plone.subrequest
Branch: refs/heads/master
Date: 2015-03-05T19:21:06+01:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: https://github.com/plone/plone.subrequest/commit/0f52a877f0be19fa585d65496db35d4088bbc76c

Merge pull request #2 from plone/mosaicsprint

Fix issue where new cookies from the main request.response are not passed to subrequests

Files changed:
A CHANGES.rst
A README.rst
M .gitignore
M buildout.cfg
M plone/__init__.py
M plone/subrequest/__init__.py
M plone/subrequest/subresponse.py
M plone/subrequest/testing.py
M plone/subrequest/tests.py
M setup.py
D CHANGES.txt
D README.txt

diff --git a/.gitignore b/.gitignore
index e089dba..1545667 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,23 @@
+*.EGG
+*.EGG-INFO
+*.egg
+*.egg-info
 *.py?
-plone.subrequest.egg-info/
+*.tmp*
+.*.cfg
+.idea
+/*.egg-info/
+/bin/
+/build/
+/build/
+/develop-eggs/
+/dist/
+/downloads/
+/eggs/
+/extras/
+/html/
+/include/
+/lib/
+/local/
+/parts/
+/var/
diff --git a/CHANGES.rst b/CHANGES.rst
new file mode 100644
index 0000000..69fe80a
--- /dev/null
+++ b/CHANGES.rst
@@ -0,0 +1,122 @@
+Changelog
+=========
+
+1.6.9 (unreleased)
+------------------
+
+- Workaround for broken test because of missing dependency declaration in 
+  upstream package, see https://github.com/plone/plone.app.blob/issues/19
+  for details.
+  [jensens]
+
+- Housekeeping and code cleanup (pep8, et al).
+  [jensens]
+
+- Fix issue where new cookies from the main request.response are not passed to
+  subrequests.
+  [datakurre]
+
+1.6.8 (2014-03-04)
+------------------
+- Handle sub-requests which contain a doubled // in the path.
+  [gweis]
+
+1.6.7 (2012-10-22)
+------------------
+
+- Ensure correct handling of bare virtual hosting urls.
+  [elro]
+
+1.6.6 (2012-06-29)
+------------------
+
+- Log errors that occur handling a subrequest to help debug plone.app.theming
+  errors including content from a different url
+  [anthonygerrard]
+
+1.6.5 (2012-04-15)
+------------------
+
+- Ensure parent url is a string and not unicode.
+  [davisagli]
+
+1.6.4 - 2012-03-22
+------------------
+
+- Fix problems with double encoding some unicode charse by not copying too
+  many ``other`` variables.
+  [elro]
+
+1.6.3 - 2012-02-12
+------------------
+
+- Copy ``other`` request variables such as ``LANGUAGE`` to subrequest.
+  [elro]
+
+1.6.2 - 2011-07-04
+------------------
+
+- Handle spaces in default documents. http://dev.plone.org/plone/ticket/12278
+
+1.6.1 - 2011-07-04
+------------------
+
+- Move tests to package directory to making testing possible when installed
+  normally.
+
+1.6 - 2011-06-06
+----------------
+
+- Ensure url is a string and not unicode.
+  [elro]
+
+1.6b2 - 2011-05-20
+------------------
+
+- Set PARENT_REQUEST and add ISubRequest interface to subrequests.
+  [elro]
+
+1.6b1 - 2011-02-11
+------------------
+
+- Handle IStreamIterator.
+  [elro]
+
+- Simplify API so ``response.getBody()`` always works.
+  [elro]
+
+1.5 - 2010-11-26
+----------------
+
+- Merge cookies from subrequest response into parent response.
+  [awello]
+
+1.4 - 2010-11-10
+----------------
+
+- First processInput, then traverse (fixes #11254)
+  [awello]
+
+1.3 - 2010-08-24
+----------------
+
+- Fixed bug with virtual hosting and quoted paths.
+  [elro]
+
+1.2 - 2010-08-16
+----------------
+
+- Restore zope.component site after subrequest.
+  [elro]
+
+1.1 - 2010-08-14
+----------------
+
+- Virtual hosting, relative url and error response support.
+  [elro]
+
+1.0 - 2010-07-28
+----------------
+
+- Initial release.
+  [elro]
diff --git a/CHANGES.txt b/CHANGES.txt
deleted file mode 100644
index ee2204c..0000000
--- a/CHANGES.txt
+++ /dev/null
@@ -1,108 +0,0 @@
-Changelog
-=========
-
-1.6.8 (unreleased)
-------------------
-
-- Handle sub-requests which contain a doubled // in the path.
-  [gweis]
-
-1.6.7 (2012-10-22)
-------------------
-
-- Ensure correct handling of bare virtual hosting urls.
-  [elro]
-
-1.6.6 (2012-06-29)
-------------------
-
-- Log errors that occur handling a subrequest to help debug plone.app.theming
-  errors including content from a different url
-  [anthonygerrard]
-
-1.6.5 (2012-04-15)
-------------------
-
-- Ensure parent url is a string and not unicode.
-  [davisagli]
-
-1.6.4 - 2012-03-22
-------------------
-
-- Fix problems with double encoding some unicode charse by not copying too
-  many ``other`` variables.
-  [elro]
-
-1.6.3 - 2012-02-12
-------------------
-
-- Copy ``other`` request variables such as ``LANGUAGE`` to subrequest.
-  [elro]
-
-1.6.2 - 2011-07-04
-------------------
-
-- Handle spaces in default documents. http://dev.plone.org/plone/ticket/12278
-
-1.6.1 - 2011-07-04
-------------------
-
-- Move tests to package directory to making testing possible when installed
-  normally.
-
-1.6 - 2011-06-06
-----------------
-
-- Ensure url is a string and not unicode.
-  [elro]
-
-1.6b2 - 2011-05-20
-------------------
-
-- Set PARENT_REQUEST and add ISubRequest interface to subrequests.
-  [elro]
-
-1.6b1 - 2011-02-11
-------------------
-
-- Handle IStreamIterator.
-  [elro]
-
-- Simplify API so ``response.getBody()`` always works.
-  [elro]
-
-1.5 - 2010-11-26
-----------------
-
-- Merge cookies from subrequest response into parent response.
-  [awello]
-
-1.4 - 2010-11-10
-----------------
-
-- First processInput, then traverse (fixes #11254)
-  [awello]
-
-1.3 - 2010-08-24
-----------------
-
-- Fixed bug with virtual hosting and quoted paths.
-  [elro]
-
-1.2 - 2010-08-16
-----------------
-
-- Restore zope.component site after subrequest.
-  [elro]
-
-1.1 - 2010-08-14
-----------------
-
-- Virtual hosting, relative url and error response support.
-  [elro]
-
-1.0 - 2010-07-28
-----------------
-
-- Initial release.
-  [elro]
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..6441138
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,27 @@
+Overview
+========
+
+plone.subrequest provides a mechanism for issuing subrequests under Zope2.
+
+Installation
+============
+
+Plone 4
+-------
+
+An entry point is provided so no special installation is required past adding
+`plone.subrequest` to your instance's `eggs`.
+
+Zope 2.12 without Plone
+-----------------------
+
+Load this package's ZCML in the usual manner.
+
+Zope 2.10
+---------
+
+You must install ZPublisherEventsBackport_ to use this package with Zope 2.10
+and load both package's ZCML. The tests require Zope 2.12 / Python 2.6 so will
+not run.
+
+.. _ZPublisherEventsBackport: http://pypi.python.org/pypi/ZPublisherEventsBackport
diff --git a/README.txt b/README.txt
deleted file mode 100644
index 6441138..0000000
--- a/README.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-Overview
-========
-
-plone.subrequest provides a mechanism for issuing subrequests under Zope2.
-
-Installation
-============
-
-Plone 4
--------
-
-An entry point is provided so no special installation is required past adding
-`plone.subrequest` to your instance's `eggs`.
-
-Zope 2.12 without Plone
------------------------
-
-Load this package's ZCML in the usual manner.
-
-Zope 2.10
----------
-
-You must install ZPublisherEventsBackport_ to use this package with Zope 2.10
-and load both package's ZCML. The tests require Zope 2.12 / Python 2.6 so will
-not run.
-
-.. _ZPublisherEventsBackport: http://pypi.python.org/pypi/ZPublisherEventsBackport
diff --git a/buildout.cfg b/buildout.cfg
index 6f5e928..a9df8db 100644
--- a/buildout.cfg
+++ b/buildout.cfg
@@ -1,10 +1,10 @@
 [buildout]
-develop = .
 parts = checkdocs test
 versions = versions
-extends = http://dist.plone.org/release/4.0-latest/versions.cfg
-extensions = buildout.dumppickedversions
+extends = 
+    http://dist.plone.org/release/4.3-latest/versions.cfg
 
+develop = .
 [checkdocs]
 recipe = zc.recipe.egg
 eggs = collective.checkdocs
@@ -13,8 +13,10 @@ interpreter = py
 [test]
 recipe = zc.recipe.testrunner
 eggs =
-    plone.subrequest [test]
+    plone.subrequest[test]
 defaults = ['--auto-color', '--auto-progress']
 
 [versions]
-unittest2 = 0.5.1
+zc.buildout =
+setuptools =
+plone.subrequest = >1.6.8
diff --git a/plone/__init__.py b/plone/__init__.py
index f48ad10..68c04af 100644
--- a/plone/__init__.py
+++ b/plone/__init__.py
@@ -1,6 +1,2 @@
-# 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__)
+# -*- coding: utf-8 -*-
+__import__('pkg_resources').declare_namespace(__name__)
diff --git a/plone/subrequest/__init__.py b/plone/subrequest/__init__.py
index c9d4453..002ad91 100644
--- a/plone/subrequest/__init__.py
+++ b/plone/subrequest/__init__.py
@@ -1,5 +1,4 @@
-import re
-
+# -*- coding: utf-8 -*-
 from AccessControl import getSecurityManager
 from AccessControl.SecurityManagement import setSecurityManager
 from Acquisition import aq_base
@@ -9,18 +8,20 @@
 from ZPublisher.mapply import mapply
 from cStringIO import StringIO
 from logging import getLogger
+from plone.subrequest.interfaces import ISubRequest
+from plone.subrequest.subresponse import SubResponse
 from posixpath import normpath
+from urllib import unquote  # Python2.4 does not have urlparse.unquote
 from urlparse import urlsplit, urljoin
-from urllib import unquote # Python2.4 does not have urlparse.unquote
-from zope.interface import alsoProvides
 from zope.globalrequest import getRequest, setRequest
+from zope.interface import alsoProvides
+import re
+
 try:
     from zope.site.hooks import getSite, setSite
 except ImportError:
     from zope.app.component.hooks import getSite, setSite
 
-from plone.subrequest.subresponse import SubResponse
-from plone.subrequest.interfaces import ISubRequest
 
 __all__ = ['subrequest', 'SubResponse']
 
@@ -31,7 +32,7 @@
     'HTTP_IF_MATCH',
     'HTTP_IF_NONE_MATCH',
     'HTTP_IF_RANGE',
-    'HTTP_RANGE', # Not strictly a conditional header, but scrub it anyway
+    'HTTP_RANGE',  # Not strictly a conditional header, but scrub it anyway
     ]
 
 OTHER_IGNORE = set([
@@ -55,13 +56,15 @@
 
 logger = getLogger("plone.subrequest")
 
+
 def subrequest(url, root=None, stdout=None):
     assert url is not None, "You must pass a url"
     if isinstance(url, unicode):
         url = url.encode('utf-8')
     _, _, path, query, _ = urlsplit(url)
     parent_request = getRequest()
-    assert parent_request is not None, "Unable to get request, perhaps zope.globalrequest is not configured."
+    assert parent_request is not None, \
+        "Unable to get request, perhaps zope.globalrequest is not configured."
     parent_site = getSite()
     security_manager = getSecurityManager()
     parent_app = parent_request.PARENTS[-1]
@@ -71,7 +74,9 @@ def subrequest(url, root=None, stdout=None):
         if vurl_parts is not None:
             # Use the virtual host root
             path_past_root = unquote(vurl_parts[-1])
-            root_path = normpath(parent_request['PATH_INFO']).rstrip('/')[:-len(path_past_root) or None]
+            root_path = normpath(
+                parent_request['PATH_INFO']
+            ).rstrip('/')[:-len(path_past_root) or None]
             if root is None:
                 path = root_path + path
             else:
@@ -92,9 +97,13 @@ def subrequest(url, root=None, stdout=None):
         path = normpath(path)
     request = parent_request.clone()
     for name, parent_value in parent_request.other.items():
-        if name in OTHER_IGNORE or OTHER_IGNORE_RE.match(name) or name.startswith('_'):
+        if name in OTHER_IGNORE \
+           or OTHER_IGNORE_RE.match(name) \
+           or name.startswith('_'):
             continue
         request.other[name] = parent_value
+    for key, value in parent_request.response.cookies.items():
+        request.cookies[key] = value['value']
     request['PARENT_REQUEST'] = parent_request
     alsoProvides(request, ISubRequest)
     try:
@@ -104,9 +113,9 @@ def subrequest(url, root=None, stdout=None):
         request['PARENTS'] = [app]
         response = request.response
         response.__class__ = SubResponse
-        response.stderr = None # only used on retry it seems
+        response.stderr = None  # only used on retry it seems
         if stdout is None:
-            stdout = StringIO() # It might be possible to optimize this
+            stdout = StringIO()  # It might be possible to optimize this
         response.stdout = stdout
         environ = request.environ
         environ['PATH_INFO'] = path
@@ -138,4 +147,3 @@ def subrequest(url, root=None, stdout=None):
         setRequest(parent_request)
         setSite(parent_site)
         setSecurityManager(security_manager)
-
diff --git a/plone/subrequest/subresponse.py b/plone/subrequest/subresponse.py
index 2e89a4f..d8c84a9 100644
--- a/plone/subrequest/subresponse.py
+++ b/plone/subrequest/subresponse.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 from ZPublisher.HTTPResponse import HTTPResponse
 from ZPublisher.Iterators import IStreamIterator
 try:
@@ -6,6 +7,7 @@
     class BlobStreamIterator:
         pass
 
+
 class SubResponse(HTTPResponse):
 
     def setBody(self, body, title='', is_error=0, **kw):
@@ -14,8 +16,10 @@ def setBody(self, body, title='', is_error=0, **kw):
             return HTTPResponse.setBody(self, body, title, is_error, **kw)
         assert not self._wrote
         if isinstance(body, BlobStreamIterator):
-            body = body.blob # A BlobFile
-        if hasattr(body, 'seek') and hasattr(body, 'read') and hasattr(body, 'close'):
+            body = body.blob  # A BlobFile
+        if hasattr(body, 'seek') \
+           and hasattr(body, 'read') and \
+           hasattr(body, 'close'):
             self.stdout = body
             self._wrote = 1
             return
diff --git a/plone/subrequest/testing.py b/plone/subrequest/testing.py
index 1d2ee64..6a3ba0d 100644
--- a/plone/subrequest/testing.py
+++ b/plone/subrequest/testing.py
@@ -1,9 +1,12 @@
-import OFS.Folder
+# -*- coding: utf-8 -*-
 from Products.Five.browser import BrowserView
 from five.localsitemanager import make_site
 from plone.subrequest import subrequest
-from plone.testing import Layer, z2, zodb, zca
-from zope.globalrequest import getRequest, setRequest
+from plone.testing import Layer
+from plone.testing import z2
+from plone.testing import zca
+from plone.testing import zodb
+from zope.globalrequest import setRequest
 
 
 class CookieView(BrowserView):
@@ -20,7 +23,6 @@ def __init__(self, context, request):
         self.keys = self.request.keys()
 
     def __call__(self):
-        response = self.request.response
         return str(self.keys)
 
 
@@ -91,17 +93,23 @@ def __call__(self):
 def singleton(cls):
     return cls()
 
+
 @singleton
 class PLONE_SUBREQEST_FIXTURE(Layer):
     defaultBases = (z2.STARTUP,)
 
     def setUp(self):
         # Stack a new DemoStorage on top of the one from z2.STARTUP.
-        self['zodbDB'] = zodb.stackDemoStorage(self.get('zodbDB'), name='PloneSubRequestFixture')
+        self['zodbDB'] = zodb.stackDemoStorage(
+            self.get('zodbDB'),
+            name='PloneSubRequestFixture'
+        )
 
         # Create a new global registry
         zca.pushGlobalRegistry()
-        self['configurationContext'] = context = zca.stackConfigurationContext(self.get('configurationContext'))
+        self['configurationContext'] = context = zca.stackConfigurationContext(
+            self.get('configurationContext')
+        )
 
         # Load out ZCML
         from zope.configuration import xmlconfig
@@ -111,7 +119,8 @@ def setUp(self):
         with z2.zopeApp() as app:
             # Enable virtual hosting
             z2.installProduct(app, 'Products.SiteAccess')
-            from Products.SiteAccess.VirtualHostMonster import VirtualHostMonster
+            from Products.SiteAccess.VirtualHostMonster import \
+                VirtualHostMonster
             vhm = VirtualHostMonster()
             app._setObject(vhm.getId(), vhm, suppress_events=True)
             # With suppress_events=False, this is called twice...
@@ -149,6 +158,12 @@ def testTearDown(self):
         setRequest(None)
 
 
-INTEGRATION_TESTING = PloneSubrequestLifecycle(bases=(PLONE_SUBREQEST_FIXTURE,), name="PloneSubrequest:Integration")
-FUNCTIONAL_TESTING = z2.FunctionalTesting(bases=(PLONE_SUBREQEST_FIXTURE,), name="PloneSubrequest:Functional")
+INTEGRATION_TESTING = PloneSubrequestLifecycle(
+    bases=(PLONE_SUBREQEST_FIXTURE,),
+    name="PloneSubrequest:Integration"
+)
+FUNCTIONAL_TESTING = z2.FunctionalTesting(
+    bases=(PLONE_SUBREQEST_FIXTURE,),
+    name="PloneSubrequest:Functional"
+)
 
diff --git a/plone/subrequest/tests.py b/plone/subrequest/tests.py
index a7d7c1d..5ee13aa 100644
--- a/plone/subrequest/tests.py
+++ b/plone/subrequest/tests.py
@@ -1,21 +1,29 @@
+# -*- coding: utf-8 -*-
+from plone.subrequest import subrequest
+from plone.subrequest.testing import FUNCTIONAL_TESTING
+from plone.subrequest.testing import INTEGRATION_TESTING
+from plone.testing import z2
+from zope.globalrequest import getRequest
+from zope.site.hooks import getSite
 import manuel.doctest
 import manuel.testcase
 import manuel.testing
 import unittest2 as unittest
 
-from plone.subrequest import subrequest
-from plone.subrequest.testing import INTEGRATION_TESTING, FUNCTIONAL_TESTING
-from plone.testing import z2
-from zope.globalrequest import getRequest
-from zope.site.hooks import getSite
 
 def traverse(url):
     request = getRequest()
-    traversed = request.traverse(url)
+    request.traverse(url)
     request.processInputs()
     request['PATH_INFO'] = url
     return request
 
+VH_TPL = (
+    "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot"
+    "/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s"
+)
+NOHOST_VH_TPL = 'http://nohost' + VH_TPL
+
 
 class FunctionalTests(unittest.TestCase):
     layer = FUNCTIONAL_TESTING
@@ -30,7 +38,7 @@ def test_absolute(self):
     def test_virtual_hosting(self):
         parts = ('folder1', 'folder1A/@@url')
         expect = 'folder1A'
-        url = "http://nohost/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % parts
+        url = NOHOST_VH_TPL % parts
         expect_url = 'http://example.org/fizz/buzz/fizzbuzz/%s' % expect
         self.browser.open(url)
         self.assertEqual(self.browser.contents, expect_url)
@@ -38,7 +46,7 @@ def test_virtual_hosting(self):
     def test_virtual_hosting_relative(self):
         parts = ('folder1', 'folder1A?url=folder1Ai/@@url')
         expect = 'folder1A/folder1Ai'
-        url = "http://nohost/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % parts
+        url = NOHOST_VH_TPL % parts
         expect_url = 'http://example.org/fizz/buzz/fizzbuzz/%s' % expect
         self.browser.open(url)
         self.assertEqual(self.browser.contents, expect_url)
@@ -46,7 +54,7 @@ def test_virtual_hosting_relative(self):
     def test_virtual_hosting_absolute(self):
         parts = ('folder1', 'folder1A?url=/folder1B/@@url')
         expect = 'folder1B'
-        url = "http://nohost/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % parts
+        url = NOHOST_VH_TPL % parts
         expect_url = 'http://example.org/fizz/buzz/fizzbuzz/%s' % expect
         self.browser.open(url)
         self.assertEqual(self.browser.contents, expect_url)
@@ -57,35 +65,56 @@ class IntegrationTests(unittest.TestCase):
 
     def test_absolute(self):
         response = subrequest('/folder1/@@url')
-        self.assertEqual(response.body, 'http://nohost/folder1')
+        self.assertEqual(
+            response.body,
+            'http://nohost/folder1'
+        )
 
     def test_absolute_query(self):
         response = subrequest('/folder1/folder1A?url=/folder2/folder2A/@@url')
-        self.assertEqual(response.body, 'http://nohost/folder2/folder2A')
+        self.assertEqual(
+            response.body,
+            'http://nohost/folder2/folder2A'
+        )
 
     def test_relative(self):
         response = subrequest('/folder1?url=folder1B/@@url')
         # /folder1 resolves to /folder1/@@test
-        self.assertEqual(response.body, 'http://nohost/folder1/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://nohost/folder1/folder1B'
+        )
 
     def test_root(self):
         response = subrequest('/')
-        self.assertEqual(response.body, 'Root: http://nohost')
+        self.assertEqual(
+            response.body,
+            'Root: http://nohost'
+        )
 
     def test_virtual_hosting(self):
-        url = "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % ('folder1', 'folder1A/@@url')
+        url = VH_TPL % ('folder1', 'folder1A/@@url')
         response = subrequest(url)
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1A')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1A'
+        )
 
     def test_virtual_hosting_unicode(self):
-        url = u"/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % ('folder1', 'folder1A/@@url')
+        url = VH_TPL % ('folder1', 'folder1A/@@url')
         response = subrequest(url)
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1A')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1A'
+        )
 
     def test_virtual_hosting_relative(self):
-        url = "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % ('folder1', 'folder1A?url=folder1B/@@url')
+        url = VH_TPL % ('folder1', 'folder1A?url=folder1B/@@url')
         response = subrequest(url)
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1B'
+        )
 
     def test_not_found(self):
         response = subrequest('/notfound')
@@ -93,53 +122,85 @@ def test_not_found(self):
 
     def test_virtual_host_root(self):
         parts = ('folder1', 'folder1A/@@url')
-        url = "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % parts
+        url = VH_TPL % parts
         traverse(url)
         response = subrequest('/folder1B/@@url')
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1B'
+        )
 
     def test_virtual_host_root_with_root(self):
         parts = ('folder1', 'folder1A/@@url')
-        url = "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/%s" % parts
+        url = VH_TPL % parts
         traverse(url)
         app = self.layer['app']
         response = subrequest('/folder1Ai/@@url', root=app.folder1.folder1A)
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1A/folder1Ai')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1A/folder1Ai'
+        )
 
     def test_virtual_host_space(self):
         parts = ('folder2', 'folder2A/folder2Ai space/@@url')
-        url = "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/%s" % parts
+        url = (
+            "/VirtualHostBase/http/example.org:80/%s/VirtualHostRoot/%s" %
+            parts
+        )
         traverse(url)
         app = self.layer['app']
         response = subrequest('/folder2A/@@url', root=app.folder2)
-        self.assertEqual(response.body, 'http://example.org/folder2A')
+        self.assertEqual(
+            response.body,
+            'http://example.org/folder2A'
+        )
 
     def test_virtual_host_root_at_root(self):
-        url = "/VirtualHostBase/http/example.org:80/folder1/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz"
+        url = (
+            "/VirtualHostBase/http/example.org:80/folder1/VirtualHostRoot/"
+            "_vh_fizz/_vh_buzz/_vh_fizzbuzz"
+        )
         traverse(url)
         response = subrequest('/folder1B/@@url')
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1B'
+        )
 
     def test_virtual_host_root_at_root_trailing(self):
-        url = "/VirtualHostBase/http/example.org:80/folder1/VirtualHostRoot/_vh_fizz/_vh_buzz/_vh_fizzbuzz/"
+        url = (
+            "/VirtualHostBase/http/example.org:80/folder1/VirtualHostRoot/"
+            "_vh_fizz/_vh_buzz/_vh_fizzbuzz/"
+        )
         traverse(url)
         response = subrequest('/folder1B/@@url')
-        self.assertEqual(response.body, 'http://example.org/fizz/buzz/fizzbuzz/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/buzz/fizzbuzz/folder1B'
+        )
 
     def test_virtual_host_with_root_double_slash(self):
-        url = "/VirtualHostBase/http/example.org:80/VirtualHostRoot/_vh_fizz/folder1/folder2//folder2A"
+        url = (
+            "/VirtualHostBase/http/example.org:80/VirtualHostRoot/"
+            "_vh_fizz/folder1/folder2//folder2A"
+        )
         traverse(url)
         root = self.layer['app'].folder1
         response = subrequest('/folder1B/@@url', root=root)
-        self.assertEqual(response.body, 'http://example.org/fizz/folder1/folder1B')
+        self.assertEqual(
+            response.body,
+            'http://example.org/fizz/folder1/folder1B'
+        )
 
     def test_subrequest_root(self):
         app = self.layer['app']
         response = subrequest('/folder1Ai/@@url', root=app.folder1.folder1A)
-        self.assertEqual(response.body, 'http://nohost/folder1/folder1A/folder1Ai')
+        self.assertEqual(
+            response.body,
+            'http://nohost/folder1/folder1A/folder1Ai'
+        )
 
     def test_site(self):
-        app = self.layer['app']
         traverse('/folder1')
         site_url1 = getSite().absolute_url()
         response = subrequest('/folder2/@@url')
@@ -152,6 +213,12 @@ def test_parameter(self):
         self.assertTrue('foo' in response.body)
 
     def test_cookies(self):
+        request = getRequest()
+        request.response.setCookie('cookie_name', 'cookie_value')
+        response = subrequest('/folder1/@@parameter')
+        self.assertTrue("'cookie_name'" in response.body)
+
+    def test_subrequest_cookies(self):
         response = subrequest('/folder1/@@test?url=/folder1/cookie')
         self.assertTrue('cookie_name' in response.cookies)
 
@@ -198,7 +265,11 @@ def test_suite():
     suite = unittest.defaultTestLoader.loadTestsFromName(__name__)
     m = manuel.doctest.Manuel()
     m += manuel.testcase.MarkerManuel()
-    doctests = manuel.testing.TestSuite(m, 'usage.txt', globs=dict(subrequest=subrequest, traverse=traverse))
+    doctests = manuel.testing.TestSuite(
+        m,
+        'usage.txt',
+        globs=dict(subrequest=subrequest, traverse=traverse)
+    )
     # Set the layer on the manuel doctests for now
     for test in doctests:
         test.layer = INTEGRATION_TESTING
diff --git a/setup.py b/setup.py
index eee1369..ee51e16 100644
--- a/setup.py
+++ b/setup.py
@@ -1,15 +1,15 @@
 import os.path
 from setuptools import setup, find_packages
 
-version = '1.6.8.dev0'
+version = '1.6.9.dev0'
 
 setup(
-    name = 'plone.subrequest',
-    version = version,
-    description = 'Subrequests for Zope2',
-    long_description=open("README.txt").read() + "\n\n" +
+    name='plone.subrequest',
+    version=version,
+    description='Subrequests for Zope2',
+    long_description=open("README.rst").read() + "\n\n" +
         open(os.path.join('plone', 'subrequest', 'usage.txt')).read() + "\n\n" +
-        open("CHANGES.txt").read(),
+        open("CHANGES.rst").read(),
     classifiers=[
         "Environment :: Web Environment",
         "Framework :: Plone",
@@ -41,6 +41,9 @@
             'manuel',
             'plone.testing [z2]',
             'plone.app.blob',
+
+            # see https://github.com/plone/plone.app.blob/issues/19
+            'Products.MimetypesRegistry',
             ],
         },
     entry_points="""
bloodbare added a commit that referenced this pull request Mar 25, 2015
Branch: refs/heads/master
Date: 2015-03-20T09:46:14+01:00
Author: Ramon Navarro Bosch (bloodbare) <ramon.nb@gmail.com>
Commit: plone/plone.theme@0eb42ea

test layer is testing layer

Files changed:
M plone/theme/tests/testBrowserLayerPrecedence.py
Repository: plone.theme
Branch: refs/heads/master
Date: 2015-03-25T19:26:17+01:00
Author: Timo Stollenwerk (tisto) <tisto@plone.org>
Commit: plone/plone.theme@275d0f9

Merge branch 'master' into plip13091

Files changed:
M CHANGES.txt
M setup.py
Repository: plone.theme
Branch: refs/heads/master
Date: 2015-03-25T21:36:21+01:00
Author: Ramon Navarro Bosch (bloodbare) <ramon.nb@gmail.com>
Commit: plone/plone.theme@4fd2859

Merge pull request #2 from plone/plip13091

test layer is testing layer

Files changed:
M plone/theme/tests/testBrowserLayerPrecedence.py
bloodbare added a commit that referenced this pull request Mar 25, 2015
Branch: refs/heads/master
Date: 2015-03-20T09:46:14+01:00
Author: Ramon Navarro Bosch (bloodbare) <ramon.nb@gmail.com>
Commit: plone/plone.theme@0eb42ea

test layer is testing layer

Files changed:
M plone/theme/tests/testBrowserLayerPrecedence.py
Repository: plone.theme
Branch: refs/heads/master
Date: 2015-03-25T19:26:17+01:00
Author: Timo Stollenwerk (tisto) <tisto@plone.org>
Commit: plone/plone.theme@275d0f9

Merge branch 'master' into plip13091

Files changed:
M CHANGES.txt
M setup.py
Repository: plone.theme
Branch: refs/heads/master
Date: 2015-03-25T21:36:21+01:00
Author: Ramon Navarro Bosch (bloodbare) <ramon.nb@gmail.com>
Commit: plone/plone.theme@4fd2859

Merge pull request #2 from plone/plip13091

test layer is testing layer

Files changed:
M plone/theme/tests/testBrowserLayerPrecedence.py
jensens added a commit that referenced this pull request May 20, 2015
Branch: refs/heads/master
Date: 2015-05-20T09:41:22+02:00
Author: Andrea Cecchi (cekk) <andrea.cecchi85@gmail.com>
Commit: plone/Products.CMFFormController@a3dd466

additional check for entry deletion

Files changed:
M Products/CMFFormController/BaseControllerPageTemplate.py
Repository: Products.CMFFormController
Branch: refs/heads/master
Date: 2015-05-20T09:41:34+02:00
Author: Andrea Cecchi (cekk) <andrea.cecchi85@gmail.com>
Commit: plone/Products.CMFFormController@96e3e4f

updated changes

Files changed:
M CHANGES.txt
Repository: Products.CMFFormController
Branch: refs/heads/master
Date: 2015-05-20T13:23:51+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/Products.CMFFormController@12167fb

Merge pull request #2 from plone/submitted_secure_deletion

form.submitted secure deletion

Files changed:
M CHANGES.txt
M Products/CMFFormController/BaseControllerPageTemplate.py
jensens added a commit that referenced this pull request May 20, 2015
Branch: refs/heads/master
Date: 2015-05-20T09:41:22+02:00
Author: Andrea Cecchi (cekk) <andrea.cecchi85@gmail.com>
Commit: plone/Products.CMFFormController@a3dd466

additional check for entry deletion

Files changed:
M Products/CMFFormController/BaseControllerPageTemplate.py
Repository: Products.CMFFormController
Branch: refs/heads/master
Date: 2015-05-20T09:41:34+02:00
Author: Andrea Cecchi (cekk) <andrea.cecchi85@gmail.com>
Commit: plone/Products.CMFFormController@96e3e4f

updated changes

Files changed:
M CHANGES.txt
Repository: Products.CMFFormController
Branch: refs/heads/master
Date: 2015-05-20T13:23:51+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/Products.CMFFormController@12167fb

Merge pull request #2 from plone/submitted_secure_deletion

form.submitted secure deletion

Files changed:
M CHANGES.txt
M Products/CMFFormController/BaseControllerPageTemplate.py
jensens added a commit that referenced this pull request Jul 9, 2015
Branch: refs/heads/master
Date: 2015-05-11T21:55:03+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.behavior@2408fbe

minor housekeeping

Files changed:
M plone/behavior/annotation.rst
M setup.py
Repository: plone.behavior
Branch: refs/heads/master
Date: 2015-05-11T21:55:34+02:00
Author: Robert Niederreiter (rnixx) <office@squarewave.at>
Commit: plone/plone.behavior@23e3233

Add name to behavior directive. This name can be used to lookup behavior registrations by new plone.behaviors.registration.lookup_behavior function.

Files changed:
M README.rst
M docs/CHANGES.rst
M plone/behavior/__init__.py
M plone/behavior/directives.rst
M plone/behavior/metaconfigure.py
M plone/behavior/registration.py
Repository: plone.behavior
Branch: refs/heads/master
Date: 2015-05-11T21:55:35+02:00
Author: Robert Niederreiter (rnixx) <office@squarewave.at>
Commit: plone/plone.behavior@d357770

lookup_behavior_registration instead of lookup_behavior

Files changed:
M docs/CHANGES.rst
M plone/behavior/directives.rst
M plone/behavior/registration.py
Repository: plone.behavior
Branch: refs/heads/master
Date: 2015-05-11T21:55:35+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.behavior@3b796b0

make repr more verbose in order to support external developers with better inofmration about whats going on

Files changed:
M plone/behavior/directives.rst
M plone/behavior/registration.py
Repository: plone.behavior
Branch: refs/heads/master
Date: 2015-05-11T22:04:08+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.behavior@9ef9099

register always identifier and if given additionally with name

Files changed:
M plone/behavior/metaconfigure.py
Repository: plone.behavior
Branch: refs/heads/master
Date: 2015-05-27T12:35:03+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.behavior@76cc565

documented zcml directives name attribute in readme

Files changed:
M README.rst
Repository: plone.behavior
Branch: refs/heads/master
Date: 2015-05-27T12:37:46+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.behavior@0f1f08a

refine sentence

Files changed:
M README.rst
Repository: plone.behavior
Branch: refs/heads/master
Date: 2015-05-27T12:59:52+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.behavior@74d60b8

typo, thx @rnixx

Files changed:
M README.rst
Repository: plone.behavior
Branch: refs/heads/master
Date: 2015-07-09T10:09:53+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.behavior@e1de125

Merge pull request #2 from plone/rnixx_behavior_name_and_lookup

PLIP 20239: Behavior name in ZCML directive, registration lookup utility

Files changed:
M README.rst
M docs/CHANGES.rst
M plone/behavior/__init__.py
M plone/behavior/annotation.rst
M plone/behavior/directives.rst
M plone/behavior/metaconfigure.py
M plone/behavior/registration.py
M setup.py
jensens added a commit that referenced this pull request Jul 9, 2015
Branch: refs/heads/master
Date: 2015-05-11T21:55:03+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.behavior@2408fbe

minor housekeeping

Files changed:
M plone/behavior/annotation.rst
M setup.py
Repository: plone.behavior
Branch: refs/heads/master
Date: 2015-05-11T21:55:34+02:00
Author: Robert Niederreiter (rnixx) <office@squarewave.at>
Commit: plone/plone.behavior@23e3233

Add name to behavior directive. This name can be used to lookup behavior registrations by new plone.behaviors.registration.lookup_behavior function.

Files changed:
M README.rst
M docs/CHANGES.rst
M plone/behavior/__init__.py
M plone/behavior/directives.rst
M plone/behavior/metaconfigure.py
M plone/behavior/registration.py
Repository: plone.behavior
Branch: refs/heads/master
Date: 2015-05-11T21:55:35+02:00
Author: Robert Niederreiter (rnixx) <office@squarewave.at>
Commit: plone/plone.behavior@d357770

lookup_behavior_registration instead of lookup_behavior

Files changed:
M docs/CHANGES.rst
M plone/behavior/directives.rst
M plone/behavior/registration.py
Repository: plone.behavior
Branch: refs/heads/master
Date: 2015-05-11T21:55:35+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.behavior@3b796b0

make repr more verbose in order to support external developers with better inofmration about whats going on

Files changed:
M plone/behavior/directives.rst
M plone/behavior/registration.py
Repository: plone.behavior
Branch: refs/heads/master
Date: 2015-05-11T22:04:08+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.behavior@9ef9099

register always identifier and if given additionally with name

Files changed:
M plone/behavior/metaconfigure.py
Repository: plone.behavior
Branch: refs/heads/master
Date: 2015-05-27T12:35:03+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.behavior@76cc565

documented zcml directives name attribute in readme

Files changed:
M README.rst
Repository: plone.behavior
Branch: refs/heads/master
Date: 2015-05-27T12:37:46+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.behavior@0f1f08a

refine sentence

Files changed:
M README.rst
Repository: plone.behavior
Branch: refs/heads/master
Date: 2015-05-27T12:59:52+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.behavior@74d60b8

typo, thx @rnixx

Files changed:
M README.rst
Repository: plone.behavior
Branch: refs/heads/master
Date: 2015-07-09T10:09:53+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.behavior@e1de125

Merge pull request #2 from plone/rnixx_behavior_name_and_lookup

PLIP 20239: Behavior name in ZCML directive, registration lookup utility

Files changed:
M README.rst
M docs/CHANGES.rst
M plone/behavior/__init__.py
M plone/behavior/annotation.rst
M plone/behavior/directives.rst
M plone/behavior/metaconfigure.py
M plone/behavior/registration.py
M setup.py
vangheem added a commit that referenced this pull request Jul 13, 2015
Branch: refs/heads/master
Date: 2015-07-12T21:45:10Z
Author: Fulvio Casali (fulv) <fulviocasali@gmail.com>
Commit: plone/plone.app.lockingbehavior@728ef6e

Remove superfluous 'for'.

Files changed:
M plone/app/lockingbehavior/configure.zcml
Repository: plone.app.lockingbehavior
Branch: refs/heads/master
Date: 2015-07-13T07:30:51+02:00
Author: Nathan Van Gheem (vangheem) <vangheem@gmail.com>
Commit: plone/plone.app.lockingbehavior@8a8295b

Merge pull request #2 from plone/fulv-warning-plone-behavior

Fixes plone/Products.CMFPlone#669

Files changed:
M plone/app/lockingbehavior/configure.zcml
jensens added a commit that referenced this pull request Jul 27, 2015
Branch: refs/heads/master
Date: 2015-07-27T14:40:44+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.folder@87ad14b

pep8 cleanup, less id builtin usage, depend on Products.CMFCore and remove fake cmf

Files changed:
M CHANGES.rst
M setup.py
M src/plone/__init__.py
M src/plone/folder/__init__.py
M src/plone/folder/default.py
M src/plone/folder/interfaces.py
M src/plone/folder/ordered.py
M src/plone/folder/tests/__init__.py
M src/plone/folder/tests/benchmarks.py
M src/plone/folder/tests/layer.py
M src/plone/folder/tests/test_dict_interface.py
M src/plone/folder/tests/test_integration.py
M src/plone/folder/tests/test_ordering_adapters.py
M src/plone/folder/tests/test_ordersupport.py
M src/plone/folder/tests/test_partialordering.py
M src/plone/folder/tests/test_unorderedordering.py
M src/plone/folder/tests/test_webdav.py
M src/plone/folder/tests/utils.py
M src/plone/folder/unordered.py
D src/plone/folder/cmf.py
Repository: plone.folder
Branch: refs/heads/master
Date: 2015-07-27T17:11:18+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.folder@2c7d4b4

doc style for README, add note about sources

Files changed:
M README.rst
Repository: plone.folder
Branch: refs/heads/master
Date: 2015-07-27T17:20:28+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.folder@08cd5df

typo

Files changed:
M CHANGES.rst
Repository: plone.folder
Branch: refs/heads/master
Date: 2015-07-27T19:04:41+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.folder@b6a7aad

Merge pull request #2 from plone/jensens-pep8-cleanup

pep8 cleanup, less id builtin usage, depend on Products.CMFCore

Files changed:
M CHANGES.rst
M README.rst
M setup.py
M src/plone/__init__.py
M src/plone/folder/__init__.py
M src/plone/folder/default.py
M src/plone/folder/interfaces.py
M src/plone/folder/ordered.py
M src/plone/folder/tests/__init__.py
M src/plone/folder/tests/benchmarks.py
M src/plone/folder/tests/layer.py
M src/plone/folder/tests/test_dict_interface.py
M src/plone/folder/tests/test_integration.py
M src/plone/folder/tests/test_ordering_adapters.py
M src/plone/folder/tests/test_ordersupport.py
M src/plone/folder/tests/test_partialordering.py
M src/plone/folder/tests/test_unorderedordering.py
M src/plone/folder/tests/test_webdav.py
M src/plone/folder/tests/utils.py
M src/plone/folder/unordered.py
D src/plone/folder/cmf.py
jensens added a commit that referenced this pull request Jul 27, 2015
Branch: refs/heads/master
Date: 2015-07-27T14:40:44+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.folder@87ad14b

pep8 cleanup, less id builtin usage, depend on Products.CMFCore and remove fake cmf

Files changed:
M CHANGES.rst
M setup.py
M src/plone/__init__.py
M src/plone/folder/__init__.py
M src/plone/folder/default.py
M src/plone/folder/interfaces.py
M src/plone/folder/ordered.py
M src/plone/folder/tests/__init__.py
M src/plone/folder/tests/benchmarks.py
M src/plone/folder/tests/layer.py
M src/plone/folder/tests/test_dict_interface.py
M src/plone/folder/tests/test_integration.py
M src/plone/folder/tests/test_ordering_adapters.py
M src/plone/folder/tests/test_ordersupport.py
M src/plone/folder/tests/test_partialordering.py
M src/plone/folder/tests/test_unorderedordering.py
M src/plone/folder/tests/test_webdav.py
M src/plone/folder/tests/utils.py
M src/plone/folder/unordered.py
D src/plone/folder/cmf.py
Repository: plone.folder
Branch: refs/heads/master
Date: 2015-07-27T17:11:18+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.folder@2c7d4b4

doc style for README, add note about sources

Files changed:
M README.rst
Repository: plone.folder
Branch: refs/heads/master
Date: 2015-07-27T17:20:28+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.folder@08cd5df

typo

Files changed:
M CHANGES.rst
Repository: plone.folder
Branch: refs/heads/master
Date: 2015-07-27T19:04:41+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.folder@b6a7aad

Merge pull request #2 from plone/jensens-pep8-cleanup

pep8 cleanup, less id builtin usage, depend on Products.CMFCore

Files changed:
M CHANGES.rst
M README.rst
M setup.py
M src/plone/__init__.py
M src/plone/folder/__init__.py
M src/plone/folder/default.py
M src/plone/folder/interfaces.py
M src/plone/folder/ordered.py
M src/plone/folder/tests/__init__.py
M src/plone/folder/tests/benchmarks.py
M src/plone/folder/tests/layer.py
M src/plone/folder/tests/test_dict_interface.py
M src/plone/folder/tests/test_integration.py
M src/plone/folder/tests/test_ordering_adapters.py
M src/plone/folder/tests/test_ordersupport.py
M src/plone/folder/tests/test_partialordering.py
M src/plone/folder/tests/test_unorderedordering.py
M src/plone/folder/tests/test_webdav.py
M src/plone/folder/tests/utils.py
M src/plone/folder/unordered.py
D src/plone/folder/cmf.py
datakurre added a commit that referenced this pull request Aug 16, 2015
Branch: refs/heads/master
Date: 2015-08-16T21:09:13+03:00
Author: Asko Soukka (datakurre) <asko.soukka@iki.fi>
Commit: plone/plone.themepreview@d2cf284

Upgrade bootstrap.py

Files changed:
M bootstrap.py
Repository: plone.themepreview
Branch: refs/heads/master
Date: 2015-08-16T21:43:34+03:00
Author: Asko Soukka (datakurre) <asko.soukka@iki.fi>
Commit: plone/plone.themepreview@5c932de

Add Plone-version specific example buildouts

Files changed:
A base.cfg
A plone-4.x.cfg
A plone-5.x.cfg
M .travis.yml
M buildout.cfg
D travis.cfg
Repository: plone.themepreview
Branch: refs/heads/master
Date: 2015-08-16T21:47:10+03:00
Author: Asko Soukka (datakurre) <asko.soukka@iki.fi>
Commit: plone/plone.themepreview@398aa1c

Merge pull request #2 from plone/datakurre-travis-matrix

Update Travis-CI -build

Files changed:
A base.cfg
A plone-4.x.cfg
A plone-5.x.cfg
M .travis.yml
M bootstrap.py
M buildout.cfg
D travis.cfg
jensens added a commit that referenced this pull request Sep 28, 2015
Branch: refs/heads/master
Date: 2015-09-23T13:30:30-07:00
Author: David Glick (davisagli) <david@glicksoftware.com>
Commit: plone/plone.intelligenttext@5751062

add travis configuration

Files changed:
A .travis.yml
A tox.ini
Repository: plone.intelligenttext
Branch: refs/heads/master
Date: 2015-09-23T13:35:06-07:00
Author: David Glick (davisagli) <david@glicksoftware.com>
Commit: plone/plone.intelligenttext@285fe68

fix test command

Files changed:
M .gitignore
M tox.ini
Repository: plone.intelligenttext
Branch: refs/heads/master
Date: 2015-09-23T14:13:07-07:00
Author: David Glick (davisagli) <david@glicksoftware.com>
Commit: plone/plone.intelligenttext@528ecf2

work toward python 3 compatibility

Files changed:
M CHANGES.rst
M plone/intelligenttext/README.txt
M plone/intelligenttext/tests.py
M plone/intelligenttext/transforms.py
M tox.ini
Repository: plone.intelligenttext
Branch: refs/heads/master
Date: 2015-09-23T14:46:01-07:00
Author: David Glick (davisagli) <david@glicksoftware.com>
Commit: plone/plone.intelligenttext@c3fdbc8

fix handling of entities

Files changed:
M plone/intelligenttext/README.txt
M plone/intelligenttext/tests.py
M plone/intelligenttext/transforms.py
Repository: plone.intelligenttext
Branch: refs/heads/master
Date: 2015-09-23T14:48:17-07:00
Author: David Glick (davisagli) <david@glicksoftware.com>
Commit: plone/plone.intelligenttext@b919ffc

don't test python 3.2 (no u'' literals) or 3.5 (not on travis yet)

Files changed:
M .travis.yml
M tox.ini
Repository: plone.intelligenttext
Branch: refs/heads/master
Date: 2015-09-25T12:33:21-07:00
Author: David Glick (davisagli) <david@glicksoftware.com>
Commit: plone/plone.intelligenttext@eb003a6

increment version

Files changed:
M CHANGES.rst
M setup.py
Repository: plone.intelligenttext
Branch: refs/heads/master
Date: 2015-09-28T13:48:51+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.intelligenttext@433e43b

Merge pull request #2 from plone/travis

Python 3 compatibility

Files changed:
A .travis.yml
A tox.ini
M .gitignore
M CHANGES.rst
M plone/intelligenttext/README.txt
M plone/intelligenttext/tests.py
M plone/intelligenttext/transforms.py
M setup.py
jensens added a commit that referenced this pull request Sep 28, 2015
Branch: refs/heads/master
Date: 2015-09-23T13:30:30-07:00
Author: David Glick (davisagli) <david@glicksoftware.com>
Commit: plone/plone.intelligenttext@5751062

add travis configuration

Files changed:
A .travis.yml
A tox.ini
Repository: plone.intelligenttext
Branch: refs/heads/master
Date: 2015-09-23T13:35:06-07:00
Author: David Glick (davisagli) <david@glicksoftware.com>
Commit: plone/plone.intelligenttext@285fe68

fix test command

Files changed:
M .gitignore
M tox.ini
Repository: plone.intelligenttext
Branch: refs/heads/master
Date: 2015-09-23T14:13:07-07:00
Author: David Glick (davisagli) <david@glicksoftware.com>
Commit: plone/plone.intelligenttext@528ecf2

work toward python 3 compatibility

Files changed:
M CHANGES.rst
M plone/intelligenttext/README.txt
M plone/intelligenttext/tests.py
M plone/intelligenttext/transforms.py
M tox.ini
Repository: plone.intelligenttext
Branch: refs/heads/master
Date: 2015-09-23T14:46:01-07:00
Author: David Glick (davisagli) <david@glicksoftware.com>
Commit: plone/plone.intelligenttext@c3fdbc8

fix handling of entities

Files changed:
M plone/intelligenttext/README.txt
M plone/intelligenttext/tests.py
M plone/intelligenttext/transforms.py
Repository: plone.intelligenttext
Branch: refs/heads/master
Date: 2015-09-23T14:48:17-07:00
Author: David Glick (davisagli) <david@glicksoftware.com>
Commit: plone/plone.intelligenttext@b919ffc

don't test python 3.2 (no u'' literals) or 3.5 (not on travis yet)

Files changed:
M .travis.yml
M tox.ini
Repository: plone.intelligenttext
Branch: refs/heads/master
Date: 2015-09-25T12:33:21-07:00
Author: David Glick (davisagli) <david@glicksoftware.com>
Commit: plone/plone.intelligenttext@eb003a6

increment version

Files changed:
M CHANGES.rst
M setup.py
Repository: plone.intelligenttext
Branch: refs/heads/master
Date: 2015-09-28T13:48:51+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.intelligenttext@433e43b

Merge pull request #2 from plone/travis

Python 3 compatibility

Files changed:
A .travis.yml
A tox.ini
M .gitignore
M CHANGES.rst
M plone/intelligenttext/README.txt
M plone/intelligenttext/tests.py
M plone/intelligenttext/transforms.py
M setup.py
gforcada added a commit that referenced this pull request Nov 25, 2015
Branch: refs/heads/master
Date: 2015-11-20T13:06:54+01:00
Author: Stephan Klinger (staeff) <stephan.klinger@freitag.de>
Commit: plone/plone.schema@f358904

Use plone i18n domain

Files changed:
M buildout.cfg
M plone/schema/__init__.py
M plone/schema/browser/configure.zcml
M plone/schema/configure.zcml
D rebuild_i18n.sh
Repository: plone.schema
Branch: refs/heads/master
Date: 2015-11-20T16:12:14+01:00
Author: Stephan Klinger (staeff) <stephan.klinger@freitag.de>
Commit: plone/plone.schema@46d1bff

Remove i18n:registerTranslations directive

Files changed:
M CHANGES.rst
M plone/schema/configure.zcml
Repository: plone.schema
Branch: refs/heads/master
Date: 2015-11-20T16:20:20+01:00
Author: Stephan Klinger (staeff) <stephan.klinger@freitag.de>
Commit: plone/plone.schema@60467c8

Moved translations to plone.app.locales

Files changed:
D plone/schema/locales/es/LC_MESSAGES/plone.schema.po
D plone/schema/locales/manual.pot
D plone/schema/locales/plone.pot
D plone/schema/locales/plone.schema.pot
Repository: plone.schema
Branch: refs/heads/master
Date: 2015-11-25T11:24:19+01:00
Author: Gil Forcada Codinachs (gforcada) <gil.forcada@freitag.de>
Commit: plone/plone.schema@66acf6f

Merge pull request #2 from plone/staeff-merge-translations

Remove own i18n domain

Files changed:
M CHANGES.rst
M buildout.cfg
M plone/schema/__init__.py
M plone/schema/browser/configure.zcml
M plone/schema/configure.zcml
D plone/schema/locales/es/LC_MESSAGES/plone.schema.po
D plone/schema/locales/manual.pot
D plone/schema/locales/plone.pot
D plone/schema/locales/plone.schema.pot
D rebuild_i18n.sh
jensens added a commit that referenced this pull request Dec 22, 2015
Branch: refs/heads/master
Date: 2015-12-15T18:36:19+01:00
Author: Johannes Raggam (thet) <thetetet@gmail.com>
Commit: plone/plone.memoize@4905a68

move all DocFile tests to doctests and reformat all nicely

Files changed:
A docs/index.rst
A plone/memoize/compress.rst
A plone/memoize/ram.rst
A plone/memoize/request.rst
A plone/memoize/volatile.rst
M plone/memoize/README.rst
M plone/memoize/compress.py
M plone/memoize/forever.rst
M plone/memoize/instance.py
M plone/memoize/instance.rst
M plone/memoize/ram.py
M plone/memoize/request.py
M plone/memoize/tests.py
M plone/memoize/view.rst
M plone/memoize/volatile.py
M setup.py
Repository: plone.memoize
Branch: refs/heads/master
Date: 2015-12-15T18:36:42+01:00
Author: Johannes Raggam (thet) <thetetet@gmail.com>
Commit: plone/plone.memoize@e9dbcbb

warning on instance memoize decorator

Files changed:
M plone/memoize/instance.rst
Repository: plone.memoize
Branch: refs/heads/master
Date: 2015-12-15T18:38:05+01:00
Author: Johannes Raggam (thet) <thetetet@gmail.com>
Commit: plone/plone.memoize@b89d4db

headings

Files changed:
M docs/index.rst
M plone/memoize/compress.rst
M plone/memoize/forever.rst
M plone/memoize/instance.rst
M plone/memoize/ram.rst
M plone/memoize/request.rst
M plone/memoize/view.rst
Repository: plone.memoize
Branch: refs/heads/master
Date: 2015-12-15T19:37:51+01:00
Author: Johannes Raggam (thet) <thetetet@gmail.com>
Commit: plone/plone.memoize@e879ead

fix tests

Files changed:
M plone/memoize/compress.rst
M plone/memoize/ram.rst
M plone/memoize/request.rst
M plone/memoize/tests.py
M plone/memoize/volatile.rst
Repository: plone.memoize
Branch: refs/heads/master
Date: 2015-12-15T20:01:22+01:00
Author: Johannes Raggam (thet) <thetetet@gmail.com>
Commit: plone/plone.memoize@9144cca

fix paths

Files changed:
M docs/index.rst
Repository: plone.memoize
Branch: refs/heads/master
Date: 2015-12-16T00:21:46+01:00
Author: Johannes Raggam (thet) <thetetet@gmail.com>
Commit: plone/plone.memoize@9f809c4

headings, toctree depth, code sections

Files changed:
M docs/index.rst
M plone/memoize/README.rst
M plone/memoize/compress.rst
M plone/memoize/forever.rst
M plone/memoize/instance.rst
M plone/memoize/ram.rst
M plone/memoize/request.rst
M plone/memoize/view.rst
M plone/memoize/volatile.rst
Repository: plone.memoize
Branch: refs/heads/master
Date: 2015-12-16T00:24:43+01:00
Author: Johannes Raggam (thet) <thetetet@gmail.com>
Commit: plone/plone.memoize@b01cc88

changelog

Files changed:
M CHANGES.rst
M plone/memoize/request.py
Repository: plone.memoize
Branch: refs/heads/master
Date: 2015-12-22T15:35:47+01:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.memoize@cf275b0

Merge pull request #2 from plone/thet-restructure-docs

Restructure docs

Files changed:
A docs/index.rst
A plone/memoize/compress.rst
A plone/memoize/ram.rst
A plone/memoize/request.rst
A plone/memoize/volatile.rst
M CHANGES.rst
M plone/memoize/README.rst
M plone/memoize/compress.py
M plone/memoize/forever.rst
M plone/memoize/instance.py
M plone/memoize/instance.rst
M plone/memoize/ram.py
M plone/memoize/request.py
M plone/memoize/tests.py
M plone/memoize/view.rst
M plone/memoize/volatile.py
M setup.py
jensens added a commit that referenced this pull request Dec 22, 2015
Branch: refs/heads/master
Date: 2015-12-15T18:36:19+01:00
Author: Johannes Raggam (thet) <thetetet@gmail.com>
Commit: plone/plone.memoize@4905a68

move all DocFile tests to doctests and reformat all nicely

Files changed:
A docs/index.rst
A plone/memoize/compress.rst
A plone/memoize/ram.rst
A plone/memoize/request.rst
A plone/memoize/volatile.rst
M plone/memoize/README.rst
M plone/memoize/compress.py
M plone/memoize/forever.rst
M plone/memoize/instance.py
M plone/memoize/instance.rst
M plone/memoize/ram.py
M plone/memoize/request.py
M plone/memoize/tests.py
M plone/memoize/view.rst
M plone/memoize/volatile.py
M setup.py
Repository: plone.memoize
Branch: refs/heads/master
Date: 2015-12-15T18:36:42+01:00
Author: Johannes Raggam (thet) <thetetet@gmail.com>
Commit: plone/plone.memoize@e9dbcbb

warning on instance memoize decorator

Files changed:
M plone/memoize/instance.rst
Repository: plone.memoize
Branch: refs/heads/master
Date: 2015-12-15T18:38:05+01:00
Author: Johannes Raggam (thet) <thetetet@gmail.com>
Commit: plone/plone.memoize@b89d4db

headings

Files changed:
M docs/index.rst
M plone/memoize/compress.rst
M plone/memoize/forever.rst
M plone/memoize/instance.rst
M plone/memoize/ram.rst
M plone/memoize/request.rst
M plone/memoize/view.rst
Repository: plone.memoize
Branch: refs/heads/master
Date: 2015-12-15T19:37:51+01:00
Author: Johannes Raggam (thet) <thetetet@gmail.com>
Commit: plone/plone.memoize@e879ead

fix tests

Files changed:
M plone/memoize/compress.rst
M plone/memoize/ram.rst
M plone/memoize/request.rst
M plone/memoize/tests.py
M plone/memoize/volatile.rst
Repository: plone.memoize
Branch: refs/heads/master
Date: 2015-12-15T20:01:22+01:00
Author: Johannes Raggam (thet) <thetetet@gmail.com>
Commit: plone/plone.memoize@9144cca

fix paths

Files changed:
M docs/index.rst
Repository: plone.memoize
Branch: refs/heads/master
Date: 2015-12-16T00:21:46+01:00
Author: Johannes Raggam (thet) <thetetet@gmail.com>
Commit: plone/plone.memoize@9f809c4

headings, toctree depth, code sections

Files changed:
M docs/index.rst
M plone/memoize/README.rst
M plone/memoize/compress.rst
M plone/memoize/forever.rst
M plone/memoize/instance.rst
M plone/memoize/ram.rst
M plone/memoize/request.rst
M plone/memoize/view.rst
M plone/memoize/volatile.rst
Repository: plone.memoize
Branch: refs/heads/master
Date: 2015-12-16T00:24:43+01:00
Author: Johannes Raggam (thet) <thetetet@gmail.com>
Commit: plone/plone.memoize@b01cc88

changelog

Files changed:
M CHANGES.rst
M plone/memoize/request.py
Repository: plone.memoize
Branch: refs/heads/master
Date: 2015-12-22T15:35:47+01:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.memoize@cf275b0

Merge pull request #2 from plone/thet-restructure-docs

Restructure docs

Files changed:
A docs/index.rst
A plone/memoize/compress.rst
A plone/memoize/ram.rst
A plone/memoize/request.rst
A plone/memoize/volatile.rst
M CHANGES.rst
M plone/memoize/README.rst
M plone/memoize/compress.py
M plone/memoize/forever.rst
M plone/memoize/instance.py
M plone/memoize/instance.rst
M plone/memoize/ram.py
M plone/memoize/request.py
M plone/memoize/tests.py
M plone/memoize/view.rst
M plone/memoize/volatile.py
M setup.py
mister-roboto pushed a commit that referenced this pull request Jan 29, 2016
Branch: refs/heads/master
Date: 2016-01-28T22:29:35+01:00
Author: Stephan Klinger (staeff) <stephan.klinger@freitag.de>
Commit: plone/plone.caching@36af1e5

Use plone i18n domain

Files changed:
M plone/caching/configure.zcml
M plone/caching/interfaces.py
Repository: plone.caching
Branch: refs/heads/master
Date: 2016-01-29T10:14:41+01:00
Author: Vincent Fretin (vincentfretin) <vincent.fretin@gmail.com>
Commit: plone/plone.caching@fb4ba03

Merge pull request #2 from plone/use-plone-i18n-domain

Use plone i18n domain

Files changed:
M plone/caching/configure.zcml
M plone/caching/interfaces.py
mister-roboto pushed a commit that referenced this pull request Jan 29, 2016
Branch: refs/heads/master
Date: 2016-01-28T22:29:35+01:00
Author: Stephan Klinger (staeff) <stephan.klinger@freitag.de>
Commit: plone/plone.caching@36af1e5

Use plone i18n domain

Files changed:
M plone/caching/configure.zcml
M plone/caching/interfaces.py
Repository: plone.caching
Branch: refs/heads/master
Date: 2016-01-29T10:14:41+01:00
Author: Vincent Fretin (vincentfretin) <vincent.fretin@gmail.com>
Commit: plone/plone.caching@fb4ba03

Merge pull request #2 from plone/use-plone-i18n-domain

Use plone i18n domain

Files changed:
M plone/caching/configure.zcml
M plone/caching/interfaces.py
mister-roboto pushed a commit that referenced this pull request May 20, 2016
Branch: refs/heads/master
Date: 2016-05-20T12:24:48+02:00
Author: Gil Forcada Codinachs (gforcada) <gil.gnome@gmail.com>
Commit: plone/Products.statusmessages@b142fa6

Quotes

More silly changes to test mr.roboto

Files changed:
M setup.py
Repository: Products.statusmessages
Branch: refs/heads/master
Date: 2016-05-20T12:25:35+02:00
Author: Gil Forcada Codinachs (gforcada) <gil.gnome@gmail.com>
Commit: plone/Products.statusmessages@9d9cf25

Merge pull request #2 from plone/gforcada-patch-1

Quotes

Files changed:
M setup.py
mister-roboto pushed a commit that referenced this pull request May 20, 2016
Branch: refs/heads/master
Date: 2016-05-20T12:24:48+02:00
Author: Gil Forcada Codinachs (gforcada) <gil.gnome@gmail.com>
Commit: plone/Products.statusmessages@b142fa6

Quotes

More silly changes to test mr.roboto

Files changed:
M setup.py
Repository: Products.statusmessages
Branch: refs/heads/master
Date: 2016-05-20T12:25:35+02:00
Author: Gil Forcada Codinachs (gforcada) <gil.gnome@gmail.com>
Commit: plone/Products.statusmessages@9d9cf25

Merge pull request #2 from plone/gforcada-patch-1

Quotes

Files changed:
M setup.py
mister-roboto pushed a commit that referenced this pull request May 20, 2016
Branch: refs/heads/master
Date: 2016-05-20T12:24:48+02:00
Author: Gil Forcada Codinachs (gforcada) <gil.gnome@gmail.com>
Commit: plone/Products.statusmessages@b142fa6

Quotes

More silly changes to test mr.roboto

Files changed:
M setup.py
Repository: Products.statusmessages
Branch: refs/heads/master
Date: 2016-05-20T12:25:35+02:00
Author: Gil Forcada Codinachs (gforcada) <gil.gnome@gmail.com>
Commit: plone/Products.statusmessages@9d9cf25

Merge pull request #2 from plone/gforcada-patch-1

Quotes

Files changed:
M setup.py
mister-roboto pushed a commit that referenced this pull request Jul 6, 2016
Branch: refs/heads/master
Date: 2016-07-05T23:20:30+02:00
Author: Gil Forcada (gforcada) <gforcada@gnome.org>
Commit: plone/Products.validation@38674e4

Use zope.interface decorator

This not only makes code more pleasent to read,
but also makes the code python 3 compatible
(while maintaining python 2 compatibility).

Files changed:
M CHANGES.txt
M Products/validation/chain.py
M Products/validation/service.py
M Products/validation/validators/EmptyValidator.py
M Products/validation/validators/ExpressionValidator.py
M Products/validation/validators/IdValidator.py
M Products/validation/validators/RangeValidator.py
M Products/validation/validators/RegexValidator.py
M Products/validation/validators/SupplValidators.py
Repository: Products.validation
Branch: refs/heads/master
Date: 2016-07-06T09:22:18+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/Products.validation@ba892ec

Merge pull request #2 from plone/gforcada-use-zope-decorators

Use zope.interface decorator

Files changed:
M CHANGES.txt
M Products/validation/chain.py
M Products/validation/service.py
M Products/validation/validators/EmptyValidator.py
M Products/validation/validators/ExpressionValidator.py
M Products/validation/validators/IdValidator.py
M Products/validation/validators/RangeValidator.py
M Products/validation/validators/RegexValidator.py
M Products/validation/validators/SupplValidators.py
mister-roboto pushed a commit that referenced this pull request Jul 6, 2016
Branch: refs/heads/master
Date: 2016-07-05T23:20:30+02:00
Author: Gil Forcada (gforcada) <gforcada@gnome.org>
Commit: plone/Products.validation@38674e4

Use zope.interface decorator

This not only makes code more pleasent to read,
but also makes the code python 3 compatible
(while maintaining python 2 compatibility).

Files changed:
M CHANGES.txt
M Products/validation/chain.py
M Products/validation/service.py
M Products/validation/validators/EmptyValidator.py
M Products/validation/validators/ExpressionValidator.py
M Products/validation/validators/IdValidator.py
M Products/validation/validators/RangeValidator.py
M Products/validation/validators/RegexValidator.py
M Products/validation/validators/SupplValidators.py
Repository: Products.validation
Branch: refs/heads/master
Date: 2016-07-06T09:22:18+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/Products.validation@ba892ec

Merge pull request #2 from plone/gforcada-use-zope-decorators

Use zope.interface decorator

Files changed:
M CHANGES.txt
M Products/validation/chain.py
M Products/validation/service.py
M Products/validation/validators/EmptyValidator.py
M Products/validation/validators/ExpressionValidator.py
M Products/validation/validators/IdValidator.py
M Products/validation/validators/RangeValidator.py
M Products/validation/validators/RegexValidator.py
M Products/validation/validators/SupplValidators.py
mister-roboto pushed a commit that referenced this pull request Jul 6, 2016
Branch: refs/heads/master
Date: 2016-07-05T23:20:30+02:00
Author: Gil Forcada (gforcada) <gforcada@gnome.org>
Commit: plone/Products.validation@38674e4

Use zope.interface decorator

This not only makes code more pleasent to read,
but also makes the code python 3 compatible
(while maintaining python 2 compatibility).

Files changed:
M CHANGES.txt
M Products/validation/chain.py
M Products/validation/service.py
M Products/validation/validators/EmptyValidator.py
M Products/validation/validators/ExpressionValidator.py
M Products/validation/validators/IdValidator.py
M Products/validation/validators/RangeValidator.py
M Products/validation/validators/RegexValidator.py
M Products/validation/validators/SupplValidators.py
Repository: Products.validation
Branch: refs/heads/master
Date: 2016-07-06T09:22:18+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/Products.validation@ba892ec

Merge pull request #2 from plone/gforcada-use-zope-decorators

Use zope.interface decorator

Files changed:
M CHANGES.txt
M Products/validation/chain.py
M Products/validation/service.py
M Products/validation/validators/EmptyValidator.py
M Products/validation/validators/ExpressionValidator.py
M Products/validation/validators/IdValidator.py
M Products/validation/validators/RangeValidator.py
M Products/validation/validators/RegexValidator.py
M Products/validation/validators/SupplValidators.py
mister-roboto pushed a commit that referenced this pull request Jul 6, 2016
Branch: refs/heads/master
Date: 2016-07-05T23:17:14+02:00
Author: Gil Forcada (gforcada) <gforcada@gnome.org>
Commit: plone/plone.portlets@728a84a

Use zope.interface decorator

This not only makes code more pleasent to read,
but also makes the code python 3 compatible
(while maintaining python 2 compatibility).

Files changed:
M CHANGES.rst
M plone/portlets/assignable.py
M plone/portlets/manager.py
M plone/portlets/registration.py
M plone/portlets/retriever.py
M plone/portlets/settings.py
M plone/portlets/storage.py
Repository: plone.portlets
Branch: refs/heads/master
Date: 2016-07-07T00:57:32+02:00
Author: Gil Forcada Codinachs (gforcada) <gil.gnome@gmail.com>
Commit: plone/plone.portlets@f5aeadd

Merge pull request #2 from plone/gforcada-use-zope-decorators

Use zope.interface decorator

Files changed:
M CHANGES.rst
M plone/portlets/assignable.py
M plone/portlets/manager.py
M plone/portlets/registration.py
M plone/portlets/retriever.py
M plone/portlets/settings.py
M plone/portlets/storage.py
mister-roboto pushed a commit that referenced this pull request Jul 6, 2016
Branch: refs/heads/master
Date: 2016-07-05T23:17:14+02:00
Author: Gil Forcada (gforcada) <gforcada@gnome.org>
Commit: plone/plone.portlets@728a84a

Use zope.interface decorator

This not only makes code more pleasent to read,
but also makes the code python 3 compatible
(while maintaining python 2 compatibility).

Files changed:
M CHANGES.rst
M plone/portlets/assignable.py
M plone/portlets/manager.py
M plone/portlets/registration.py
M plone/portlets/retriever.py
M plone/portlets/settings.py
M plone/portlets/storage.py
Repository: plone.portlets
Branch: refs/heads/master
Date: 2016-07-07T00:57:32+02:00
Author: Gil Forcada Codinachs (gforcada) <gil.gnome@gmail.com>
Commit: plone/plone.portlets@f5aeadd

Merge pull request #2 from plone/gforcada-use-zope-decorators

Use zope.interface decorator

Files changed:
M CHANGES.rst
M plone/portlets/assignable.py
M plone/portlets/manager.py
M plone/portlets/registration.py
M plone/portlets/retriever.py
M plone/portlets/settings.py
M plone/portlets/storage.py
mister-roboto pushed a commit that referenced this pull request Jul 6, 2016
Branch: refs/heads/master
Date: 2016-07-05T23:17:14+02:00
Author: Gil Forcada (gforcada) <gforcada@gnome.org>
Commit: plone/plone.portlets@728a84a

Use zope.interface decorator

This not only makes code more pleasent to read,
but also makes the code python 3 compatible
(while maintaining python 2 compatibility).

Files changed:
M CHANGES.rst
M plone/portlets/assignable.py
M plone/portlets/manager.py
M plone/portlets/registration.py
M plone/portlets/retriever.py
M plone/portlets/settings.py
M plone/portlets/storage.py
Repository: plone.portlets
Branch: refs/heads/master
Date: 2016-07-07T00:57:32+02:00
Author: Gil Forcada Codinachs (gforcada) <gil.gnome@gmail.com>
Commit: plone/plone.portlets@f5aeadd

Merge pull request #2 from plone/gforcada-use-zope-decorators

Use zope.interface decorator

Files changed:
M CHANGES.rst
M plone/portlets/assignable.py
M plone/portlets/manager.py
M plone/portlets/registration.py
M plone/portlets/retriever.py
M plone/portlets/settings.py
M plone/portlets/storage.py
mister-roboto pushed a commit that referenced this pull request Jul 6, 2016
Branch: refs/heads/master
Date: 2016-07-05T23:17:42+02:00
Author: Gil Forcada (gforcada) <gforcada@gnome.org>
Commit: plone/plone.rfc822@4704a17

Use zope.interface decorator

This not only makes code more pleasent to read,
but also makes the code python 3 compatible
(while maintaining python 2 compatibility).

Files changed:
M CHANGES.rst
M plone/rfc822/defaultfields.py
M plone/rfc822/supermodel.py
Repository: plone.rfc822
Branch: refs/heads/master
Date: 2016-07-07T01:00:17+02:00
Author: Gil Forcada Codinachs (gforcada) <gil.gnome@gmail.com>
Commit: plone/plone.rfc822@780179d

Merge pull request #2 from plone/gforcada-use-zope-decorators

Use zope.interface decorator

Files changed:
M CHANGES.rst
M plone/rfc822/defaultfields.py
M plone/rfc822/supermodel.py
mister-roboto pushed a commit that referenced this pull request Jul 6, 2016
Branch: refs/heads/master
Date: 2016-07-05T23:17:42+02:00
Author: Gil Forcada (gforcada) <gforcada@gnome.org>
Commit: plone/plone.rfc822@4704a17

Use zope.interface decorator

This not only makes code more pleasent to read,
but also makes the code python 3 compatible
(while maintaining python 2 compatibility).

Files changed:
M CHANGES.rst
M plone/rfc822/defaultfields.py
M plone/rfc822/supermodel.py
Repository: plone.rfc822
Branch: refs/heads/master
Date: 2016-07-07T01:00:17+02:00
Author: Gil Forcada Codinachs (gforcada) <gil.gnome@gmail.com>
Commit: plone/plone.rfc822@780179d

Merge pull request #2 from plone/gforcada-use-zope-decorators

Use zope.interface decorator

Files changed:
M CHANGES.rst
M plone/rfc822/defaultfields.py
M plone/rfc822/supermodel.py
mister-roboto pushed a commit that referenced this pull request Jul 6, 2016
Branch: refs/heads/master
Date: 2016-07-05T23:17:42+02:00
Author: Gil Forcada (gforcada) <gforcada@gnome.org>
Commit: plone/plone.rfc822@4704a17

Use zope.interface decorator

This not only makes code more pleasent to read,
but also makes the code python 3 compatible
(while maintaining python 2 compatibility).

Files changed:
M CHANGES.rst
M plone/rfc822/defaultfields.py
M plone/rfc822/supermodel.py
Repository: plone.rfc822
Branch: refs/heads/master
Date: 2016-07-07T01:00:17+02:00
Author: Gil Forcada Codinachs (gforcada) <gil.gnome@gmail.com>
Commit: plone/plone.rfc822@780179d

Merge pull request #2 from plone/gforcada-use-zope-decorators

Use zope.interface decorator

Files changed:
M CHANGES.rst
M plone/rfc822/defaultfields.py
M plone/rfc822/supermodel.py
mister-roboto pushed a commit that referenced this pull request Jul 30, 2016
Branch: refs/heads/master
Date: 2016-07-08T23:45:37+02:00
Author: Gil Forcada (gforcada) <gforcada@gnome.org>
Commit: plone/archetypes.schemaextender@46a431c

Use zope.interface decorator

This not only makes code more pleasent to read,
but also makes the code python 3 compatible
(while maintaining python 2 compatibility).

Files changed:
M CHANGES.txt
M archetypes/schemaextender/field.py
M archetypes/schemaextender/tests/base.py
M archetypes/schemaextender/tests/mocks.py
M archetypes/schemaextender/tests/testAccessor.py
Repository: archetypes.schemaextender
Branch: refs/heads/master
Date: 2016-07-31T00:54:58+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/archetypes.schemaextender@b9dddf9

Merge pull request #2 from plone/gforcada-use-zope-decorators

Use zope.interface decorator

Files changed:
M CHANGES.txt
M archetypes/schemaextender/field.py
M archetypes/schemaextender/tests/base.py
M archetypes/schemaextender/tests/mocks.py
M archetypes/schemaextender/tests/testAccessor.py
mister-roboto pushed a commit that referenced this pull request Jul 30, 2016
Branch: refs/heads/master
Date: 2016-07-08T23:45:37+02:00
Author: Gil Forcada (gforcada) <gforcada@gnome.org>
Commit: plone/archetypes.schemaextender@46a431c

Use zope.interface decorator

This not only makes code more pleasent to read,
but also makes the code python 3 compatible
(while maintaining python 2 compatibility).

Files changed:
M CHANGES.txt
M archetypes/schemaextender/field.py
M archetypes/schemaextender/tests/base.py
M archetypes/schemaextender/tests/mocks.py
M archetypes/schemaextender/tests/testAccessor.py
Repository: archetypes.schemaextender
Branch: refs/heads/master
Date: 2016-07-31T00:54:58+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/archetypes.schemaextender@b9dddf9

Merge pull request #2 from plone/gforcada-use-zope-decorators

Use zope.interface decorator

Files changed:
M CHANGES.txt
M archetypes/schemaextender/field.py
M archetypes/schemaextender/tests/base.py
M archetypes/schemaextender/tests/mocks.py
M archetypes/schemaextender/tests/testAccessor.py
mister-roboto pushed a commit that referenced this pull request Jul 30, 2016
Branch: refs/heads/master
Date: 2016-07-08T23:45:37+02:00
Author: Gil Forcada (gforcada) <gforcada@gnome.org>
Commit: plone/archetypes.schemaextender@46a431c

Use zope.interface decorator

This not only makes code more pleasent to read,
but also makes the code python 3 compatible
(while maintaining python 2 compatibility).

Files changed:
M CHANGES.txt
M archetypes/schemaextender/field.py
M archetypes/schemaextender/tests/base.py
M archetypes/schemaextender/tests/mocks.py
M archetypes/schemaextender/tests/testAccessor.py
Repository: archetypes.schemaextender
Branch: refs/heads/master
Date: 2016-07-31T00:54:58+02:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/archetypes.schemaextender@b9dddf9

Merge pull request #2 from plone/gforcada-use-zope-decorators

Use zope.interface decorator

Files changed:
M CHANGES.txt
M archetypes/schemaextender/field.py
M archetypes/schemaextender/tests/base.py
M archetypes/schemaextender/tests/mocks.py
M archetypes/schemaextender/tests/testAccessor.py
mister-roboto pushed a commit that referenced this pull request Aug 17, 2016
Branch: refs/heads/master
Date: 2016-08-10T14:19:38+02:00
Author: Alessandro Pisa (ale-rt) <alessandro.pisa@gmail.com>
Commit: plone/five.intid@513ca3c

Set the key to None when a NotYet error is raised

Files changed:
M CHANGES.rst
M five/intid/intid.py
Repository: five.intid
Branch: refs/heads/master
Date: 2016-08-16T23:33:28-03:00
Author: Franco Pellegrini (frapell) <frapell@gmail.com>
Commit: plone/five.intid@c701eda

Merge pull request #2 from plone/fix-not-yet

Set the key to None when a NotYet error is raised

Files changed:
M CHANGES.rst
M five/intid/intid.py
mister-roboto pushed a commit that referenced this pull request Aug 17, 2016
Branch: refs/heads/master
Date: 2016-08-10T14:19:38+02:00
Author: Alessandro Pisa (ale-rt) <alessandro.pisa@gmail.com>
Commit: plone/five.intid@513ca3c

Set the key to None when a NotYet error is raised

Files changed:
M CHANGES.rst
M five/intid/intid.py
Repository: five.intid
Branch: refs/heads/master
Date: 2016-08-16T23:33:28-03:00
Author: Franco Pellegrini (frapell) <frapell@gmail.com>
Commit: plone/five.intid@c701eda

Merge pull request #2 from plone/fix-not-yet

Set the key to None when a NotYet error is raised

Files changed:
M CHANGES.rst
M five/intid/intid.py
mister-roboto pushed a commit that referenced this pull request Apr 16, 2020
Branch: refs/heads/master
Date: 2020-04-04T21:05:21+02:00
Author: Maurits van Rees (mauritsvanrees) <maurits@vanrees.org>
Commit: plone/plone.synchronize@3309ce4

Drop Py 2.6 support, support 2.7, 3.5-3.8, PyPy2/3. Add tox.

Removed the test buildout.cfg.
Instead just run 'python setup.py test'.
Alternatively, we could pip install py.test.

Files changed:
A .gitignore
A news/2.feature
A tox.ini
M .travis.yml
M setup.py
D buildout.cfg
Repository: plone.synchronize

Branch: refs/heads/master
Date: 2020-04-16T23:56:17+02:00
Author: Maurits van Rees (mauritsvanrees) <m.van.rees@zestsoftware.nl>
Commit: plone/plone.synchronize@3394190

Merge pull request #2 from plone/maurits/check-python-versions

Drop Py 2.6 support, support 2.7, 3.5-3.8, PyPy2/3. Add tox.

Files changed:
A .gitignore
A news/2.feature
A tox.ini
M .travis.yml
M setup.py
D buildout.cfg
mister-roboto pushed a commit that referenced this pull request Apr 16, 2020
Branch: refs/heads/master
Date: 2020-04-04T21:05:21+02:00
Author: Maurits van Rees (mauritsvanrees) <maurits@vanrees.org>
Commit: plone/plone.synchronize@3309ce4

Drop Py 2.6 support, support 2.7, 3.5-3.8, PyPy2/3. Add tox.

Removed the test buildout.cfg.
Instead just run 'python setup.py test'.
Alternatively, we could pip install py.test.

Files changed:
A .gitignore
A news/2.feature
A tox.ini
M .travis.yml
M setup.py
D buildout.cfg
Repository: plone.synchronize

Branch: refs/heads/master
Date: 2020-04-16T23:56:17+02:00
Author: Maurits van Rees (mauritsvanrees) <m.van.rees@zestsoftware.nl>
Commit: plone/plone.synchronize@3394190

Merge pull request #2 from plone/maurits/check-python-versions

Drop Py 2.6 support, support 2.7, 3.5-3.8, PyPy2/3. Add tox.

Files changed:
A .gitignore
A news/2.feature
A tox.ini
M .travis.yml
M setup.py
D buildout.cfg
mister-roboto pushed a commit that referenced this pull request Apr 16, 2020
Branch: refs/heads/master
Date: 2020-04-04T21:05:21+02:00
Author: Maurits van Rees (mauritsvanrees) <maurits@vanrees.org>
Commit: plone/plone.synchronize@3309ce4

Drop Py 2.6 support, support 2.7, 3.5-3.8, PyPy2/3. Add tox.

Removed the test buildout.cfg.
Instead just run 'python setup.py test'.
Alternatively, we could pip install py.test.

Files changed:
A .gitignore
A news/2.feature
A tox.ini
M .travis.yml
M setup.py
D buildout.cfg
Repository: plone.synchronize

Branch: refs/heads/master
Date: 2020-04-16T23:56:17+02:00
Author: Maurits van Rees (mauritsvanrees) <m.van.rees@zestsoftware.nl>
Commit: plone/plone.synchronize@3394190

Merge pull request #2 from plone/maurits/check-python-versions

Drop Py 2.6 support, support 2.7, 3.5-3.8, PyPy2/3. Add tox.

Files changed:
A .gitignore
A news/2.feature
A tox.ini
M .travis.yml
M setup.py
D buildout.cfg
mister-roboto pushed a commit that referenced this pull request Apr 2, 2022
Branch: refs/heads/6-dev
Date: 2022-04-01T08:39:53+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@1dbbd8d

Integrate plone.api documentation in /backend

Files changed:
A submodules/plone.api
M .gitignore
M .gitmodules
M Makefile
M docs/backend/index.md
M docs/conf.py
M docs/contributing/index.md
D docs/backend/plone-api.md
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T08:41:06+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@6b39cf8

Fix error on subsequent calls of 'make docs/restapi' (failing creation of symlink)

Files changed:
M Makefile
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T09:12:42+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@408e81a

Update submodules/plone.api tip

Files changed:
M submodules/plone.api
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T09:30:13+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@0dcaa87

Add missing installation of plone.api[test] in 'make netlify'

Files changed:
M Makefile
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T09:47:56+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@579d754

Fix typo in Makefile 'make netlify'

Files changed:
M Makefile
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T10:09:28+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@fc9bc20

Kick preview deploy after failing 'make storybook'

Files changed:
M Makefile
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T11:09:24+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@d851c37

Hide Github admonitions

Files changed:
M docs/_static/custom.css
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T11:45:21+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@595c9c7

Typo that funnily enough had no consequence.: '.md' -&gt; '.rst'

Files changed:
M docs/backend/index.md
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T11:46:23+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@61ff08a

Makefile: Remove quotation marks. Fix description of target 'deps'

Files changed:
M Makefile
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T11:47:53+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@4c29ef8

Update submodules/plone.api tip

Files changed:
M submodules/plone.api
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T12:42:13+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@518437a

Remove Sphinx extentsions from plone.api that are not used wether here in plone.documentatin nor in plone.api.

Files changed:
M docs/conf.py
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T12:50:34+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@c9e5d5c

Switch Netlify Python to 3.9

Files changed:
M netlify.toml
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T13:01:42+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@27a8a46

Netlify with venv

Files changed:
M Makefile
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T13:03:44+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@ed9cdcf

Revert "Switch Netlify Python to 3.9"

This reverts commit c9e5d5c3d1c50b68af5a913405066adc96713497.

Files changed:
M netlify.toml
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T13:03:48+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@c2bbfd6

Revert "Netlify with venv"

This reverts commit 27a8a468995d51593cd4ab130481359989c15443.

Files changed:
M Makefile
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T15:31:36+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@e365a46

Catching the Netlify ContextualVersionConflict problem

Files changed:
A requirements-netlify.txt
M Makefile
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T15:37:20+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@4821512

Catching the Netlify ContextualVersionConflict problem #2

Files changed:
M requirements-netlify.txt
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T15:49:44+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@0c43346

Catching the Netlify ContextualVersionConflict problem

plone-autoform 2.x is Plone 6 only

Files changed:
M requirements-netlify.txt
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T17:37:25+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@b2810a3

clean up netlify python requirements

Files changed:
M requirements-netlify.txt
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T17:37:48+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@31f6da0

Add search option for plone.api

Files changed:
M docs/_templates/search.html
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T17:45:34+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@4bb96e0

Fix search breadcrumbs for plone.api.

Files changed:
M docs/_static/searchtools.js
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-01T17:46:39+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@eda5123

Theming api and target highlighting

Files changed:
M docs/_static/custom.css
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-02T10:20:59+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@233cf6b

Add plone.api to contributors guide

Files changed:
M docs/contributing/index.md
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-02T10:21:28+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@f605042

Reorder submodule deps in Makefile

Files changed:
M Makefile
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-02T10:21:40+02:00
Author: ksuess (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@aea8d52

Update submodule tips

Files changed:
M submodules/plone.api
M submodules/volto
Repository: documentation

Branch: refs/heads/6-dev
Date: 2022-04-02T11:09:58+02:00
Author: Katja Süss (ksuess) <k.suess@rohberg.ch>
Commit: plone/documentation@98180d5

Merge pull request #1215 from plone/integration-of-plone.api

Integration of plone.api documentation in Plone 6 documentation /backend

Files changed:
A requirements-netlify.txt
A submodules/plone.api
M .gitignore
M .gitmodules
M Makefile
M docs/_static/custom.css
M docs/_static/searchtools.js
M docs/_templates/search.html
M docs/backend/index.md
M docs/conf.py
M docs/contributing/index.md
M submodules/volto
D docs/backend/plone-api.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants