[Zope] Fourth Posting, is this really that difficult or have I been blackballed :)balled :)

Kapil Thangavelu kthangavelu@earthlink.net
Fri, 18 Aug 2000 13:56:42 -0700


Daniel wrote

> I've created a folderish product. When I select that product from the
> available objects list, thus creating an instance of that product, I can
> 
> create objects like dtml document and dtml method in the new folderish
> object (very similar to what happens when you instantiate a folder
> object, you can have a dtml method created in the new folder).
> 
> The question is why can't I create objects from the Products directory,
> such as Local File System?????
> 
> The code below works great, I get a dtml document, two folders each with
> 
> a dtml method in them....
> HOW CAN I CREATE A LOCAL FILE SYSTEM OR ANY OTHER OBJECT FROM THE
> PRODUCTS DIRECTORY IN THIS MANAGE_ADD FUNCTION???????
> 
> def manage_addSimpleSite(self, id, title='',
>                      createNewFolder=0,
>                      createEditFolder=0,
>                      REQUEST=None):
>     """Add a new SimpleSite object with id *id*.
> 
>     If the 'createNewFolder' and 'createEditFolder' parameters are set
> to any true
>     value, an 'New sub Folder' and an 'edit sub Folder' objects are
> created respectively
>     in the new SimpleSite.
>     """
>     ob=SimpleSite()
>     ob.id=id
>     ob.title=title
>     self._setObject(id, ob)
>     try: user=REQUEST['AUTHENTICATED_USER']
>     except: user=None
>     ob.manage_addDTMLDocument(id='index_html', title='')
>     if createNewFolder:
>         if (user is not None) and not (
>             user.has_permission('Add User SimpleSites', self)):
>             raise 'Unauthorized', (
>                   'You are not authorized to add User SimpleSites.'
>                   )
>         ob.manage_addFolder(id='New'+id, title='', createPublic=1)
>     if createEditFolder:
>         if (user is not None) and not (
>             user.has_permission('Add Documents, Images, and Files',
> self)):
>             raise 'Unauthorized', (
>                   'You are not authorized to add DTML Documents.'
>                   )
>         ob.manage_addFolder(id='Edit'+id, title='', createPublic=1)
>     if REQUEST is not None:
>         return self.manage_main(self, REQUEST, update_menu=1)
> 


a couple of things.

A. you're not being blackballed. when you're posting to the list its
hard to help without specifics. you're posting above, would be better
with a traceback of code that does attempt to instantiate a product.
which leads to

B. how are you attempting to instantiate your other products. example
code of what you're trying to do would be helpful. are you doing it the
same as adding folders like above... i have no idea... 

C. seems like you're doing this in python. the code below should work
fine.

from Products import LocalFS

in manage_add:

	id = 'foo'
	ob2 = LocalFS.LocalFS(id) # check the exact calls to __init__ in
LocalFS
	id2 = 'foo2'

	ob = yourproduct(id2)
	ob._setObject(id , ob2)

in  __init__ or manage_afterAdd

	id ='foo'
	ob = LocalFS.LocalFS(id)
	self._setObject(id, ob)