[Zope] a batch of inSaNitY!

Programmer programmer at paradigm-corp.com
Thu May 31 10:15:34 EDT 2007


 Hi Jonathan,

I have something similar to your idea already. The python script
supplies page number to a stored procedure which handles the actual
paging. The script takes the result from the proc and builds an html
table and handles column sorting on the table. The output of the script
is just a single variable so I can just use &dtml-var instead of the
flaky &dtml-in. 
Problem I have now is this new search interface makes use of full-text
searching on SQL Server 2K. The paging proc wasn't written to handle it
and will need to be rewritten from scratch. This will take a lot of time
and testing. I thought I could slap something simple and fast together
to use in the interim to allow people to start testing the search
engine.

I really do wish Zope would either fix or eliminate broken features. At
the very least have the curtesy to say "hey y'all, this is broke, don't
bother" so folks don't waste time with it. 

Mike

-----Original Message-----
From: Jonathan [mailto:dev101 at magma.ca] 
Sent: Wednesday, May 30, 2007 5:22 PM
To: Programmer; zope at zope.org
Subject: Re: [Zope] a batch of inSaNitY!


----- Original Message -----
From: "Programmer" <programmer at paradigm-corp.com>
To: <zope at zope.org>
Sent: Wednesday, May 30, 2007 4:44 PM
Subject: [Zope] a batch of inSaNitY!


> Hi
>
> I am about to go stark, raving, frothing mad with the DTML-IN
batching.
> Is there a known (or unknown) bug with this?
>
> I have searched and read everything I can find about this and no luck.
> The problem is with carrying the query terms over from one batch page
to
> the next. Right now I am using the script found here:
>
http://mail.zope.org/pipermail/zope-collector-monitor/2003-May/002001.ht
> ml
>
> Except I changed,
>
> <dtml-let
>  batch="_.range(100, 180)"
>  batch_size="10"
>  batch_start="REQUEST.get('batch_start',1)">
>
> To
>
> <dtml-let
>  batch="myZSQLMethod1"
>  batch_size="10"
>  batch_start="REQUEST.get('batch_start',1)">
>
> The mySQLMethod1 takes two params which the search form supplies to
> REQUEST. This works great. The pagination works beautifully. However,
> when I use the very same result script with myZSQLMethod2 (same DB
> table), which takes 5 params (all optional) the pagination breaks and
> no-longer passes the query terms.
> I have checked and rechecked both scripts and both forms. The
> ZSQLMethods both test good. I am out of ideas. For the life of me I
> cannot figure out why I'm losing my query terms in one and not the
other
> when the two are almost identical.
> Care to enlighten me with your collective wisdom?

In similar situations I have done the following:

1) call a python script/external method which: (i) does the db search;
(ii) 
formats the results as required for display; (iii) returns a tuple that 
contains: list of search results, url parameters for 'previous' link;
url 
parameters for 'next' link; url parameters for 'first link'; url
parameters 
for 'last' link

2) use a dtml method to call the script/ext.method like

<dtml-let rStat="mySearchRoutine(parm1, parm1, ...)">

  <dtml-in "rStat[0]">
      display code here eg.  <dtml-var sequence-item><br>
      or could be an html/css table, etc.

     <dtml-if sequence-end>
         <a href="...?<dtml-var "rStat[1]">">previous</a>
         <a href="...?<dtml-var "rStat[2]">">next</a>
         <a href="...?<dtml-var "rStat[3]">">first</a>
         <a href="...?<dtml-var "rStat[4]">">last</a>
      </dtml-if>

  </dtml-in>
</dtml-let>

This greatly simplifies the dtml and facilitates debugging and future 
modifications.

hth

Jonathan



More information about the Zope mailing list