[Zope-dev] Inter version problems & ZCatalog problems (long)
Ondrej Palkovsky
xpalo03@vse.cz
Tue, 9 May 2000 15:16:27 +0000 (GMT)
I just tried to develop a small system for publishing informations. It has
the following structure:
KnowledgeBase folder
.... kMessage
.... kMessage
.... kSearchFolder
......kMessage
.... Folder
......kMessage
etc.
Source is available at http://sorry.vse.cz/~xpalo03/kbase.tar.gz
I have following problems:
Adding kMessage into KnowledgeBase structures doesn't work in 2.1.6
version, but works in 2.1.4 version. I always get Permission denied on
manage_editProperties. I use following code to found a root folder:
<dtml-in PARENTS skip_unauthorized=1>
<dtml-if "meta_type=='KnowledgeBase'">
<dtml-call "REQUEST.set('kBaseId',id)">
</dtml-if>
</dtml-in>
<dtml-call "REQUEST.set('kBaseObj',_.getattr(_.this,kBaseId))">
This suffers from one problem, when thare is a Folder with same name of
the 'root' folder, but I didn't find another way to do it (any
suggestions?) This sets the 'kBaseObj' to the topmost 'KnowledgeBase'
Folder. This code is in constructor of kmessage:
<dtml-call "REQUEST.set('kSequence',kSequence+1)">
<dtml-call
"kBaseObj.propertysheets.Seqopt.manage_editProperties(REQUEST)">
It doesn't work in 2.1.6 from factory, but works when called from a DTML
method elsewhere. In 2.1.4. it's ok both in factory & method.
Another problem is with catalog. I wanted to be able to search in
Subtrees, but didn't find any way how to limit ZCatalog in respect to the
'path'. I created a ZClass inherited from ZCatalog and I let this thing
being called from a kMessage constructor:
<dtml-call "REQUEST.set('myUrl',this().url())">
<dtml-call "REQUEST.set('myObj',this())">
<dtml-in PARENTS>
<dtml-if "meta_type=='KnowledgeBase' or meta_type=='kSearchFolder'">
<dtml-try>
<dtml-call "uncatalog_object(myUrl)">
<dtml-except>
</dtml-try>
<dtml-call "catalog_object(myObj,myUrl)">
</dtml-if>
</dtml-in>
This should register this message in all ZCatalog-inherited classes
upwards. It gets, but in the classes higher then the one the Catalogs gets
updated somewhat badly. Suppose this structure:
kbase (KnowledgeBase)
..folder (kSearchFolder)
....mesg1
....mesg2
Now searching for Title in 'folder' is ok, but from 'kbase' I get no
result for 'mesg1' and line corresponding to mesg1 for Title='mesg2', for
other messages it's all this way moved. When I do Update Catalog,
everything gets fixed. Any suggestions?
Ondrej
--
IBM's original motto:
Cogito ergo vendo; vendo ergo sum.