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 )