On Mon, Dec 09, 2002 at 09:50:22PM +0100, Frederic Faure wrote:
I'm back to playing with Zope, except this time I need it as a tool to rewrite business apps (payroll, in this case.) I've read the New Riders book along wit the online Zope Book. I understand that DTML is evil and that new users should prefer ZPT.
I wouldn't say that DTML is evil... simple DTML is very nice, it's just that *abuse* of DTML is evil and it's always tempting to add just "one more thing" instead of breaking it out into a script. And you can abuse ZPT pretty easily, too... tal:define and tal:condition and tal:repeat give you plenty of rope. It's somewhat more explicit rope than some of the magic DTML stuff, and there's a lot less of it; but you can still hang yourself with it. :)
Anyway, is there a good document for newbies that come from procedural languages like VB that would show them how to get up to speed?
The "Advanced Scripting" chapter in the online Zope book is a decent introduction to this kind of thing, although it's a lot more nuts-and-bolts than best-practices. I said *introduction*... it has little examples of forms that are processed by scripts that can call other scripts, etc. Since you say "procedural languages", I suspect what you really need is to read this: http://www.zope.org/Members/mcdonc/HowTos/gainenlightenment Again, it isn't exactly what you asked for - it's heavy on rah-rah and contains no real "how do I..." stuff. But it will get you in the right mind-frame.
I need to understand how to separate logic and presentation as cleanly as possible.
Object orientation will help you here. Remember what the Extreme Programming guys say: "Refactor mercilessly". When you see some logic in your presentation templates, ask yourself, "What is the maximum amount of this logic that I can break out into a separate script? what is the absolute minimal amount of logic that I can have in this template and still get the job done?" For example, look at the code in a tal:condition="..." statement. Do you have to do a bunch of tal:defines just to set up the condition? Do you have nested tal:conditions? Can you put all that stuff in one python script and in this template just have tal:condition="here/myscript"? These are the kind of low-level questions you can ask yourself. As far as architecture of your app... big topic. TOO big. "It depends." -- Paul Winkler http://www.slinkp.com "Welcome to Muppet Labs, where the future is made - today!"