Posted
about 15 years
ago
by
my-zope
... And working with multiple python versions. At work, I do a lot of zope dev and deployment
that requires python versions 2.4.x or 2.5.x Since most of the time newer linux install comes
with newer python version, I need to install python from sourcweofije...
|
Posted
about 15 years
ago
by
ch-athens
Oh, and while I'm at the topic of "stupid little things I've left off half finished", let me add a
note to self: When you get an error "ValueError: The permission XYZ is invalid" in Zope 2, it's
because you've set up a permission (e.g. with manage_pe...
|
Posted
over 15 years
ago
by
Random notes from mg
Disclaimer: I received a free review copy of this book. The book links are
affiliate links; I get a small amount from any purchase you make through them.
is a Python web framework, built on
top of the Zope Toolkit, which is the core of what used to
... [More]
be called Zope 3 and
is now rebranded as BlueBream. Confused yet? Get used to it: the small
pluggable components are the heart and soul of ZTK, and the source of its
flexibility. It's not surprising that people take the same approach on a larger
scale: take Zope 3 apart into smaller packages and reassemble them into
different frameworks such as Grok, BlueBream or repoze.bfg.
Grok
book by Carlos de la Guardia introduces the framework by demonstrating
how to create a small but realistic To-do list manager. I like this technique,
and it works pretty well. The author covers many topics:
SQL databases, integration with SQLAlchemy (including a common
transactional model)
very short intro to testing (zope.testing, unit tests and doctests,
functional tests with zope.testbrowsing) and debugging (pdb; AJAXy
debugger, which looks exactly like the Pylons one with an uglier skin)
deployment (my second favourite chapter): paster, apache and mod_proxy,
mod_wsgi, pound, squid, varnish, scalable deployments.
Some important topics like internationalization, time zones, testing with
Selenium, and (especially) database migration (which is pretty specific for
ZODB) were not covered.
,
but there's a caveat: there's the usual slew of typographical mistakes and
other errors I've come to expect from books published by Packt. It's their
third book I've seen; all three had surprisingly high numbers of errors. Some
had more, others had fewer. The Grok book was on the high side and the first
one where I was tempted to record a "" metric.
The mistakes are easy to notice and correct, so they didn't impede my
understanding of the book's content. Disclaimer: I've been working with
Zope 3 for the last six-or-so years, so I was pretty familiar with the
underlying technologies, just not the thin Grok convenience layer. If
minor errors annoy you, stay away. I haven't noticed any major
factual errors, although there were what I would consider some pretty important
omissions:
ZODB is not as transparent as people tell you. There are many gotchas,
especially if you want to refactor your code without throwing away old
databases.
is free to recursively remove anything under
. Keeping your database there is fine only if you don't mind
occasionally starting from scratch.
The ZODB transaction conflict resolution depends on being able to
repeat requests several times; this is important if your code has external
side effects (e.g. sends emails, creates files, pings 3rd party websites over
HTTP). Packages like megrok.rdb or zope.sendmail take care of this; it'd be
nice to be shown how to do that for your own code before you discover this
issue the hard way when your app starts charging people's credit cards three
times every now and then.
You need to make sure you send out object events at appropriate times, or
your catalog indexes won't be updated.
Permission and role grants are persistent: if you delete a user and then
create a new one with the same username, the new user will have all the roles
and permissions granted to the old one. If you implement user deletion, you
need to explicitly remove old grants.
attribute; permission/role grants will not work properly on objects without a
. Most of the time this is taken care of
automatically, but when it's not, you can get really confusing errors.
should only be used for browser requests; blindly
calling it from a traversal event handler can break WebDAV/XML-RPC.
(Incidentally, I should file a bug about that; it should abort if you pass a
non-browser request instead of silently converting it into a browser
request.)
in the URL can be a
security hole.
Overall, Grok is pretty nice, especially compared to vanilla Zope 3.
However, when compared to frameworks like Pylons or Django, Grok appears more
complex and seemingly requires you to do additional work for unclear gain. For
example, chapter 8 has you writing three components for every new form you add:
one for the form itself, one for a pagelet wrapping the form, and one for a
page containing the pagelet. Most of that code is very similar with only the
names being different. I'm sure there are situations where this kind of
extreme componentization pays off (e.g. it lets you override particular bits on
particular pages to satisfy a particular client's requests, without affecting
any other clients), but the book doesn't convincingly demonstrate those
advantages. Again, I may be biased here since I've been enjoying those
advantages for the past six years, without ever having felt the pain of doing
similar customizations with a less flexible framework. (It's a gap in my
professional experience that I'm itching to fill.)
on Planet Python. [Less]
|
Posted
over 15 years
ago
by
Zope.org
31 march 2010 ??? Infrae is pleased to announce the final release of Silva 2.2. This release adds a slew of new features for users, developers, and system administrators, and is a leap forward with Zope 2.11 and Five/Grok technology.
|