[Zope] How does dtml-sqlgroup really work?
Steve Spicklemire
steve@spvi.com
Sat, 8 Jun 2002 13:32:46 -0500
Hi Jorge,
Yup.. it's chapter 13, all about LoginManager and
Security/Authentication.
take care,
-steve
On Saturday, June 8, 2002, at 12:08 PM, Jorge O. Martinez wrote:
> Steve:
>
> Thanks, I'll try this approach. BTW, I got your book and it's really
> cool (App Dev and Cont. Man). Is this in the book and I missed it?
> Guess I'll have to dig deeper into it ;-).
>
> Regards,
>
> Jorge M.
>
> Steve Spicklemire wrote:
>> Hi Jorge,
>> Here is an example from www.zopeonarope.com, notice that there is only
>> one sqlgroup with a 'where'. The other sqlgroup tags lie between
>> dtml-and tags producing "and" logic. The idea is that you can supply
>> various parameters, and depending which ones are not the empty string,
>> different renderings of the template will result with the correct
>> logic.
>> 01 selectSQL:
>> 02
>> 03 <params>personID="" passwd="" roles=""
>> domains=""</params>
>> 04 select personID, passwd, roles, domains from
>> Passwords_Basic
>> 05 <dtml-sqlgroup where>
>> 06
>> 07 <dtml-sqlgroup>
>> 08 <dtml-if personID>
>> 09 <dtml-sqltest personID type=string>
>> 10 </dtml-if>
>> 11 </dtml-sqlgroup>
>> 12 <dtml-and>
>> 13 <dtml-sqlgroup>
>> 14 <dtml-if passwd >
>> 15 <dtml-sqltest passwd type=string>
>> 16 </dtml-if>
>> 17 </dtml-sqlgroup>
>> 18 <dtml-and>
>> 19 <dtml-sqlgroup>
>> 20 <dtml-if roles >
>> 21 <dtml-sqltest roles type=string>
>> 22 </dtml-if>
>> 23 </dtml-sqlgroup>
>> 24 <dtml-and>
>> 25 <dtml-sqlgroup>
>> 26 <dtml-if domains >
>> 27 <dtml-sqltest domains type=string>
>> 28 </dtml-if>
>> 29 </dtml-sqlgroup>
>> 30
>> 31 </dtml-sqlgroup>
>> Maybe give that a try?
>> take care,
>> -steve
>> On Friday, June 7, 2002, at 12:53 PM, Jorge O. Martinez wrote:
>>> Hi all:
>>>
>>> Thanks for your help. In the end I had to use this ugly thing, but it
>>> works, slightly dissapointed I could not get sqltest & sqlgroup to
>>> work....maybe I'll have to time to dig deeper later, and understand
>>> it better when I increase my Zope Zen ;-). Thanks!
>>>
>>> select company_name,ticker,primary_exchange
>>> from
>>> company_index
>>>
>>> <dtml-if company_name>
>>> <dtml-sqlgroup where>
>>> <dtml-sqltest company_name op=like type=nb optional>
>>> </dtml-sqlgroup>
>>> </dtml-if>
>>>
>>> <dtml-if industry_group>
>>> <dtml-sqlgroup where>
>>> <dtml-sqltest industry_group op=like type=nb optional>
>>> </dtml-sqlgroup>
>>> </dtml-if>
>>>
>>> <dtml-if industry_subgroup>
>>> <dtml-sqlgroup where>
>>> <dtml-sqltest industry_subgroup op=like type=nb optional>
>>> </dtml-sqlgroup>
>>> </dtml-if>
>>>
>>> <dtml-if primary_exchange>
>>> <dtml-sqlgroup where>
>>> <dtml-sqltest primary_exchange op=like type=nb optional>
>>> </dtml-sqlgroup>
>>> </dtml-if>
>>>
>>> <dtml-if market_cap>
>>> <dtml-sqlgroup where>
>>> <dtml-sqltest market_cap op=like type=nb optional>
>>> </dtml-sqlgroup>
>>> </dtml-if>
>>>
>>> <dtml-if market_sector>
>>> <dtml-sqlgroup where>
>>> <dtml-sqltest market_sector op=like type=nb optional>
>>> </dtml-sqlgroup>
>>> </dtml-if>
>>>
>>> order by company_name
>>>
>>> Charlie Reiman wrote:
>>>
>>>> You need some 'and's. Try
>>>> <dtml-sqltest ticker op=eq type=nb>
>>>> <dtml-and>
>>>> <dtml-sqltest...>
>>>> Be happy it was an easy problem.
>>>>
>>>>> -----Original Message-----
>>>>> From: zope-admin@zope.org [mailto:zope-admin@zope.org]On Behalf Of
>>>>> Jorge
>>>>> O. Martinez
>>>>> Sent: Friday, June 07, 2002 7:41 AM
>>>>> To: zope@zope.org
>>>>> Subject: [Zope] How does dtml-sqlgroup really work?
>>>>>
>>>>>
>>>>> Hi:
>>>>>
>>>>> Not sure if this is a DB question, or DTML question, so I'm
>>>>> sending it to the
>>>>> general Zope list.
>>>>>
>>>>> I've been banging my head over this relatively simple query, which
>>>>> (if my
>>>>> understanding of the dtml-sqltest tag is correct), should be
>>>>> fine. The idea is
>>>>> simple, get 3 columns from company_index, and display the
>>>>> results, if there's
>>>>> further constrains set (like ticker, company_name, etc.), taylor
>>>>> the query
>>>>> accordingly:
>>>>>
>>>>> select company_name,ticker,primary_exchange
>>>>> from
>>>>> company_index
>>>>> <dtml-sqlgroup where>
>>>>> <dtml-sqltest ticker op=eq type=nb>
>>>>> <dtml-sqltest company_name op=like type=nb>
>>>>> <dtml-sqltest industry_group op=eq type=nb>
>>>>> <dtml-sqltest industry_subgroup op=eq type=nb>
>>>>> <dtml-sqltest market_cap op=eq type=nb>
>>>>> <dtml-sqltest market_sector op=eq type=nb>
>>>>> <dtml-sqltest primary_exchange op=eq type=nb>
>>>>> </dtml-sqlgroup>
>>>>>
>>>>> but it's not happy. It keeps displaying errors like this:
>>>>>
>>>>> *************
>>>>>
>>>>> Zope has encountered an error while publishing this resource.
>>>>>
>>>>> Error Type: KeyError
>>>>> Error Value: industry_group
>>>>>
>>>>> Troubleshooting Suggestions
>>>>>
>>>>> * This resource may be trying to reference a nonexistent object
>>>>> or
>>>>> variable industry_group.
>>>>> * The URL may be incorrect.
>>>>> * The parameters passed to this resource may be incorrect.
>>>>> * A resource that this resource relies on may be
>>>>> encountering an error.
>>>>>
>>>>> For more detailed information about the error, please refer to
>>>>> the HTML source
>>>>> for this page.
>>>>>
>>>>> If the error persists please contact the site maintainer. Thank
>>>>> you for your
>>>>> patience.
>>>>>
>>>>> **************
>>>>>
>>>>> Which in my opinion does not make sense. I intedended for only
>>>>> one var to be
>>>>> set, and leave the others non-existing alone. I get this error
>>>>> when I only set
>>>>> the company_name, and I expect my query to be:
>>>>>
>>>>> select company_name,ticker,primary_exchange
>>>>> from
>>>>> company_index
>>>>> where company_index like 'Value I passed%'
>>>>>
>>>>> Shouldn't sqltest should recognize that, and not raise an error?
>>>>>
>>>>> -------------------------
>>>>>
>>>>> I used a variation, which I don't think should be used because
>>>>> supposedly
>>>>> sqltest's job is to test if a var is set, and include it in my
>>>>> 'where' if it
>>>>> is. As you can see, I check with a <dtml-if ..> if the var is
>>>>> set, but I think
>>>>> I should not have to do it since, I think based on docs I've read,
>>>>> that
>>>>> <dtml-sqltest...> should do that.
>>>>>
>>>>> select company_name,ticker,primary_exchange
>>>>> from
>>>>> company_index
>>>>> <dtml-sqlgroup where>
>>>>> <dtml-if ticker>
>>>>> <dtml-sqltest ticker op=eq type=nb>
>>>>> </dtml-if>
>>>>> <dtml-if company_name>
>>>>> <dtml-sqltest company_name op=like type=nb>
>>>>> </dtml-if>
>>>>> <dtml-if industry_group>
>>>>> <dtml-sqltest industry_group op=eq type=nb>
>>>>> </dtml-if>
>>>>> <dtml-if industry_subgroup>
>>>>> <dtml-sqltest industry_subgroup op=eq type=nb>
>>>>> </dtml-if>
>>>>> <dtml-if market_cap>
>>>>> <dtml-sqltest market_cap op=eq type=nb>
>>>>> </dtml-if>
>>>>> <dtml-if market_sector>
>>>>> <dtml-sqltest market_sector op=eq type=nb>
>>>>> </dtml-if>
>>>>> <dtml-if primary_exchange>
>>>>> <dtml-sqltest primary_exchange op=eq type=nb>
>>>>> </dtml-if>
>>>>> </dtml-sqlgroup>
>>>>>
>>>>> By the way, this way does not work either, I also get an error
>>>>> using the above
>>>>> syntax:
>>>>>
>>>>> ****************
>>>>>
>>>>> Zope Error
>>>>>
>>>>> Zope has encountered an error while publishing this resource.
>>>>>
>>>>> Error Type: DatabaseError
>>>>> Error Value: (933, 'ORA-00933: SQL command not properly ended')
>>>>>
>>>>> Troubleshooting Suggestions
>>>>>
>>>>> * The URL may be incorrect.
>>>>> * The parameters passed to this resource may be incorrect.
>>>>> * A resource that this resource relies on may be
>>>>> encountering an error.
>>>>>
>>>>> For more detailed information about the error, please refer to
>>>>> the HTML source
>>>>> for this page.
>>>>>
>>>>> If the error persists please contact the site maintainer. Thank
>>>>> you for your
>>>>> patience.
>>>>>
>>>>> ****************
>>>>>
>>>>> Any hints are gretly appreciated.
>>>>>
>>>>> Regards,
>>>>>
>>>>> Jorge M.
>>>>>
>>>>> -- Jorge O. Martinez
>>>>> MIS Senior Associate
>>>>> eMediaMillWorks
>>>>> 1100 Mercantile Lane, Suite 119
>>>>> Largo, MD 20774
>>>>> E-mail => jmartinez@eMediaMillWorks.com
>>>>> Phone => (301)883-2482 ext. 105
>>>>> Fax => (301)883-9754
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Zope maillist - Zope@zope.org
>>>>> http://lists.zope.org/mailman/listinfo/zope
>>>>> ** No cross posts or HTML encoding! **
>>>>> (Related lists -
>>>>> http://lists.zope.org/mailman/listinfo/zope-announce
>>>>> http://lists.zope.org/mailman/listinfo/zope-dev )
>>>>>
>>>
>>>
>>>
>>> -- Jorge O. Martinez
>>> MIS Senior Associate
>>> eMediaMillWorks
>>> 1100 Mercantile Lane, Suite 119
>>> Largo, MD 20774
>>> E-mail => jmartinez@eMediaMillWorks.com
>>> Phone => (301)883-2482 ext. 105
>>> Fax => (301)883-9754
>>>
>>>
>>>
>>> _______________________________________________
>>> Zope maillist - Zope@zope.org
>>> http://lists.zope.org/mailman/listinfo/zope
>>> ** No cross posts or HTML encoding! **
>>> (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce
>>> http://lists.zope.org/mailman/listinfo/zope-dev )
>
>
>
> -- Jorge O. Martinez
> MIS Senior Associate
> eMediaMillWorks
> 1100 Mercantile Lane, Suite 119
> Largo, MD 20774
> E-mail => jmartinez@eMediaMillWorks.com
> Phone => (301)883-2482 ext. 105
> Fax => (301)883-9754