Migration from Zope3 to Pyramid. Step 1: ZPT + z3c.pagelet

127 views
Skip to first unread message

Sebastien Douche

unread,
Sep 15, 2011, 9:00:36 PM9/15/11
to pylons-...@googlegroups.com
Hi Folks,
currently we have an application under Zope3 (ZTK 1.1.2) and we want
migrate to Pyramid. The first step is imho to use Pyramid libs for
publishing content, aka Chameleon.

Question: z3c.pagelet works with Chameleon? if not, what is the best
migration path to switch? Remove pagelet? Use another zpt extension?

Thanks.

--
Sebastien Douche <sdo...@gmail.com>
Twitter : @sdouche

Chris McDonough

unread,
Sep 15, 2011, 9:41:41 PM9/15/11
to pylons-...@googlegroups.com
On Fri, 2011-09-16 at 03:00 +0200, Sebastien Douche wrote:
> Hi Folks,
> currently we have an application under Zope3 (ZTK 1.1.2) and we want
> migrate to Pyramid. The first step is imho to use Pyramid libs for
> publishing content, aka Chameleon.
>
> Question: z3c.pagelet works with Chameleon? if not, what is the best
> migration path to switch? Remove pagelet? Use another zpt extension?

At this point, it's hit or miss whether any particular zope.foo library
will work under Pyramid. In general, zope libraries that depend on
Zope's publisher or request implementation will plain just not work.

I've never used z3c.pagelet, but given a quick look at some of its
implementations, it's very unlikely it will work because it depends on
e.g. zope.publisher (which Pyramid replaces entirely), and z3c.form,
which depends on Zope-style request objects (which Pyramid doesn't
have).

So I think it's largely a rewrite one way or another.

I can't really suggest how to rewrite zc.pagelet. Its readme is written
in terms of satisfying a goal I've never shared, I don't want to share,
and I don't want to understand or even know anything about.

I'd suggest instead rewriting your application code to disuse pagelets,
using something simpler you write in its place. If that sounds
unpalatable, I'd probably have to suggest just sticking with Zope 3.

- C


Sebastien Douche

unread,
Apr 27, 2012, 8:53:33 AM4/27/12
to pylons-...@googlegroups.com
On Fri, Sep 16, 2011 at 03:41, Chris McDonough <chr...@plope.com> wrote:

Hi Chris
Sorry for replying so late but at last, we use Chameleon (with z3c.ptcompat).

> I can't really suggest how to rewrite zc.pagelet.  Its readme is written
> in terms of satisfying a goal I've never shared, I don't want to share,
> and I don't want to understand or even know anything about.

It could not be clearer :). How you write "reusable" template with
Pyramid? With Chameleon and METAL? Mako? Jinja?


--
Sebastien Douche <sdo...@gmail.com>
Twitter: @sdouche / G+: +sdouche

Chris McDonough

unread,
Apr 27, 2012, 9:07:11 AM4/27/12
to pylons-...@googlegroups.com
On 04/27/2012 08:53 AM, Sebastien Douche wrote:
> On Fri, Sep 16, 2011 at 03:41, Chris McDonough<chr...@plope.com> wrote:
>
> Hi Chris
> Sorry for replying so late but at last, we use Chameleon (with z3c.ptcompat).
>
>> I can't really suggest how to rewrite zc.pagelet. Its readme is written
>> in terms of satisfying a goal I've never shared, I don't want to share,
>> and I don't want to understand or even know anything about.
>
> It could not be clearer :). How you write "reusable" template with
> Pyramid? With Chameleon and METAL? Mako? Jinja?

I personally use METAL yes.

- C

Brian Sutherland

unread,
Apr 27, 2012, 10:00:10 AM4/27/12
to pylons-...@googlegroups.com
On Fri, Apr 27, 2012 at 02:53:33PM +0200, Sebastien Douche wrote:
> On Fri, Sep 16, 2011 at 03:41, Chris McDonough <chr...@plope.com> wrote:
>
> Hi Chris
> Sorry for replying so late but at last, we use Chameleon (with z3c.ptcompat).
>
> > I can't really suggest how to rewrite zc.pagelet. �Its readme is written
> > in terms of satisfying a goal I've never shared, I don't want to share,
> > and I don't want to understand or even know anything about.
>
> It could not be clearer :). How you write "reusable" template with
> Pyramid? With Chameleon and METAL? Mako? Jinja?

I've started to think of templates as plain old python functions that
return unicode. So an example of a reusable template is something like
this for me:

def navigation(request, links):
...

Putting templates together then becomes putting functions together.
Often I use Chameleon to do the actual rendering, but sometimes not.

--
Brian Sutherland
Reply all
Reply to author
Forward
0 new messages