[Zope] Catalog Anything Problem

Bobby Mathew bobby@dialognet.com
Wed, 2 May 2001 11:38:25 +0530


This is a multi-part message in MIME format.

------=_NextPart_000_0038_01C0D2FC.66227660
Content-Type: multipart/alternative;
	boundary="----=_NextPart_001_0039_01C0D2FC.66227660"


------=_NextPart_001_0039_01C0D2FC.66227660
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hi all

I used the catalog anything manual to do have my sql data from postgres =
to be indexed into zope but i ran into trouble. I must warn you i am a =
newbie so it must be a very silly mistake somewhere. Let me explain what =
I did

My config
Linux OS
Zope 2.3.0
Postgres 7.0.3
ZPyGreSQL DA

The process
Since i am a newbie i was not sure what you meant in the cataloganything =
doc when you said...
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Setting Up the Catalog
The first step in any search is to set up the catalog. There is no =
difference in setting up a catalog for "normal" searches and setting one =
up for a search of SQL data, so I'm not going to go into detail here on =
how to do that. Just make sure you have created a catalog with the =
desired indexes and meta data.

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

So i just used the chapter 9 reference that was provided earlier and i =
created a ZCatalog called Products. I was not sure what else to do so i =
just let the defaults remain as it is - the AnimalTracker example in =
chap 9 didnt seem relevant to me since i have no dtml methods to search =
for - only products info from the postgres. So i just didnt do anything =
further. I have a products table in the postgres rdbms that i want to =
search by title and description. So after this i created a zsql method =
called getProdtoCatalog under the ZCatalog itself - the query i used is

SELECT prodid as Number, Title,
Descr || ' ' || Title as PrincipiaSearchSource,
'Product' as meta_type, prodid as id, Descr as summary
FROM products

Now i went into the Find Objects section and searched for the =
getProdtoCatalog zsql method and added to the catalog

Next i went and created the python script (again under the Products =
ZCatalog itself) and i called it catalogProducts this is the code inside

for book in container.getProdToCatalog():
    container.catalog_object(Product,
    '/learn/search/Products/'+Product.Number+'/proddetails.html')
    print 'Product #' + Product.Number
return printed

The moment i test it i run into trouble - Can any one help please=20

regards

bobby

For the error message this is what i get....

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

      Zope Error
      Zope has encountered an error while publishing this resource.

      Error Type: AttributeError
      Error Value: getProdToCatalog



-------------------------------------------------------------------------=
-

      Troubleshooting Suggestions

        a.. The URL may be incorrect.=20
        b.. The parameters passed to this resource may be incorrect.=20
        c.. A resource that this resource relies on may be encountering =
an error.=20
      For more detailed information about the error, please refer to the =
HTML source for this page.=20

      If the error persists please contact the site maintainer. Thank =
you for your patience.=20
    =20




Traceback (innermost last):
  File /home/bobby/Zope-2.3/lib/python/ZPublisher/Publish.py, line 222, =
in publish_module
  File /home/bobby/Zope-2.3/lib/python/ZPublisher/Publish.py, line 187, =
in publish
  File /home/bobby/Zope-2.3/lib/python/Zope/__init__.py, line 221, in =
zpublisher_exception_hook
    (Object: Traversable)
  File /home/bobby/Zope-2.3/lib/python/ZPublisher/Publish.py, line 171, =
in publish
  File /home/bobby/Zope-2.3/lib/python/ZPublisher/mapply.py, line 160, =
in mapply
    (Object: catalogProducts)
  File /home/bobby/Zope-2.3/lib/python/ZPublisher/Publish.py, line 112, =
in call_object
    (Object: catalogProducts)
  File /home/bobby/Zope-2.3/lib/python/Shared/DC/Scripts/Bindings.py, =
line 324, in __call__
    (Object: catalogProducts)
  File /home/bobby/Zope-2.3/lib/python/Shared/DC/Scripts/Bindings.py, =
line 353, in _bindAndExec
    (Object: catalogProducts)
  File =
/home/bobby/Zope-2.3/lib/python/Products/PythonScripts/PythonScript.py, =
line 330, in _exec
    (Object: catalogProducts)
    (Info: ({'script': <PythonScript instance at 88d81b0>, 'context': =
<ZCatalog instance at 8d02630>, 'container': <ZCatalog instance at =
8d02630>, 'traverse_subpath': []}, (), {}, None))
  File Script (Python), line 2, in catalogProducts
  File =
/home/bobby/Zope-2.3/lib/python/Products/PythonScripts/Guarded.py, line =
273, in __getattr__
  File =
/home/bobby/Zope-2.3/lib/python/Products/PythonScripts/Guarded.py, line =
143, in __careful_getattr__
    (Object: Traversable)
AttributeError: (see above)
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D



------=_NextPart_001_0039_01C0D2FC.66227660
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-1" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2614.3500" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Hi all</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>I used the catalog anything manual to =
do have my=20
sql data from postgres to be indexed into zope but i ran into trouble. I =
must=20
warn you i am a newbie so it must be a very silly mistake somewhere. Let =
me=20
explain what I did</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>My config</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Linux OS</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Zope 2.3.0</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Postgres 7.0.3</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>ZPyGreSQL DA</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>The process</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Since i am a newbie i was not sure what =
you meant=20
in the cataloganything doc when you said...</FONT></DIV>
<DIV><FONT face=3DArial =
size=3D2>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>
<H3>Setting Up the Catalog</H3>
<P>The first step in any search is to set up the catalog. There is no =
difference=20
in setting up a catalog for "normal" searches and setting one up for a =
search of=20
SQL data, so I'm not going to go into detail here on how to do that. =
Just make=20
sure you have created a catalog with the desired indexes and meta =
data.</P>
<P>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</P>
<P>So i just used the chapter 9 reference that was provided earlier and =
i=20
created a ZCatalog called Products. I was not sure what else to do so i =
just let=20
the defaults remain as it is - the AnimalTracker example in chap 9 didnt =
seem=20
relevant to me since i have no dtml methods to search for - only =
products info=20
from the postgres. So i just didnt do anything further. I have a =
products table=20
in the postgres rdbms that i want to search by title and description. So =
after=20
this i created a zsql method called getProdtoCatalog under the ZCatalog =
itself -=20
the query i used is</P>
<P>SELECT prodid as Number, Title,<BR>Descr || ' ' || Title as=20
PrincipiaSearchSource,<BR>'Product' as meta_type, prodid as id, Descr as =

summary<BR>FROM products</P>
<P>Now i went into the Find Objects section and searched for the=20
getProdtoCatalog zsql method and added to the catalog</P>
<P>Next i went and created the python script (again under the Products =
ZCatalog=20
itself) and i called it catalogProducts this is the code inside</P>
<P>for book in container.getProdToCatalog():<BR>&nbsp;&nbsp;&nbsp;=20
container.catalog_object(Product,<BR>&nbsp;&nbsp;&nbsp;=20
'/learn/search/Products/'+Product.Number+'/proddetails.html')<BR>&nbsp;&n=
bsp;&nbsp;=20
print 'Product #' + Product.Number<BR>return printed</P>
<P>The moment i test it i run into trouble - Can any one help please =
</P>
<P>regards</P>
<P>bobby</P>
<P>For the error message this&nbsp;is what i get....</P>
<P>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</P>
<P>
<TABLE border=3D0 width=3D"100%">
  <TBODY>
  <TR vAlign=3Dtop>
    <TD width=3D"90%">
      <H2>Zope Error</H2>
      <P>Zope has encountered an error while publishing this =
resource.</P>
      <P><STRONG>Error Type: AttributeError</STRONG><BR><STRONG>Error =
Value:=20
      getProdToCatalog</STRONG><BR></P>
      <HR noShade>

      <P>Troubleshooting Suggestions</P>
      <UL>
        <LI>The URL may be incorrect.=20
        <LI>The parameters passed to this resource may be incorrect.=20
        <LI>A resource that this resource relies on may be encountering =
an=20
        error. </LI></UL>
      <P>For more detailed information about the error, please refer to =
the HTML=20
      source for this page. </P>
      <P>If the error persists please contact the site maintainer. Thank =
you for=20
      your patience. </P></TD></TR></TBODY></TABLE></P>
<P><A href=3D"http://www.zope.org/Credits" target=3D_top><IMG =
alt=3D"Powered by Zope"=20
border=3D0 height=3D50 src=3D"http://192.168.1.99/p_/ZopeButton" =
width=3D115></A></P><PRE>Traceback (innermost last):
  File /home/bobby/Zope-2.3/lib/python/ZPublisher/Publish.py, line 222, =
in publish_module
  File /home/bobby/Zope-2.3/lib/python/ZPublisher/Publish.py, line 187, =
in publish
  File /home/bobby/Zope-2.3/lib/python/Zope/__init__.py, line 221, in =
zpublisher_exception_hook
    (Object: Traversable)
  File /home/bobby/Zope-2.3/lib/python/ZPublisher/Publish.py, line 171, =
in publish
  File /home/bobby/Zope-2.3/lib/python/ZPublisher/mapply.py, line 160, =
in mapply
    (Object: catalogProducts)
  File /home/bobby/Zope-2.3/lib/python/ZPublisher/Publish.py, line 112, =
in call_object
    (Object: catalogProducts)
  File /home/bobby/Zope-2.3/lib/python/Shared/DC/Scripts/Bindings.py, =
line 324, in __call__
    (Object: catalogProducts)
  File /home/bobby/Zope-2.3/lib/python/Shared/DC/Scripts/Bindings.py, =
line 353, in _bindAndExec
    (Object: catalogProducts)
  File =
/home/bobby/Zope-2.3/lib/python/Products/PythonScripts/PythonScript.py, =
line 330, in _exec
    (Object: catalogProducts)
    (Info: ({'script': &lt;PythonScript instance at 88d81b0&gt;, =
'context': &lt;ZCatalog instance at 8d02630&gt;, 'container': =
&lt;ZCatalog instance at 8d02630&gt;, 'traverse_subpath': []}, (), {}, =
None))
  File Script (Python), line 2, in catalogProducts
  File =
/home/bobby/Zope-2.3/lib/python/Products/PythonScripts/Guarded.py, line =
273, in __getattr__
  File =
/home/bobby/Zope-2.3/lib/python/Products/PythonScripts/Guarded.py, line =
143, in __careful_getattr__
    (Object: Traversable)
AttributeError: (see above)
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</PRE><PRE>&nbsp=
;</PRE></FONT></DIV></BODY></HTML>

------=_NextPart_001_0039_01C0D2FC.66227660--

------=_NextPart_000_0038_01C0D2FC.66227660
Content-Type: application/octet-stream;
	name="ZopeButton"
Content-Transfer-Encoding: base64
Content-Location: http://192.168.1.99/p_/ZopeButton

/9j/4AAQSkZJRgABAgEASABIAAD/7RBmUGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAAwcAgAAAgAC
HAJ4AAA4QklNA+kAAAAAAHgAAwAAAEgASAAAAAAC2AIo/+H/4gL5AkYDRwUoA/wAAgAAAEgASAAA
AAAC2AIoAAEAAABkAAAAAQADAwMAAAABJw8AAQABAAAAAAAAAAAAAAAAYAgAGQGQAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4QklNA+0AAAAAABAASAAAAAEAAQBIAAAAAQABOEJJTQPz
AAAAAAAIAAAAAAAAAAA4QklNBAoAAAAAAAEAADhCSU0nEAAAAAAACgABAAAAAAAAAAI4QklNA/UA
AAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAA
AAEANQAAAAEALQAAAAYAAAAAAAE4QklNA/gAAAAAAHAAAP////////////////////////////8D
6AAAAAD/////////////////////////////A+gAAAAA/////////////////////////////wPo
AAAAAP////////////////////////////8D6AAAOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJAAAAA
ADhCSU0ECQAAAAAOWgAAAAEAAACAAAAANwAAAYAAAFKAAAAOPgAYAAH/2P/gABBKRklGAAECAQBI
AEgAAP/+ACdGaWxlIHdyaXR0ZW4gYnkgQWRvYmUgUGhvdG9zaG9wqCA0LjAA/+4ADkFkb2JlAGSA
AAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwM
DAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwM
DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgANwCAAwEiAAIRAQMRAf/dAAQACP/EAT8AAAEF
AQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAAB
BAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHx
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
SH6gbW+0Mhp+l9FbSjxYP5yM74biO0Z8OOEV08nymNXr/g+ovOdXqtP1l6XXivbj2enbseW7wPa8
u/R7mbt39ZS+sWP1Kv6tdZdlZbMiv9n5Q2Np9Mz6Nnu3+pYj9Uw+oHrWF1HFoGQzGY9r272sMvDm
fn/11W+smX1Oz6udXZfgehUcDK3Wesx8foLY9jRu+knYwBkyWJgmdxr3OCuCH7v6tEiTGNV8uvy8
W5/wn//S636sfWHAp+rfSan1ZpdXhY7XFmBmPbLaq2nZbVivqsZ/wlb9j1fu+svR/TPr05vp99/T
s3b/ANLDXzckkp9M+sNP+KfqmU+4dVs6fdPuZTi2NbP8qv7Gx3/TWRT0L/Fg183fWa97P3W4lrT/
AJzqLf8AqVxSSGidX3D6r9X/AMXWCRT0R78rJa2PUrwb7LiBMkux8Jr10n/OXp3+hz//AHHZ3/vG
vmtJIV0Ub6v0p/zl6d/oc/8A9x2d/wC8aX/OXp3+hz//AHHZ3/vGvmtJFD9Kf85enf6HP/8Acdnf
+8aX/OXp3+hz/wD3HZ3/ALxr5rSSU/Sn/OXp3+hz/wD3HZ3/ALxpf85enf6HP/8Acdnf+8a+a0kl
P0p/zl6d/oc//wBx2d/7xpf85enf6HP/APcdnf8AvGvmtJJT9Kf85enf6HP/APcdnf8AvGs36z/W
HAu+rfVqmVZodZhZDWl+BmMbLqrGjfbbisqrZ/wlj9jF8+pJKf/ZOEJJTQQGAAAAAAAHAAUAAAAB
AQD//gAnRmlsZSB3cml0dGVuIGJ5IEFkb2JlIFBob3Rvc2hvcKggNC4wAP/uAA5BZG9iZQBkQAAA
AAH/2wCEAAQDAwMDAwQDAwQGBAMEBgcFBAQFBwgGBgcGBggKCAkJCQkICgoMDAwMDAoMDAwMDAwM
DAwMDAwMDAwMDAwMDAwBBAUFCAcIDwoKDxQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwM
DAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIADIAcwMBEQACEQEDEQH/3QAEAA//xAGiAAAABwEB
AQEBAAAAAAAAAAAEBQMCBgEABwgJCgsBAAICAwEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAgED
AwIEAgYHAwQCBgJzAQIDEQQABSESMUFRBhNhInGBFDKRoQcVsUIjwVLR4TMWYvAkcoLxJUM0U5Ki
smNzwjVEJ5OjszYXVGR0w9LiCCaDCQoYGYSURUaktFbTVSga8uPzxNTk9GV1hZWltcXV5fVmdoaW
prbG1ub2N0dXZ3eHl6e3x9fn9zhIWGh4iJiouMjY6PgpOUlZaXmJmam5ydnp+So6SlpqeoqaqrrK
2ur6EQACAgECAwUFBAUGBAgDA20BAAIRAwQhEjFBBVETYSIGcYGRMqGx8BTB0eEjQhVSYnLxMyQ0
Q4IWklMlomOywgdz0jXiRIMXVJMICQoYGSY2RRonZHRVN/Kjs8MoKdPj84SUpLTE1OT0ZXWFlaW1
xdXl9UZWZnaGlqa2xtbm9kdXZ3eHl6e3x9fn9zhIWGh4iJiouMjY6Pg5SVlpeYmZqbnJ2en5KjpK
Wmp6ipqqusra6vr/2gAMAwEAAhEDEQA/APQ35Mfkx+T2qfk9+Xup6n+Xvlq91K98taNc3l5c6NYT
TzTzWELySSSPCWZ2YlmZjVjucVebfm9+YH/OKn5aatL5Q0H8qvLnnTz/ABkrLomlaJpgitnHUXVy
bdljI/aVVkdf21TLoYjI0ObVPIIi3g97581bVpWey/K38o/LEJ3js7vR7O6uQPB3oEJ91A+WbCOh
l1oe8/8AEuDLWx6X8B/xSyx/NO40C5B1/wDJX8svNVgpAmXSNGtbW4psTxYpKlaV/YwT0EhuKP8A
VP8AxSI66F0bHvH/ABL6R/JfzV/ziR+dEn6J038ufLOiecY1LT+W9T0LTI7k8RVjCwg4yqP8n46b
si5r5YzF2EMgkHtf/KifyQ/8tp5U/wC4Fp3/AFQypsd/yon8kP8Ay2nlT/uBad/1QxV3/KifyQ/8
tp5U/wC4Fp3/AFQxV3/KifyQ/wDLaeVP+4Fp3/VDFXf8qJ/JD/y2nlT/ALgWnf8AVDFXf8qJ/JD/
AMtp5U/7gWnf9UMVd/yon8kP/LaeVP8AuBad/wBUMVd/yon8kP8Ay2nlT/uBad/1QxV3/KifyQ/8
tp5U/wC4Fp3/AFQxV4h/yqf8rP8AlaH6P/wP5f8AqH/Kyv0b9V/RVl6P1H/lW3176vw9Lj6X1n/S
PTpw9f8Ae09T4sVf/9A8/M3899Y/L7/nHv8AKL8tvIVwIPzB83eUtFreqaPp+mfo6FHnUjdXchlj
b9gJI4+NUy/DjM5ADmWjLkEASeQfO3lD8mLS8V4727u9Rec87tVleCGVzuS3pkOx67s/3Z0GPQwg
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

------=_NextPart_000_0038_01C0D2FC.66227660--