[Zope] Simple ZSQL question -- variable expansion in dtml-if?

J C Lawrence claw@kanga.nu
Tue, 11 Jan 2000 01:18:58 -0800


I'm attempting to write a ZSQL method which has the following
behaviour (the exact case below is a little more detailed):

  When the passed X parameter is 1 it issues the following SQL:

    SELECT * FROM table WHERE col=1

  When X parameter is 0:

    SELECT * FROM table 

  And when X is -1:

    SELECT * FROM table WHERE col=0

My attempted ZSQL is below (a little more complicated that the
above).  CatParent and Approved are passed in arguments to the
method:

  SELECT *
  FROM Categories
  <dtml-sqlgroup where>
    <dtml-sqltest CatParent type=int>
  <dtml-and>
    <dtml-if expr="Approved == 1">
      <dtml-sqltest Approved type=int>
    </dtml-if>
    <dtml-if "Approved == -1">
      Approved=0
    </dtml-if>
  </dtml-sqlgroup>
  ORDER BY CatName

The problem is that the "Approved" variable in the dtml-if clauses
does not appear to be getting expanded to its value.  It doesn't
improve if I replace it with "_['Approved']".  What am I missing?
While I'm new to Zope I *think* that should work per what I've read.

Instead for all values of Approved I get:

  SELECT * FROM Categories WHERE CatParent=### ORDER BY CATNAME

and Approved never gets mentioned.  

Is there a way to accomplish the above within a single ZSQL method,
or must I break it out?

-- 
J C Lawrence                                 Home: claw@kanga.nu
----------(*)                              Other: coder@kanga.nu
--=| A man is as sane as he is dangerous to his environment |=--