[Zope] TypeError: loop over non-sequence (Was: Logfiles)

Wolfram Kerber wk@gallileus.de
Thu, 6 Dec 2001 11:20:09 +0100


in class MyFolder you should remove the line '__implements__ = Folder'

or replace 'Folder' with an interface ;-)


Wolfram

----- Original Message -----
From: "Tille, Andreas" <TilleA@rki.de>
Cc: "Zope user list" <zope@zope.org>
Sent: Thursday, December 06, 2001 10:54 AM
Subject: [Zope] TypeError: loop over non-sequence (Was: Logfiles)


> On Wed, 5 Dec 2001, Dieter Maurer wrote:
>
> > Search for "STUPID_LOG_FILE" and you will become enlightened....
> Light flashed into my dark brain now :)
>
> Back to my original problem.
>
> The log sais:
>
> 2001-12-06T09:40:39 ERROR(200) Zope Couldn't install MyFolder
> Traceback (innermost last):
>   File /usr/lib/zope/lib/python/OFS/Application.py, line 668, in
install_product
>     (Object: Zope)
>     (Info: MyFolder)
>   File /usr/lib/zope/lib/python/Products/MyFolder/__init__.py, line 7, in
initialize
>   File /usr/lib/zope/lib/python/App/ProductContext.py, line 233, in
registerClass
>   File /usr/lib/zope/lib/python/Interface/Util.py, line 66, in
instancesOfObjectImplements
>     (Object: MyFolder)
>   File /usr/lib/zope/lib/python/Interface/Util.py, line 72, in _wi
>     (Object: OFS.Folder)
> TypeError: loop over non-sequence
>
>
> but I really have no idea how to solve this.  The strange thing is that
> I was able to run the MyFolder product without problems on a
>    Debian GNU/Linux Sparc
> machine with Zope Version: 2.3.3-1, but *not* on a
>    Debian GNU/Linux i386
> with the same Zope version.  With Zope 2.4.2 it did not work at all.
>
> I attach the code of __init__.py and MyFolder.py in the hope that some
> experienced programmer would open my right eye after my left one was
opened
> by Dieter :).
>
> Thanks in advance
>
>           Andreas.
>
> ~> cat __init__.py
> from MyFolder import MyFolder, manage_addMyFolderForm, manage_addMyFolder
>
> def initialize(registrar):
>     registrar.registerClass(
>         MyFolder,
>         constructors = (manage_addMyFolderForm, manage_addMyFolder),
>         icon = 'www/myfolder.png'
>         )
>     registrar.registerHelp()
>
>
> ~> cat MyFolder.py
> """MyFolder object
>
> Derived from basic Folder
>
> $Id: MyFolder.py,v 0.1 2001/11/30 10:26:52 tillea $"""
>
> __version__='$Revision: 0.1 $'[11:-2]
>
> from Acquisition import Implicit
> from Globals import Persistent
>
> from OFS import FindSupport, Folder, ObjectManager, PropertyManager
> # from AccessControl import Role
> from AccessControl import ClassSecurityInfo, getSecurityManager, Role
> from webdav import Collection
> from OFS.SimpleItem import Item
>
> from Globals import InitializeClass, DTMLFile, default__class_init__
>
> manage_addMyFolderForm=DTMLFile('dtml/myfolderAdd', globals())
>
> def manage_addMyFolder(self, id, title='',
>                      keywords=[], author='',
>                      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.
>     You can specify an author which are inserted into each Document inside
>     this folder.
>     """
>     ob=MyFolder()
>     ob.id=str(id)
>     ob.title=title
>     ob.keywords=[]
>     for keyword in keywords:
>         keyword=keyword.strip()
>         if keyword != '' :
>             ob.keywords.append(keyword)
>     ob.author=author
>     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 createSelection:
>         if not checkPermission('Add Documents, Images, and Files', ob):
>             raise 'Unauthorized', (
>                   'You are not authorized to add DTML Documents.'
>                   )
>         ob.manage_addDTMLDocument(id=ob.id+'_sel.htm', title=ob.id+' left
navigation frame')
>
>     if createHome:
>         if not checkPermission('Add Documents, Images, and Files', ob):
>             raise 'Unauthorized', (
>                   'You are not authorized to add DTML Documents.'
>                   )
>         ob.manage_addDTMLDocument(id=ob.id+'_home.htm', title=ob.id+'
home')
>
>     if REQUEST is not None:
>         return self.manage_main(self, REQUEST, update_menu=1)
>
>
> def getProperty(self, id, d=None):
>     """Get the property 'id', returning the optional second
>        argument or None if no such property is found."""
>     if self.hasProperty(id):
>         if id == 'keywords' :
>             safe_keywords=self.keywords
>             self.keywords=[]
>             for keyword in save_keywords:
>                 keyword=keyword.strip()
>                 if keyword != '' :
>                     self.keywords.append(keyword)
>         return getattr(self, id)
>     return d
>
> class MyFolder(Implicit,
>     Persistent,
>     ObjectManager.ObjectManager,
>     PropertyManager.PropertyManager,
>     Role.RoleManager,
>     Collection.Collection,
>     Item,
>     FindSupport.FindSupport,
>     ):
>     """
>     MyFolder is derived from Folder and supports global keywords and
author
>     """
>     __implements__ = Folder
>     meta_type='MyFolder'
>
>     _properties=({'id':'title', 'type': 'string'},
>                  {'id':'keywords', 'type':'lines',
'select_variable':'keywords'},
>                  {'id':'author', 'type':'string',
'select_variable':'author'},)
>
>     manage_options=(
>         (ObjectManager.ObjectManager.manage_options[0],)+
>         (
>         {'label':'View', 'action':'index.htm',
>          'help' : ('MyFolder', 'MyFolder_View.stx')},
>         )+
>         PropertyManager.PropertyManager.manage_options+
>         Role.RoleManager.manage_options+
>         Item.manage_options+
>         FindSupport.FindSupport.manage_options
>         )
>
> #         'help' : ('MyFolder', 'MyFolder_View.stx'),
> #         'label':'Properties', 'action':'manage_propertiesForm'},
>
>     __ac_permissions__=()
>
>
> default__class_init__(MyFolder)
>
>
>
> _______________________________________________
> 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 )