[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