[Zope] Re: More product writing problems

Seb Bacon seb@jamkit.com
Wed, 5 Dec 2001 10:13:01 -0000


Not quite sure what's wrong here.  foo:lines should get coerced into a list
type.

Your default value in the function signature should therefore be
keywords=(), rather than keywords=''.  But if you're passing a value in,
this shouldn't be a problem.

Watch out for using the name kw for a variable, since this is the standard
name for a dictionary of keyword arguments.

seb

----- Original Message -----
From: Tille, Andreas <TilleA@rki.de>
Cc: Zope user list <zope@zope.org>
Sent: Wednesday, December 05, 2001 8:07 AM
Subject: [Zope] Re: More product writing problems


> On Tue, 4 Dec 2001, Seb Bacon wrote:
>
> > Means just want it says: the modules were compiled with a different
python
> > from the one you're using.  Normally shouldn't matter.
> >
> > >     ob.keywords={}
> > >     for kw in keywords:
> > >         kw=kw.strip()
> >
> > You can't iterate over a dictionary.  It doesn't have a order, and it is
> > made up of key, value pairs.  You want
> > for kw in keywords.keys():
> >   # do stuff
> >   value = keywords[key] # for example
> >
> > Actually, I think python 2.1 or perhaps 2.2 adds some new methods to
> Sorry, I did not described my problem exactly.  My problem is perhaps
> that I do not know *which* is the correct type of my variable keywords.
> (Sorry, I'm a little bit C-centered where I had to declare each variable.)
>
> I think I post my complete method to clarify:
>
> def manage_addMyFolder(self, id, title='',
>                      keywords='',       #### not sure if this is correct
but
>                                         #### it worked so far
>                      createPublic=1,
>                      createSelection=1,
>                      createHome=1,
>                      createUserF=0,
>                      REQUEST=None):
>     """Add a new MyFolder object with id *id* and
>        global keywords *keywords* and author *author*.
>
>     If the 'createPublic' and 'createUserF' parameters are set to any true
>     value, an 'index_html' and a 'UserFolder' objects are created
respectively
>     in the new folder.
>
>     You can specify certain keywords which are inserted into each Document
inside
>     this folder.
>     """
>     ob=MyFolder()
>     ob.id=str(id)
>     ob.title=title
>     ob.keywords=keywords   #### this works but I want to remove
whitespaces
>                            #### and empty lines
> #    for kw in keywords:     #### this does not work :-(  see below
> #        kw=kw.strip()
> #        if kw != '' :
> #            ob.keywords = ob.keywords + '\n' + kw
>     self._setObject(id, ob)
>     ob=self._getOb(id)
>
>     checkPermission=getSecurityManager().checkPermission
>
>     if createUserF:
>         if not checkPermission('Add User MyFolders', ob):
>             raise 'Unauthorized', (
>                   'You are not authorized to add User MyFolders.'
>                   )
>         ob.manage_addUserFolder()
>
>     if createPublic:
>         if not checkPermission('Add Documents, Images, and Files', ob):
>             raise 'Unauthorized', (
>                   'You are not authorized to add DTML Documents.'
>                   )
>         ob.manage_addDTMLDocument(id='index.htm', title=ob.id+' main
frame')
>
>     if REQUEST is not None:
>         return self.manage_main(self, REQUEST, update_menu=1)
>
> The problem obviousely is, that I do not know what Python type is
appropriate
> to store the *lines* which are obtained in a
>
>   <tr valign="top">
>     <th class="form-optional">Keywords<br>(One per line)</th>
>     <td><textarea name="keywords:lines" cols="50" rows="10">
>     </textarea>
>     </td>
>   </tr>
>
> textarea and how I should strip the whitespaces and empty lines from it.
> a string variable separated by '\n' does not work either as I tested
> because if I want to edit them I get:
>
>       Error Type: InError
>       Error Value: Strings are not allowed as input to the in tag.
>
> So the question is:  How to strip the whitespace from the keywords
correctly.
>
> Thanks for your patience
>
>            Andreas.
>
> _______________________________________________
> 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 )
>