Merge ~cjwatson/launchpad:upgrade-z3c.pt into launchpad:master

Proposed by Colin Watson
Status: Merged
Approved by: Colin Watson
Approved revision: a03eb3d26a4ccbeed2d73c669e0ab529f4848f4c
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: ~cjwatson/launchpad:upgrade-z3c.pt
Merge into: launchpad:master
Diff against target: 870 lines (+73/-83)
61 files modified
constraints.txt (+3/-4)
doc/chameleon.txt (+3/-13)
lib/lp/answers/browser/question.py (+1/-1)
lib/lp/answers/browser/questiontarget.py (+1/-1)
lib/lp/app/browser/doc/base-layout.txt (+1/-1)
lib/lp/app/browser/doc/launchpadform-view.txt (+1/-1)
lib/lp/app/browser/lazrjs.py (+1/-1)
lib/lp/app/browser/tales.py (+1/-1)
lib/lp/app/browser/tests/test_base_layout.py (+1/-1)
lib/lp/app/browser/tests/test_launchpadform.py (+1/-1)
lib/lp/app/doc/launchpadform.txt (+1/-1)
lib/lp/app/doc/menus.txt (+1/-1)
lib/lp/app/widgets/date.py (+1/-1)
lib/lp/app/widgets/exception.py (+1/-1)
lib/lp/app/widgets/launchpadtarget.py (+1/-1)
lib/lp/app/widgets/popup.py (+1/-1)
lib/lp/app/widgets/product.py (+1/-1)
lib/lp/app/widgets/textwidgets.py (+1/-1)
lib/lp/blueprints/browser/specificationtarget.py (+1/-1)
lib/lp/bugs/browser/bugalsoaffects.py (+1/-1)
lib/lp/bugs/browser/buglisting.py (+1/-1)
lib/lp/bugs/browser/bugtarget.py (+1/-1)
lib/lp/bugs/browser/bugtask.py (+1/-1)
lib/lp/bugs/browser/widgets/bugtask.py (+1/-1)
lib/lp/bugs/feed/bug.py (+1/-1)
lib/lp/code/browser/branchlisting.py (+1/-1)
lib/lp/code/browser/sourcepackagerecipe.py (+1/-1)
lib/lp/code/browser/widgets/branchtarget.py (+1/-1)
lib/lp/code/browser/widgets/gitgrantee.py (+1/-1)
lib/lp/code/browser/widgets/gitref.py (+1/-1)
lib/lp/code/browser/widgets/gitrepositorytarget.py (+1/-1)
lib/lp/code/feed/branch.py (+1/-1)
lib/lp/hardwaredb/browser/hwdb.py (+1/-1)
lib/lp/registry/browser/distroseriesdifference.py (+1/-1)
lib/lp/registry/browser/person.py (+1/-1)
lib/lp/registry/browser/poll.py (+1/-1)
lib/lp/registry/browser/product.py (+1/-1)
lib/lp/registry/browser/productrelease.py (+1/-1)
lib/lp/registry/browser/productseries.py (+1/-1)
lib/lp/registry/browser/project.py (+1/-1)
lib/lp/registry/browser/sourcepackage.py (+1/-1)
lib/lp/registry/browser/team.py (+1/-1)
lib/lp/registry/doc/product-widgets.txt (+1/-1)
lib/lp/scripts/utilities/warninghandler.py (+1/-1)
lib/lp/services/feeds/feed.py (+1/-1)
lib/lp/services/profile/profile.py (+1/-1)
lib/lp/services/webapp/error.py (+1/-1)
lib/lp/services/webapp/login.py (+1/-1)
lib/lp/services/webapp/metazcml.py (+4/-4)
lib/lp/services/webapp/namespace.py (+4/-3)
lib/lp/snappy/browser/widgets/snaparchive.py (+1/-1)
lib/lp/snappy/browser/widgets/snapbuildchannels.py (+1/-1)
lib/lp/snappy/browser/widgets/storechannels.py (+1/-1)
lib/lp/soyuz/browser/sourceslist.py (+1/-1)
lib/lp/testopenid/browser/server.py (+1/-1)
lib/lp/translations/browser/hastranslationimports.py (+1/-1)
lib/lp/translations/browser/person.py (+1/-1)
lib/lp/translations/browser/translationmessage.py (+1/-1)
setup.py (+1/-2)
utilities/create-lp-wadl-and-apidoc.py (+1/-1)
zcml/zopeapp.zcml (+3/-2)
Reviewer Review Type Date Requested Status
Thiago F. Pappacena (community) Approve
Ioana Lasc (community) Approve
Review via email: mp+376976@code.launchpad.net

Commit message

Upgrade Chameleon, z3c.pt, and z3c.ptcompat

Description of the change

z3c.ptcompat is now configured entirely via ZCML, and the PREFER_Z3C_PT environment variable is obsolete. We now have to import directly from ZTK rather than going via z3c.ptcompat (it registers an IPageTemplateEngine utility in its configure.zcml instead).

I've run the full test suite over the default configuration, but I've only done some basic testing on the Chameleon mode to make sure it isn't entirely broken. At some point we should do some performance testing and pick one or the other rather than retaining it as a rarely-tested option, but this at least gets these dependencies out of the way of a Python 3 port.

To post a comment you must log in.
Revision history for this message
Ioana Lasc (ilasc) :
review: Approve
Revision history for this message
Thiago F. Pappacena (pappacena) wrote :

LGTM.

Since the PREFER_Z3C_PT env variable is no longer needed, do we need to change the production deployment somehow?

review: Approve
Revision history for this message
Colin Watson (cjwatson) wrote :

As far as I can tell, PREFER_Z3C_PT has never actually been enabled on production. (This is not obvious; but if you look at an OOPS that goes through TAL rendering, you can see that it goes through zope.browserpage.viewpagetemplatefile, whereas if PREFER_Z3C_PT were enabled then it would go through things in z3c.pt.pagetemplate instead.)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/constraints.txt b/constraints.txt
2index fccf0fa..e96e5e3 100644
3--- a/constraints.txt
4+++ b/constraints.txt
5@@ -182,7 +182,7 @@ bson==0.3.3
6 # lp:~launchpad/bzr/lp
7 bzr==2.6.0.lp.4
8 celery==4.1.1
9-Chameleon==2.11
10+Chameleon==3.6.2
11 configobj==5.0.6
12 constantly==15.1.0
13 cookies==2.2.1
14@@ -321,13 +321,12 @@ wheel==0.29.0
15 wsgi-intercept==0.5.1
16 WSGIProxy2==0.4.6
17 wsgiref==0.1.2
18-z3c.pt==2.2.3
19-z3c.ptcompat[zpt]==0.5.7
20+z3c.pt==3.2.0
21+z3c.ptcompat==2.2.0
22 zc.zservertracelog==1.3.2
23 zope.app.applicationcontrol==4.0.0
24 zope.app.appsetup==4.1.0
25 zope.app.http==4.0.1
26-zope.app.pagetemplate==3.11.2
27 zope.app.publication==4.3.1
28 zope.app.publisher==3.10.2
29 zope.app.server==4.0.0
30diff --git a/doc/chameleon.txt b/doc/chameleon.txt
31index 8ccb73a..0aec37d 100644
32--- a/doc/chameleon.txt
33+++ b/doc/chameleon.txt
34@@ -1,21 +1,11 @@
35 Running Launchpad with Chameleon Template Engine
36 ================================================
37
38-- Need to pull the following dependencies into ``sourcecode``:
39+- Uncomment ``<include package="z3c.ptcompat" />`` in ``zcml/zopeapp.zcml``
40+ to enable ``z3c.pt``.
41
42- - lp:sourcecodegen/trunk
43- - lp:chameleon.core/trunk
44- - lp:chameleon.zpt/trunk
45- - lp:z3c.pt/trunk
46- - lp:z3c.ptcompat/trunk
47
48-- Run launchpad with ``PREFER_Z3C_PT=true make run`` to enable
49- ``z3c.pt``. Omitting it or setting to ``false`` will disable
50- ``z3c.pt`` and use ``zope.pagetemplate`` instead. Yes, it's that
51- simple. This is possible thanks to ``z3c.ptcompat``.
52-
53-
54-Other useful environment options for ``z3c.pt``::
55+Useful environment options for ``z3c.pt``::
56
57 # in debug-mode, templates on disk are reloaded if they're modified
58 CHAMELEON_DEBUG (default: false)
59diff --git a/lib/lp/answers/browser/question.py b/lib/lp/answers/browser/question.py
60index a477b4e..e660cb2 100644
61--- a/lib/lp/answers/browser/question.py
62+++ b/lib/lp/answers/browser/question.py
63@@ -31,7 +31,7 @@ import re
64
65 from lazr.restful.interface import copy_field
66 from lazr.restful.utils import smartquote
67-from z3c.ptcompat import ViewPageTemplateFile
68+from zope.browserpage import ViewPageTemplateFile
69 from zope.component import getUtility
70 from zope.formlib import form
71 from zope.formlib.interfaces import IWidgetFactory
72diff --git a/lib/lp/answers/browser/questiontarget.py b/lib/lp/answers/browser/questiontarget.py
73index ca468c5..9fcf9e0 100644
74--- a/lib/lp/answers/browser/questiontarget.py
75+++ b/lib/lp/answers/browser/questiontarget.py
76@@ -28,7 +28,7 @@ from lazr.restful.interfaces import (
77 IWebServiceClientRequest,
78 )
79 from simplejson import dumps
80-from z3c.ptcompat import ViewPageTemplateFile
81+from zope.browserpage import ViewPageTemplateFile
82 from zope.component import (
83 getMultiAdapter,
84 getUtility,
85diff --git a/lib/lp/app/browser/doc/base-layout.txt b/lib/lp/app/browser/doc/base-layout.txt
86index 12d1250..888c7d0 100644
87--- a/lib/lp/app/browser/doc/base-layout.txt
88+++ b/lib/lp/app/browser/doc/base-layout.txt
89@@ -12,7 +12,7 @@ YUI grid classes for positioning.
90
91 >>> from lp.services.webapp.publisher import LaunchpadView
92 >>> from lp.services.webapp.servers import LaunchpadTestRequest
93- >>> from z3c.ptcompat import ViewPageTemplateFile
94+ >>> from zope.browserpage import ViewPageTemplateFile
95
96 >>> user = factory.makePerson(name='waffles')
97 >>> request = LaunchpadTestRequest(
98diff --git a/lib/lp/app/browser/doc/launchpadform-view.txt b/lib/lp/app/browser/doc/launchpadform-view.txt
99index a365ed7..46b554d 100644
100--- a/lib/lp/app/browser/doc/launchpadform-view.txt
101+++ b/lib/lp/app/browser/doc/launchpadform-view.txt
102@@ -11,7 +11,7 @@ can be used for subordinate field indentation, for example.
103 >>> from zope.interface import Interface
104 >>> from zope.schema import TextLine
105 >>> from lp.services.config import config
106- >>> from z3c.ptcompat import ViewPageTemplateFile
107+ >>> from zope.browserpage import ViewPageTemplateFile
108 >>> from lp.app.browser.launchpadform import LaunchpadFormView
109 >>> from lp.testing.pages import find_tags_by_class
110 >>> from lp.services.webapp.servers import LaunchpadTestRequest
111diff --git a/lib/lp/app/browser/lazrjs.py b/lib/lp/app/browser/lazrjs.py
112index 95f37bb..3c3f0a8 100644
113--- a/lib/lp/app/browser/lazrjs.py
114+++ b/lib/lp/app/browser/lazrjs.py
115@@ -23,7 +23,7 @@ from lazr.restful.utils import (
116 safe_hasattr,
117 )
118 import simplejson
119-from z3c.ptcompat import ViewPageTemplateFile
120+from zope.browserpage import ViewPageTemplateFile
121 from zope.component import getUtility
122 from zope.schema.interfaces import (
123 ICollection,
124diff --git a/lib/lp/app/browser/tales.py b/lib/lp/app/browser/tales.py
125index 156a93d..3466a83 100644
126--- a/lib/lp/app/browser/tales.py
127+++ b/lib/lp/app/browser/tales.py
128@@ -22,7 +22,7 @@ from lazr.enum import enumerated_type_registry
129 from lazr.restful.utils import get_current_browser_request
130 from lazr.uri import URI
131 import pytz
132-from z3c.ptcompat import ViewPageTemplateFile
133+from zope.browserpage import ViewPageTemplateFile
134 from zope.component import (
135 adapter,
136 getMultiAdapter,
137diff --git a/lib/lp/app/browser/tests/test_base_layout.py b/lib/lp/app/browser/tests/test_base_layout.py
138index 2c1044d..c77f75c 100644
139--- a/lib/lp/app/browser/tests/test_base_layout.py
140+++ b/lib/lp/app/browser/tests/test_base_layout.py
141@@ -13,7 +13,7 @@ in the root element. The template provides common layout to Launchpad.
142
143 __metaclass__ = type
144
145-from z3c.ptcompat import ViewPageTemplateFile
146+from zope.browserpage import ViewPageTemplateFile
147
148 from lp.registry.interfaces.person import PersonVisibility
149 from lp.services.beautifulsoup import BeautifulSoup4 as BeautifulSoup
150diff --git a/lib/lp/app/browser/tests/test_launchpadform.py b/lib/lp/app/browser/tests/test_launchpadform.py
151index 40f45ea..cc85eee 100644
152--- a/lib/lp/app/browser/tests/test_launchpadform.py
153+++ b/lib/lp/app/browser/tests/test_launchpadform.py
154@@ -13,7 +13,7 @@ from os.path import (
155 from lxml import html
156 import simplejson
157 from testtools.content import text_content
158-from z3c.ptcompat import ViewPageTemplateFile
159+from zope.browserpage import ViewPageTemplateFile
160 from zope.formlib.form import action
161 from zope.interface import Interface
162 from zope.schema import (
163diff --git a/lib/lp/app/doc/launchpadform.txt b/lib/lp/app/doc/launchpadform.txt
164index 808523e..6af879c 100644
165--- a/lib/lp/app/doc/launchpadform.txt
166+++ b/lib/lp/app/doc/launchpadform.txt
167@@ -469,7 +469,7 @@ template and thus is way simpler.
168
169 >>> from StringIO import StringIO
170 >>> from tempfile import mkstemp
171- >>> from z3c.ptcompat import ViewPageTemplateFile
172+ >>> from zope.browserpage import ViewPageTemplateFile
173 >>> file, filename = mkstemp()
174 >>> f = open(filename, 'w')
175 >>> f.write(u'<div metal:use-macro="context/@@launchpad_form/form" />')
176diff --git a/lib/lp/app/doc/menus.txt b/lib/lp/app/doc/menus.txt
177index 3035ae8..74aabff 100644
178--- a/lib/lp/app/doc/menus.txt
179+++ b/lib/lp/app/doc/menus.txt
180@@ -1090,7 +1090,7 @@ NavigationMenus used in the previous TALES section.
181
182 >>> import operator
183 >>> import tempfile
184- >>> from z3c.ptcompat import ViewPageTemplateFile
185+ >>> from zope.browserpage import ViewPageTemplateFile
186 >>> from lp.services.webapp.menu import (
187 ... get_facet, get_current_view)
188
189diff --git a/lib/lp/app/widgets/date.py b/lib/lp/app/widgets/date.py
190index 06b0eb6..b6e8a38 100644
191--- a/lib/lp/app/widgets/date.py
192+++ b/lib/lp/app/widgets/date.py
193@@ -22,7 +22,7 @@ __all__ = [
194 from datetime import datetime
195
196 import pytz
197-from z3c.ptcompat import ViewPageTemplateFile
198+from zope.browserpage import ViewPageTemplateFile
199 from zope.component import getUtility
200 from zope.datetime import (
201 DateTimeError,
202diff --git a/lib/lp/app/widgets/exception.py b/lib/lp/app/widgets/exception.py
203index 446386e..a7c68a7 100644
204--- a/lib/lp/app/widgets/exception.py
205+++ b/lib/lp/app/widgets/exception.py
206@@ -1,7 +1,7 @@
207 # Copyright 2009-2011 Canonical Ltd. This software is licensed under the
208 # GNU Affero General Public License version 3 (see the file LICENSE).
209
210-from z3c.ptcompat import ViewPageTemplateFile
211+from zope.browserpage import ViewPageTemplateFile
212 from zope.formlib.interfaces import (
213 IWidgetInputError,
214 IWidgetInputErrorView,
215diff --git a/lib/lp/app/widgets/launchpadtarget.py b/lib/lp/app/widgets/launchpadtarget.py
216index 536a2e8..89b2a95 100644
217--- a/lib/lp/app/widgets/launchpadtarget.py
218+++ b/lib/lp/app/widgets/launchpadtarget.py
219@@ -3,7 +3,7 @@
220
221 __metaclass__ = type
222
223-from z3c.ptcompat import ViewPageTemplateFile
224+from zope.browserpage import ViewPageTemplateFile
225 from zope.component import getUtility
226 from zope.formlib.interfaces import (
227 ConversionError,
228diff --git a/lib/lp/app/widgets/popup.py b/lib/lp/app/widgets/popup.py
229index d1097d4..9e8fb73 100644
230--- a/lib/lp/app/widgets/popup.py
231+++ b/lib/lp/app/widgets/popup.py
232@@ -16,7 +16,7 @@ __all__ = [
233
234 from lazr.restful.utils import safe_hasattr
235 import simplejson
236-from z3c.ptcompat import ViewPageTemplateFile
237+from zope.browserpage import ViewPageTemplateFile
238 from zope.component import getUtility
239 from zope.formlib.interfaces import ConversionError
240 from zope.formlib.itemswidgets import (
241diff --git a/lib/lp/app/widgets/product.py b/lib/lp/app/widgets/product.py
242index b4b2f40..e3c9d57 100644
243--- a/lib/lp/app/widgets/product.py
244+++ b/lib/lp/app/widgets/product.py
245@@ -15,7 +15,7 @@ __all__ = [
246 import math
247
248 from lazr.restful.interface import copy_field
249-from z3c.ptcompat import ViewPageTemplateFile
250+from zope.browserpage import ViewPageTemplateFile
251 from zope.component import getUtility
252 from zope.formlib.boolwidgets import CheckBoxWidget
253 from zope.formlib.interfaces import IInputWidget
254diff --git a/lib/lp/app/widgets/textwidgets.py b/lib/lp/app/widgets/textwidgets.py
255index e30a857..6b50946 100644
256--- a/lib/lp/app/widgets/textwidgets.py
257+++ b/lib/lp/app/widgets/textwidgets.py
258@@ -5,7 +5,7 @@ import datetime
259 import re
260
261 import pytz
262-from z3c.ptcompat import ViewPageTemplateFile
263+from zope.browserpage import ViewPageTemplateFile
264 from zope.datetime import (
265 DateTimeError,
266 parse,
267diff --git a/lib/lp/blueprints/browser/specificationtarget.py b/lib/lp/blueprints/browser/specificationtarget.py
268index 70ef413..32e826d 100644
269--- a/lib/lp/blueprints/browser/specificationtarget.py
270+++ b/lib/lp/blueprints/browser/specificationtarget.py
271@@ -19,7 +19,7 @@ from lazr.restful.utils import (
272 safe_hasattr,
273 smartquote,
274 )
275-from z3c.ptcompat import ViewPageTemplateFile
276+from zope.browserpage import ViewPageTemplateFile
277 from zope.component import (
278 getMultiAdapter,
279 queryMultiAdapter,
280diff --git a/lib/lp/bugs/browser/bugalsoaffects.py b/lib/lp/bugs/browser/bugalsoaffects.py
281index 0bd25b5..4fa3421 100644
282--- a/lib/lp/bugs/browser/bugalsoaffects.py
283+++ b/lib/lp/bugs/browser/bugalsoaffects.py
284@@ -16,7 +16,7 @@ from lazr.enum import (
285 Item,
286 )
287 from lazr.lifecycle.event import ObjectCreatedEvent
288-from z3c.ptcompat import ViewPageTemplateFile
289+from zope.browserpage import ViewPageTemplateFile
290 from zope.component import getUtility
291 from zope.event import notify
292 from zope.formlib import form
293diff --git a/lib/lp/bugs/browser/buglisting.py b/lib/lp/bugs/browser/buglisting.py
294index 2468f2f..3cef8f9 100644
295--- a/lib/lp/bugs/browser/buglisting.py
296+++ b/lib/lp/bugs/browser/buglisting.py
297@@ -34,8 +34,8 @@ from six.moves.urllib.parse import (
298 parse_qs,
299 parse_qsl,
300 )
301-from z3c.pt.pagetemplate import ViewPageTemplateFile
302 from zope.authentication.interfaces import IUnauthenticatedPrincipal
303+from zope.browserpage import ViewPageTemplateFile
304 from zope.component import (
305 getAdapter,
306 getUtility,
307diff --git a/lib/lp/bugs/browser/bugtarget.py b/lib/lp/bugs/browser/bugtarget.py
308index 82d49db..5b0366a 100644
309--- a/lib/lp/bugs/browser/bugtarget.py
310+++ b/lib/lp/bugs/browser/bugtarget.py
311@@ -31,7 +31,7 @@ from lazr.restful.interfaces import IJSONRequestCache
312 from pytz import timezone
313 from simplejson import dumps
314 from sqlobject import SQLObjectNotFound
315-from z3c.ptcompat import ViewPageTemplateFile
316+from zope.browserpage import ViewPageTemplateFile
317 from zope.component import getUtility
318 from zope.formlib.form import Fields
319 from zope.formlib.interfaces import InputErrors
320diff --git a/lib/lp/bugs/browser/bugtask.py b/lib/lp/bugs/browser/bugtask.py
321index b25e213..3cc4ad5 100644
322--- a/lib/lp/bugs/browser/bugtask.py
323+++ b/lib/lp/bugs/browser/bugtask.py
324@@ -51,8 +51,8 @@ from lazr.restful.utils import smartquote
325 from pytz import utc
326 from simplejson import dumps
327 import transaction
328-from z3c.pt.pagetemplate import ViewPageTemplateFile
329 from zope import formlib
330+from zope.browserpage import ViewPageTemplateFile
331 from zope.component import (
332 adapter,
333 ComponentLookupError,
334diff --git a/lib/lp/bugs/browser/widgets/bugtask.py b/lib/lp/bugs/browser/widgets/bugtask.py
335index 334ba08..b17d19f 100644
336--- a/lib/lp/bugs/browser/widgets/bugtask.py
337+++ b/lib/lp/bugs/browser/widgets/bugtask.py
338@@ -17,7 +17,7 @@ __all__ = [
339 "NewLineToSpacesWidget",
340 ]
341
342-from z3c.ptcompat import ViewPageTemplateFile
343+from zope.browserpage import ViewPageTemplateFile
344 from zope.component import getUtility
345 from zope.formlib.interfaces import (
346 IDisplayWidget,
347diff --git a/lib/lp/bugs/feed/bug.py b/lib/lp/bugs/feed/bug.py
348index 644fa88..218f199 100644
349--- a/lib/lp/bugs/feed/bug.py
350+++ b/lib/lp/bugs/feed/bug.py
351@@ -12,7 +12,7 @@ __all__ = [
352 'SearchBugsFeed',
353 ]
354
355-from z3c.ptcompat import ViewPageTemplateFile
356+from zope.browserpage import ViewPageTemplateFile
357 from zope.component import getUtility
358
359 from lp.bugs.browser.buglisting import (
360diff --git a/lib/lp/code/browser/branchlisting.py b/lib/lp/code/browser/branchlisting.py
361index e1a2525..176733b 100644
362--- a/lib/lp/code/browser/branchlisting.py
363+++ b/lib/lp/code/browser/branchlisting.py
364@@ -35,7 +35,7 @@ from lazr.enum import (
365 Item,
366 )
367 from storm.expr import Desc
368-from z3c.ptcompat import ViewPageTemplateFile
369+from zope.browserpage import ViewPageTemplateFile
370 from zope.component import getUtility
371 from zope.formlib import form
372 from zope.interface import (
373diff --git a/lib/lp/code/browser/sourcepackagerecipe.py b/lib/lp/code/browser/sourcepackagerecipe.py
374index d712879..482d892 100644
375--- a/lib/lp/code/browser/sourcepackagerecipe.py
376+++ b/lib/lp/code/browser/sourcepackagerecipe.py
377@@ -33,8 +33,8 @@ from lazr.restful.interfaces import (
378 )
379 import simplejson
380 from storm.locals import Store
381-from z3c.ptcompat import ViewPageTemplateFile
382 from zope import component
383+from zope.browserpage import ViewPageTemplateFile
384 from zope.component import getUtility
385 from zope.event import notify
386 from zope.formlib import form
387diff --git a/lib/lp/code/browser/widgets/branchtarget.py b/lib/lp/code/browser/widgets/branchtarget.py
388index 63a5d1e..77e479a 100644
389--- a/lib/lp/code/browser/widgets/branchtarget.py
390+++ b/lib/lp/code/browser/widgets/branchtarget.py
391@@ -7,7 +7,7 @@ __all__ = [
392 'BranchTargetWidget',
393 ]
394
395-from z3c.ptcompat import ViewPageTemplateFile
396+from zope.browserpage import ViewPageTemplateFile
397 from zope.formlib.interfaces import (
398 ConversionError,
399 IInputWidget,
400diff --git a/lib/lp/code/browser/widgets/gitgrantee.py b/lib/lp/code/browser/widgets/gitgrantee.py
401index 9177823..4cb8a8a 100644
402--- a/lib/lp/code/browser/widgets/gitgrantee.py
403+++ b/lib/lp/code/browser/widgets/gitgrantee.py
404@@ -12,7 +12,7 @@ __all__ = [
405
406 from lazr.enum import DBItem
407 from lazr.restful.fields import Reference
408-from z3c.ptcompat import ViewPageTemplateFile
409+from zope.browserpage import ViewPageTemplateFile
410 from zope.formlib.interfaces import (
411 ConversionError,
412 IDisplayWidget,
413diff --git a/lib/lp/code/browser/widgets/gitref.py b/lib/lp/code/browser/widgets/gitref.py
414index a56a449..cfe8e40 100644
415--- a/lib/lp/code/browser/widgets/gitref.py
416+++ b/lib/lp/code/browser/widgets/gitref.py
417@@ -8,7 +8,7 @@ __all__ = [
418 ]
419
420 import six
421-from z3c.ptcompat import ViewPageTemplateFile
422+from zope.browserpage import ViewPageTemplateFile
423 from zope.component import getUtility
424 from zope.formlib.interfaces import (
425 ConversionError,
426diff --git a/lib/lp/code/browser/widgets/gitrepositorytarget.py b/lib/lp/code/browser/widgets/gitrepositorytarget.py
427index f5191df..63e9285 100644
428--- a/lib/lp/code/browser/widgets/gitrepositorytarget.py
429+++ b/lib/lp/code/browser/widgets/gitrepositorytarget.py
430@@ -8,7 +8,7 @@ __all__ = [
431 'GitRepositoryTargetWidget',
432 ]
433
434-from z3c.ptcompat import ViewPageTemplateFile
435+from zope.browserpage import ViewPageTemplateFile
436 from zope.component import getUtility
437 from zope.formlib.interfaces import (
438 ConversionError,
439diff --git a/lib/lp/code/feed/branch.py b/lib/lp/code/feed/branch.py
440index 8ec11f5..45a5077 100644
441--- a/lib/lp/code/feed/branch.py
442+++ b/lib/lp/code/feed/branch.py
443@@ -15,7 +15,7 @@ __all__ = [
444 'ProjectRevisionFeed',
445 ]
446
447-from z3c.ptcompat import ViewPageTemplateFile
448+from zope.browserpage import ViewPageTemplateFile
449 from zope.component import getUtility
450 from zope.interface import implementer
451 from zope.security.interfaces import Unauthorized
452diff --git a/lib/lp/hardwaredb/browser/hwdb.py b/lib/lp/hardwaredb/browser/hwdb.py
453index c948794..cbd1801 100644
454--- a/lib/lp/hardwaredb/browser/hwdb.py
455+++ b/lib/lp/hardwaredb/browser/hwdb.py
456@@ -13,7 +13,7 @@ __all__ = [
457
458 from textwrap import dedent
459
460-from z3c.ptcompat import ViewPageTemplateFile
461+from zope.browserpage import ViewPageTemplateFile
462 from zope.component import getUtility
463 from zope.interface import implementer
464 from zope.publisher.interfaces.browser import IBrowserPublisher
465diff --git a/lib/lp/registry/browser/distroseriesdifference.py b/lib/lp/registry/browser/distroseriesdifference.py
466index 9b0666f..d58ce5f 100644
467--- a/lib/lp/registry/browser/distroseriesdifference.py
468+++ b/lib/lp/registry/browser/distroseriesdifference.py
469@@ -10,7 +10,7 @@ __all__ = [
470 ]
471
472 from lazr.restful.interfaces import IWebServiceClientRequest
473-from z3c.ptcompat import ViewPageTemplateFile
474+from zope.browserpage import ViewPageTemplateFile
475 from zope.component import (
476 adapter,
477 getUtility,
478diff --git a/lib/lp/registry/browser/person.py b/lib/lp/registry/browser/person.py
479index a6df4b5..da99b67 100644
480--- a/lib/lp/registry/browser/person.py
481+++ b/lib/lp/registry/browser/person.py
482@@ -65,7 +65,7 @@ from lazr.restful.utils import smartquote
483 from lazr.uri import URI
484 import pytz
485 from storm.zope.interfaces import IResultSet
486-from z3c.ptcompat import ViewPageTemplateFile
487+from zope.browserpage import ViewPageTemplateFile
488 from zope.component import (
489 adapter,
490 getUtility,
491diff --git a/lib/lp/registry/browser/poll.py b/lib/lp/registry/browser/poll.py
492index 83d92b8..c42bfb1 100644
493--- a/lib/lp/registry/browser/poll.py
494+++ b/lib/lp/registry/browser/poll.py
495@@ -18,7 +18,7 @@ __all__ = [
496 'TeamPollsView',
497 ]
498
499-from z3c.ptcompat import ViewPageTemplateFile
500+from zope.browserpage import ViewPageTemplateFile
501 from zope.component import getUtility
502 from zope.event import notify
503 from zope.formlib.widget import CustomWidgetFactory
504diff --git a/lib/lp/registry/browser/product.py b/lib/lp/registry/browser/product.py
505index 0fc757f..ad188ec 100644
506--- a/lib/lp/registry/browser/product.py
507+++ b/lib/lp/registry/browser/product.py
508@@ -52,7 +52,7 @@ from lazr.restful.interface import (
509 use_template,
510 )
511 from lazr.restful.interfaces import IJSONRequestCache
512-from z3c.ptcompat import ViewPageTemplateFile
513+from zope.browserpage import ViewPageTemplateFile
514 from zope.component import getUtility
515 from zope.event import notify
516 from zope.formlib import form
517diff --git a/lib/lp/registry/browser/productrelease.py b/lib/lp/registry/browser/productrelease.py
518index 05439a0..b4a23ba 100644
519--- a/lib/lp/registry/browser/productrelease.py
520+++ b/lib/lp/registry/browser/productrelease.py
521@@ -18,7 +18,7 @@ import mimetypes
522
523 from lazr.restful.interface import copy_field
524 from lazr.restful.utils import smartquote
525-from z3c.ptcompat import ViewPageTemplateFile
526+from zope.browserpage import ViewPageTemplateFile
527 from zope.event import notify
528 from zope.formlib.form import FormFields
529 from zope.formlib.widget import CustomWidgetFactory
530diff --git a/lib/lp/registry/browser/productseries.py b/lib/lp/registry/browser/productseries.py
531index 0f28e30..1bf10e7 100644
532--- a/lib/lp/registry/browser/productseries.py
533+++ b/lib/lp/registry/browser/productseries.py
534@@ -29,7 +29,7 @@ __all__ = [
535 from operator import attrgetter
536
537 from lazr.restful.interface import copy_field
538-from z3c.ptcompat import ViewPageTemplateFile
539+from zope.browserpage import ViewPageTemplateFile
540 from zope.component import getUtility
541 from zope.formlib import form
542 from zope.formlib.widget import CustomWidgetFactory
543diff --git a/lib/lp/registry/browser/project.py b/lib/lp/registry/browser/project.py
544index 61559c4..233207a 100644
545--- a/lib/lp/registry/browser/project.py
546+++ b/lib/lp/registry/browser/project.py
547@@ -31,7 +31,7 @@ __all__ = [
548 ]
549
550
551-from z3c.ptcompat import ViewPageTemplateFile
552+from zope.browserpage import ViewPageTemplateFile
553 from zope.component import getUtility
554 from zope.event import notify
555 from zope.formlib import form
556diff --git a/lib/lp/registry/browser/sourcepackage.py b/lib/lp/registry/browser/sourcepackage.py
557index 459c3af..19a6e89 100644
558--- a/lib/lp/registry/browser/sourcepackage.py
559+++ b/lib/lp/registry/browser/sourcepackage.py
560@@ -29,7 +29,7 @@ from lazr.enum import (
561 Item,
562 )
563 from lazr.restful.interface import copy_field
564-from z3c.ptcompat import ViewPageTemplateFile
565+from zope.browserpage import ViewPageTemplateFile
566 from zope.component import (
567 adapter,
568 getMultiAdapter,
569diff --git a/lib/lp/registry/browser/team.py b/lib/lp/registry/browser/team.py
570index ba79b6c..73f30c5 100644
571--- a/lib/lp/registry/browser/team.py
572+++ b/lib/lp/registry/browser/team.py
573@@ -44,7 +44,7 @@ from lazr.restful.interfaces import IJSONRequestCache
574 from lazr.restful.utils import smartquote
575 import pytz
576 import simplejson
577-from z3c.ptcompat import ViewPageTemplateFile
578+from zope.browserpage import ViewPageTemplateFile
579 from zope.component import getUtility
580 from zope.formlib.form import (
581 Fields,
582diff --git a/lib/lp/registry/doc/product-widgets.txt b/lib/lp/registry/doc/product-widgets.txt
583index cf09219..b289107 100644
584--- a/lib/lp/registry/doc/product-widgets.txt
585+++ b/lib/lp/registry/doc/product-widgets.txt
586@@ -402,7 +402,7 @@ GhostWidget to suppress the markup.
587 Launchpad form macros do not generate table rows for the GhostWidget.
588
589 >>> from lp.services.config import config
590- >>> from z3c.ptcompat import ViewPageTemplateFile
591+ >>> from zope.browserpage import ViewPageTemplateFile
592 >>> from lp.app.browser.launchpadform import LaunchpadFormView
593
594 >>> class GhostWidgetView(LaunchpadFormView):
595diff --git a/lib/lp/scripts/utilities/warninghandler.py b/lib/lp/scripts/utilities/warninghandler.py
596index 026f69e..46b8a73 100644
597--- a/lib/lp/scripts/utilities/warninghandler.py
598+++ b/lib/lp/scripts/utilities/warninghandler.py
599@@ -60,7 +60,7 @@ class ImportantInfo:
600 return '\n'.join(L)
601
602 # ViewPageTemplateFile has .filename.
603-from z3c.ptcompat import ViewPageTemplateFile
604+from zope.browserpage import ViewPageTemplateFile
605
606 # PythonExpr has .text, the text of the expression.
607 from zope.tales.pythonexpr import PythonExpr
608diff --git a/lib/lp/services/feeds/feed.py b/lib/lp/services/feeds/feed.py
609index 84fd56f..9462062 100644
610--- a/lib/lp/services/feeds/feed.py
611+++ b/lib/lp/services/feeds/feed.py
612@@ -22,7 +22,7 @@ import os
613 import time
614 from urlparse import urljoin
615
616-from z3c.ptcompat import ViewPageTemplateFile
617+from zope.browserpage import ViewPageTemplateFile
618 from zope.component import getUtility
619 from zope.datetime import rfc1123_date
620 from zope.interface import implementer
621diff --git a/lib/lp/services/profile/profile.py b/lib/lp/services/profile/profile.py
622index 7516045..0c7a077 100644
623--- a/lib/lp/services/profile/profile.py
624+++ b/lib/lp/services/profile/profile.py
625@@ -24,7 +24,6 @@ import threading
626
627 from bzrlib import lsprof
628 import oops_datedir_repo.serializer_rfc822
629-from z3c.pt.pagetemplate import PageTemplateFile
630 from zope.component import (
631 adapter,
632 getUtility,
633@@ -32,6 +31,7 @@ from zope.component import (
634 from zope.contenttype.parse import parse
635 from zope.error.interfaces import IErrorReportingUtility
636 from zope.exceptions.exceptionformatter import format_exception
637+from zope.pagetemplate.pagetemplatefile import PageTemplateFile
638 from zope.publisher.interfaces import (
639 IEndRequestEvent,
640 IStartRequestEvent,
641diff --git a/lib/lp/services/webapp/error.py b/lib/lp/services/webapp/error.py
642index df592e9..5712962 100644
643--- a/lib/lp/services/webapp/error.py
644+++ b/lib/lp/services/webapp/error.py
645@@ -17,8 +17,8 @@ import httplib
646 import sys
647 import traceback
648
649-from z3c.ptcompat import ViewPageTemplateFile
650 from zope.browser.interfaces import ISystemErrorView
651+from zope.browserpage import ViewPageTemplateFile
652 from zope.component import getUtility
653 from zope.exceptions.exceptionformatter import format_exception
654 from zope.interface import implementer
655diff --git a/lib/lp/services/webapp/login.py b/lib/lp/services/webapp/login.py
656index b9076b1..30fc146 100644
657--- a/lib/lp/services/webapp/login.py
658+++ b/lib/lp/services/webapp/login.py
659@@ -28,8 +28,8 @@ from paste.httpexceptions import (
660 )
661 import six
662 import transaction
663-from z3c.ptcompat import ViewPageTemplateFile
664 from zope.authentication.interfaces import IUnauthenticatedPrincipal
665+from zope.browserpage import ViewPageTemplateFile
666 from zope.component import (
667 getSiteManager,
668 getUtility,
669diff --git a/lib/lp/services/webapp/metazcml.py b/lib/lp/services/webapp/metazcml.py
670index ccbb4f5..909fe2d 100644
671--- a/lib/lp/services/webapp/metazcml.py
672+++ b/lib/lp/services/webapp/metazcml.py
673@@ -5,11 +5,11 @@ __metaclass__ = type
674
675 import inspect
676
677-from z3c.ptcompat.zcml import (
678- page_directive as original_page,
679- pages_directive as original_pages,
680- )
681 from zope.app.publication.metaconfigure import publisher
682+from zope.browserpage.metaconfigure import (
683+ page as original_page,
684+ pages as original_pages,
685+ )
686 import zope.browserpage.metadirectives
687 from zope.component import getUtility
688 from zope.component.security import PublicPermission
689diff --git a/lib/lp/services/webapp/namespace.py b/lib/lp/services/webapp/namespace.py
690index 498ec9b..33d15b1 100644
691--- a/lib/lp/services/webapp/namespace.py
692+++ b/lib/lp/services/webapp/namespace.py
693@@ -9,8 +9,8 @@ __all__ = [
694 ]
695
696
697-from z3c.ptcompat import (
698- bind_template,
699+from zope.browserpage.viewpagetemplatefile import (
700+ BoundPageTemplate,
701 ViewPageTemplateFile,
702 )
703 from zope.component import getMultiAdapter
704@@ -44,7 +44,8 @@ class FormNamespaceView(view):
705 if isinstance(context, LaunchpadFormView):
706 # Note: without explicitly creating the BoundPageTemplate here
707 # the view fails to render.
708- context.index = bind_template(FormNamespaceView.template, context)
709+ context.index = BoundPageTemplate(
710+ FormNamespaceView.template, context)
711 else:
712 raise TraversalError("The URL does not correspond to a form.")
713
714diff --git a/lib/lp/snappy/browser/widgets/snaparchive.py b/lib/lp/snappy/browser/widgets/snaparchive.py
715index e138664..fadd621 100644
716--- a/lib/lp/snappy/browser/widgets/snaparchive.py
717+++ b/lib/lp/snappy/browser/widgets/snaparchive.py
718@@ -9,7 +9,7 @@ __all__ = [
719 'SnapArchiveWidget',
720 ]
721
722-from z3c.ptcompat import ViewPageTemplateFile
723+from zope.browserpage import ViewPageTemplateFile
724 from zope.component import getUtility
725 from zope.formlib.interfaces import (
726 ConversionError,
727diff --git a/lib/lp/snappy/browser/widgets/snapbuildchannels.py b/lib/lp/snappy/browser/widgets/snapbuildchannels.py
728index fb1e600..8a9b67a 100644
729--- a/lib/lp/snappy/browser/widgets/snapbuildchannels.py
730+++ b/lib/lp/snappy/browser/widgets/snapbuildchannels.py
731@@ -10,7 +10,7 @@ __all__ = [
732 'SnapBuildChannelsWidget',
733 ]
734
735-from z3c.ptcompat import ViewPageTemplateFile
736+from zope.browserpage import ViewPageTemplateFile
737 from zope.formlib.interfaces import IInputWidget
738 from zope.formlib.utility import setUpWidget
739 from zope.formlib.widget import (
740diff --git a/lib/lp/snappy/browser/widgets/storechannels.py b/lib/lp/snappy/browser/widgets/storechannels.py
741index 2d4d665..0e3e211 100644
742--- a/lib/lp/snappy/browser/widgets/storechannels.py
743+++ b/lib/lp/snappy/browser/widgets/storechannels.py
744@@ -9,7 +9,7 @@ __all__ = [
745 'StoreChannelsWidget',
746 ]
747
748-from z3c.ptcompat import ViewPageTemplateFile
749+from zope.browserpage import ViewPageTemplateFile
750 from zope.formlib.interfaces import (
751 IInputWidget,
752 WidgetInputError,
753diff --git a/lib/lp/soyuz/browser/sourceslist.py b/lib/lp/soyuz/browser/sourceslist.py
754index 228ba8c..29697aa 100644
755--- a/lib/lp/soyuz/browser/sourceslist.py
756+++ b/lib/lp/soyuz/browser/sourceslist.py
757@@ -3,7 +3,7 @@
758
759 """Browser views for sources list entries."""
760
761-from z3c.ptcompat import ViewPageTemplateFile
762+from zope.browserpage import ViewPageTemplateFile
763 from zope.component import getUtility
764 from zope.formlib.interfaces import IInputWidget
765 from zope.formlib.utility import setUpWidget
766diff --git a/lib/lp/testopenid/browser/server.py b/lib/lp/testopenid/browser/server.py
767index 18d4434..c3d540a 100644
768--- a/lib/lp/testopenid/browser/server.py
769+++ b/lib/lp/testopenid/browser/server.py
770@@ -26,8 +26,8 @@ from openid.server.server import (
771 Server,
772 )
773 from openid.store.memstore import MemoryStore
774-from z3c.ptcompat import ViewPageTemplateFile
775 from zope.authentication.interfaces import IUnauthenticatedPrincipal
776+from zope.browserpage import ViewPageTemplateFile
777 from zope.component import getUtility
778 from zope.interface import implementer
779 from zope.security.proxy import isinstance as zisinstance
780diff --git a/lib/lp/translations/browser/hastranslationimports.py b/lib/lp/translations/browser/hastranslationimports.py
781index 0a18d80..fe55038 100644
782--- a/lib/lp/translations/browser/hastranslationimports.py
783+++ b/lib/lp/translations/browser/hastranslationimports.py
784@@ -13,7 +13,7 @@ import datetime
785
786 import pytz
787 import simplejson
788-from z3c.ptcompat import ViewPageTemplateFile
789+from zope.browserpage import ViewPageTemplateFile
790 from zope.component import getUtility
791 from zope.formlib import form
792 from zope.formlib.widget import CustomWidgetFactory
793diff --git a/lib/lp/translations/browser/person.py b/lib/lp/translations/browser/person.py
794index bd0e32a..9b2e992 100644
795--- a/lib/lp/translations/browser/person.py
796+++ b/lib/lp/translations/browser/person.py
797@@ -19,7 +19,7 @@ from itertools import islice
798 import urllib
799
800 import pytz
801-from z3c.ptcompat import ViewPageTemplateFile
802+from zope.browserpage import ViewPageTemplateFile
803 from zope.component import getUtility
804 from zope.formlib.widget import CustomWidgetFactory
805 from zope.formlib.widgets import TextWidget
806diff --git a/lib/lp/translations/browser/translationmessage.py b/lib/lp/translations/browser/translationmessage.py
807index 7442198..c2bdc04 100644
808--- a/lib/lp/translations/browser/translationmessage.py
809+++ b/lib/lp/translations/browser/translationmessage.py
810@@ -25,8 +25,8 @@ import urllib
811
812 import pytz
813 from six.moves.urllib.parse import parse_qsl
814-from z3c.ptcompat import ViewPageTemplateFile
815 from zope import datetime as zope_datetime
816+from zope.browserpage import ViewPageTemplateFile
817 from zope.component import getUtility
818 from zope.formlib.interfaces import IInputWidget
819 from zope.formlib.utility import setUpWidgets
820diff --git a/setup.py b/setup.py
821index 3f7b6b3..493ee5a 100644
822--- a/setup.py
823+++ b/setup.py
824@@ -236,8 +236,7 @@ setup(
825 'WebOb',
826 'WebTest',
827 'WSGIProxy2',
828- 'z3c.pt',
829- 'z3c.ptcompat[zpt]',
830+ 'z3c.ptcompat',
831 'zc.zservertracelog',
832 'zope.app.http',
833 'zope.app.publication',
834diff --git a/utilities/create-lp-wadl-and-apidoc.py b/utilities/create-lp-wadl-and-apidoc.py
835index 4894943..3f26c72 100755
836--- a/utilities/create-lp-wadl-and-apidoc.py
837+++ b/utilities/create-lp-wadl-and-apidoc.py
838@@ -21,8 +21,8 @@ import sys
839 import breezy
840 from breezy.branch import Branch
841 from lazr.restful.interfaces import IWebServiceConfiguration
842-from z3c.ptcompat import PageTemplateFile
843 from zope.component import getUtility
844+from zope.pagetemplate.pagetemplatefile import PageTemplateFile
845
846 from lp.services.scripts import execute_zcml_for_scripts
847 from lp.services.webservice.wadl import (
848diff --git a/zcml/zopeapp.zcml b/zcml/zopeapp.zcml
849index a0a230c..3606c4e 100644
850--- a/zcml/zopeapp.zcml
851+++ b/zcml/zopeapp.zcml
852@@ -18,7 +18,6 @@
853 <include package="zope.sendmail" file="meta.zcml" />
854 <include package="zope.app.publication" file="meta.zcml" />
855 <include package="zope.app.publisher.xmlrpc" file="meta.zcml" />
856- <includeOverrides package="z3c.ptcompat" file="meta.zcml" />
857
858 <!-- Note that we need to do this early, as later startup
859 subscribers may break without fixups -->
860@@ -33,7 +32,9 @@
861 <include package="zope.session" />
862
863 <include package="zope.app.publisher.xmlrpc" />
864- <include package="z3c.pt" />
865+
866+ <!-- Uncomment this to use Chameleon for page template rendering -->
867+ <!-- <include package="z3c.ptcompat" /> -->
868
869
870 <!-- selected things from zope.traversing -->

Subscribers

People subscribed via source and target branches

to status/vote changes: