[Zope-CMF] Problem adding Portal Images programatically
Jens Vagelpohl
jens@zope.com
Fri, 5 Oct 2001 07:41:22 -0400
if you use invokeFactory instead of addImage in your createImage method=20=
then the portal type gets set correctly as well as cataloging and =
workflow=20
stuff.
check CMFCore/PortalFolder.py for details, it takes an argument =
"type_name"
('Image' in this case) and an id. then you grab a reference to this =
new=20
image and set the image contents (the "file" argument) by using the =
image'
s edit method (see CMFDefault/Image.py)
jens
On Friday, October 5, 2001, at 06:44 , Josef Albert Meile wrote:
> Hello group,
>
> I saw Gr=E9goire Weber's HowTo about "adding objects at member
> creation"
> (http://www.zope.org/Members/gregweb/cmf_add_objects_at_member_creatio
> n), took some code from it, and addapted it to my necessities.
>
> I need to add an image (on this case a logo) before I create an
> instance of my product. I can add the image and I can see it from my
> product and from the manage interface, but I can't see it from the
> portal. Whenever I click on the link that appears on the
> folder_contents form, I get the following error:
>
> BEGIN ERROR MESSAGE --->
>
> Error Type: Not Found
> Error Value: Cannot find default view for
> /NewPortal/Members/jmeile/GRYTXTR5.JPG"
>
> Troubleshooting Suggestions
>
> The URL may be incorrect.
> The parameters passed to this resource may be incorrect.
> A resource that this resource relies on may be encountering an error.
>
> Traceback (innermost last):
> File /usr/local/Zope-2.3.0/lib/python/ZPublisher/Publish.py, line
> 223, in publish_module
> File /usr/local/Zope-2.3.0/lib/python/ZPublisher/Publish.py, line
> 187, in publish
> File /usr/local/Zope-2.3.0/lib/python/Zope/__init__.py, line 221, in
> zpublisher_exception_hook (Object: GRYTXTR5.JPG)
> File /usr/local/Zope-2.3.0/lib/python/ZPublisher/Publish.py, line
> 171, in publish
> File /usr/local/Zope-2.3.0/lib/python/ZPublisher/mapply.py, line
> 160, in mapply (Object: view)
> File /usr/local/Zope-2.3.0/lib/python/ZPublisher/Publish.py, line
> 112, in call_object (Object: view)
> File
> /usr/local/Zope-2.3.0/lib/python/Products/CMFCore/PortalContent.py,
> line 247, in view (Object: GRYTXTR5.JPG)
> File
> /usr/local/Zope-2.3.0/lib/python/Products/CMFCore/PortalContent.py,
> line 234, in __call__ (Object: GRYTXTR5.JPG)
> File
> /usr/local/Zope-2.3.0/lib/python/Products/CMFCore/PortalContent.py,
> line 227, in _getDefaultView (Object: GRYTXTR5.JPG)
> Not Found: (see above)
>
> END ERROR MESSAGE --->
>
> My editDone form looks like this:
>
> BEGIN EDITDONE --->
>
> <dtml-call "REQUEST.set('fileContent',
> REQUEST.form['attachedImage'].read())">
> <dtml-call "REQUEST.set('fileName',
> REQUEST.form['attachedImage'].filename)">
> <dtml-call "REQUEST.set('objectName',getShortName(fileName))">
> <dtml-let user=3D"portal_membership.getAuthenticatedMember().getUserName=
> ()" folderLocation=3D"portal_membership.getHomeFolder(user).absolute_url=
> ()">
> <dtml-call "REQUEST.set('myContext',REQUEST)">
> <dtml-call "createImage(portal_membership.getHomeFolder(user),
> fileName,fileContent)">
> <dtml-call "REQUEST.set('jobCompanyLogo',
> folderLocation+'/'+objectName)">
> </dtml-let>
> <dtml-call
> "propertysheets.JobOfferPropertySheet.manage_changeProperties
> (REQUEST)">
> <dtml-call "manage_changeProperties(REQUEST)">
> <dtml-call indexObject>
> <dtml-call "RESPONSE.redirect(URL2+'/folder_contents')">
>
> END EDITDONE --->
> note1: The function getShortName returns only the filename without
> its path
> note2: attachedImage comes from this input:
> <input type=3D"file" name=3D"attachedImage">
>
> and my method createImage, which is external, looks like this:
>
> BEGIN CREATEIMAGE --->
>
> from Products.CMFDefault import Image
> from string import rfind
>
> def createImage(location, fileName, fileContent):
> #gets only the file name without its path
> pos=3Drfind(fileName,'\\')
> shortName=3DfileName[pos+1:len(fileName)]
>
> #adds the image in the specified location
>
> Image.addImage
> (self=3Dlocation,id=3DshortName,file=3DfileContent,title=3DfileName,co
> ntent_type=3D'Image')
>
> END CREATEIMAGE --->
>
> I guess the problem could be the part where Gregory say:
> if hasattr(ob, '_setPortalTypeName'):
> ob._setPortalTypeName('Image')
> I didn't put this line because then I get another error which says
> that
> names beginning with "_" are forbidden.
>
> What could be wrong?
>
> Thanks in advanced,
> Josef.
>
>
> _______________________________________________
> Zope-CMF maillist - Zope-CMF@zope.org
> http://lists.zope.org/mailman/listinfo/zope-cmf
>
> See http://www.zope.org/Products/PTK/Tracker for bug reports and =
feature=20
> requests