[Zope-DB] writing a template to test if the sql worked

Laura McCord Laura.McCord at doucet-austin.com
Tue May 4 11:58:03 EDT 2004


Ok.
I will look into what you suggested.

Thanks.

-----Original Message-----
From: Charlie Clark [mailto:charlie at egenix.com] 
Sent: Tuesday, May 04, 2004 10:55 AM
To: Laura McCord
Cc: zope-db at zope.org
Subject: Re: [Zope-DB] writing a template to test if the sql worked


Hi Laura,

get DTML and *all* HTML scripting stuff out of your head; I think they
are 
the causes of lots of problems.

ZPTs are great because they encourage you to concentrate on your 
presentation logic and break your procedural and data logic into
external 
components.

So what you should be doing is posting your form to a PythonScript which

does the error checking and informs the result template accordingly.

Your PythonScript will look something like this

request = context.REQUEST

errors = []
error_msg = ""

try:
	context.add_pc_sql()
except SpecificError: """you will need to change this but I'm adding to 
make a point"""
	errors.append("database error")
	error_msg += "Sorry the pc could not be added to the database"

request.set("errors", errors)
request.ser("error_msg", error_msg

return context.myZPT

And your ZPT might look something like this:

<body tal:define="errors request/errors | nothing">
<!-- use a stylesheet for your formatting -->

<p class="error"
tal:condition="exists: errors"
tal:content="structure request/error">Error message will be printed
here</p>

<p tal:condition="not: errors">
The pc, <strong tal:content="request/pcname">PCNAME</strong> was 
successfully added to the database.</p>
</body>

Notice how inflexible tal:condition is. Although this can be annoying it
is 
actually a "good thing". You really don't want control structures in
your 
presentation code. Simple binary cases: "either this or that" is as much
as 
you want.

Working like this will allow you to declare how specific things should
be 
handled - there respective success and failure messages allowing you to 
reuse the code more easily. Note this is also how Formulator works so it

might be time to give that a spin.

Charlie

On 2004-05-04 at 17:31:33 [+0200], Laura McCord wrote:
> 
> Hi,
> 
>  If I have an edit form and I click on edit after inserting the info 
> into the fields I am redirected to a dtml method that I am using to 
> call the zsql method and it tests if it was successful using the 
> <dtml-try> and <dtml-except> conditons. This is the code that I am 
> using:
> 
> <html>
> <body bgcolor="#e7e7e7">
> <font color="#0a4f72" size="4">
> <dtml-if name="create">
> <dtml-try>
>  <dtml-call name="add_pc_sql">
>  The pc, <strong><dtml-var name="pcname">,</strong>
>  was successfully added to the database.
>  <dtml-except>
>  Sorry, the pc was not added to the database.
>  </dtml-try>
> </dtml-if>
> </font>
> </body>
> </html>
> 
> I have been looking in the zope book and trying to learn how I could 
> change this into a page template instead of a dtml method. Is there 
> anything in page templates that can do the error checking like this 
> dtml method? I wasn't sure if I would be using a <tal:condition> to 
> achieve this.
> 
> Thanks



More information about the Zope-DB mailing list