[Zope] acessing parameters in a "helper class"

Max M maxmcorp@worldonline.dk
Tue, 7 Nov 2000 22:51:56 +0100


I have the below class "mxm_guestbook_base" that is subclassed by a zClass.
So far so good.

But when in a "index_html" dtml-method I try to acces the value "author" of
the "aComment" class returned in the "getAllComments" method like so:

<dtml-in getAllComments>
    <dtml-var author>
    <dtml-var comment fmt=structured-text>
</dtml-in>

I get the following traceback:

-----------------------------------------------

Traceback (innermost last):
  File C:\mxmZope\lib\python\ZPublisher\Publish.py, line 222, in
publish_module
  File C:\mxmZope\lib\python\ZPublisher\Publish.py, line 187, in publish
  File C:\mxmZope\lib\python\ZPublisher\Publish.py, line 171, in publish
  File C:\mxmZope\lib\python\ZPublisher\mapply.py, line 160, in mapply
    (Object: index_html)
  File C:\mxmZope\lib\python\ZPublisher\Publish.py, line 112, in call_object
    (Object: index_html)
  File C:\mxmZope\lib\python\OFS\DTMLMethod.py, line 172, in __call__
    (Object: index_html)
  File C:\mxmZope\lib\python\DocumentTemplate\DT_String.py, line 528, in
__call__
    (Object: index_html)
  File C:\mxmZope\lib\python\DocumentTemplate\DT_In.py, line 691, in
renderwob
    (Object: comments)
  File C:\mxmZope\lib\python\OFS\DTMLMethod.py, line 194, in validate
    (Object: index_html)
  File C:\mxmZope\lib\python\AccessControl\SecurityManager.py, line 139, in
validate
  File C:\mxmZope\lib\python\AccessControl\ZopeSecurityPolicy.py, line 159,
in validate
Unauthorized: author

-----------------------------------------------

It seems that I have a problem accessing values in the objects inserted in
self.comments list.

If I just self.append('some comment') directly as a string I have no
problems acessing the comments as "sequence-item". It is only when inserting
an object into the list I cannot access it.

Anybody has any ideas?

-----------------------------------------------

index_html (dtml-method):

-----------------------------------------------

<dtml-var standard_html_header>
[<a href="add_comment">Ny kommentar</a>]<br>
<dtml-in getAllComments>
    <i><dtml-var author></i><br>
    <dtml-var comment fmt=structured-text><p>
    <center><hr height=1 noshade width=90%></center>
</dtml-in><br>
[<a href="add_comment">Ny kommentar</a>]<br>
<dtml-var standard_html_footer>

-----------------------------------------------

class aComment:
    ' '
    def __init__(self, comment, author):
        self.comment = comment
        self.author  = author

class mxm_guestbook_base:

    """
    A base class for guestbook products
    """

    def __init__(self):
        self.comments = []

    def addComment(self, comment='', author='' , RESPONSE=None):
        "Adds a comment"
        self.comments.append(aComment(comment, author))
        self._p_changed = 1 # Trigger persistence
        RESPONSE.redirect('index_html')

    def deleteAllComments(self, RESPONSE=None):
        "Deletes all comments"
        self.comments = []
        RESPONSE.redirect('index_html')

    def deleteComment(self, id, RESPONSE=None):
        "Deletes a single comment"
        del(self.comments[id])
        self._p_changed = 1 # Trigger persistence
        RESPONSE.redirect('index_html')

    def getAllComments(self):
        "returns a list of all comments"
        return self.comments
-----------------------------------------------

Regards

    Max M

Max M. W. Rasmussen,    Denmark.   New Media Director
private: maxmcorp@worldonline.dk work: maxm@normik.dk
-----------------------------------------------------
Specialization is for insects.  -  Robert A. Heinlein