[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 )
>