[Zope-CMF] A 'Portal Image' added programaticaly behaves different than a manualy added one

Grégoire Weber gregoire.weber@switzerland.org
Fri, 03 Aug 2001 01:40:50 +0200


Thanks for your advice, Tres!

You took me to the right way. It even worked after changing a 
small detail...

I had to set 'portal_type' to 'Image' instead of setting it to 
'Portal Image'! That's it!

Zope's XML exporting functionality is cool! I came behind this 
by adding an additional image manualy and exporting both in 
XML to search for differences. :-)

> You need to get the 'portal_type' label of your image set, as
> the stock 'invokeFactory' mechanism does.
>
> Add this::
> 
>      image = f._getOb( 'org_logo' )
>      image.portal_type = 'Portal Image' # the ID of the type object

You're talking about the similar code parts in 'constructInstance' in 
TypesTool.py I suppose.

So I finaly use the following working code to instanate a Portal 
Image which seems to me to be "more compatible" (just for the 
archive searchers on the list)::

    # Create default logo.
    fileobj = open(os.path.join(product_path, 'img', 'earthsmile.gif'), 'rb')
    filedata = fileobj.read()

    Image.addImage(f,
                   'org_logo',
                   title = '%s Home' % member_id,
                   file = filedata,
                   format = 'image/gif')
    ob = f._getOb( 'org_logo' )
    if hasattr(ob, '_setPortalTypeName'):
        ob._setPortalTypeName('Image')

    fileobj.close()

Remaining question (answer mandatory):

   Why is this not necessary for the instanation of the 'index_html' 
   Document in 'createMemberarea' of 'CMFDefault/MembershipTool.py'?

   Shouldn't this be changed?

Greg

_____________________________________
Grégoire Weber
mailto:gregoire.weber@switzerland.org