[Zope] adding objects to a ZCatalog

Tom Von Lahndorff tom at modscape.com
Fri Feb 23 13:13:28 EST 2007



Peter Bengtsson wrote:
> On 2/23/07, Tom Von Lahndorff <tom at modscape.com> wrote:
>> Hi,
>>
>> I have a folder called "images" and a form that to add images to that
>> folder. The form called an external method (../images/addImage) that
>> references a python script, the one I sent earlier, that creates 4
>> versions of the images in 4 sizes and places them in the "images"
>> folder. Also in the "images" folder I have a ZCatalog called
>> "ImageData". I'm trying to add a line to the python script to
>> automatically catalog any images that are added to the "images" folder.
>> I tried "ImageData.manage_catalogObject..." but I kept getting back:
>> NameError: global name 'ImageData' is not defined. Any advice? Thanks.
>>
> Perhaps you meant
> context.ImageData.manage_catalogObject(...
>
This is the complete script:

def makeImages(self, imagefile, newkeywords, newcaption, newsource):

    import PIL.Image, ImageEnhance, ImageFilter
    import PIL
    from StringIO import StringIO
    import os.path
    import datetime
    import time

    # create the data in a new PIL Image.
    image=PIL.Image.open(imagefile)
    image=image.convert('RGB')
    image=image.filter(ImageFilter.SHARPEN)
    image=image.resize((640, 480), PIL.Image.ANTIALIAS)
    image2=image.resize((320, 240), PIL.Image.ANTIALIAS)
    image3=image.resize((160, 120), PIL.Image.ANTIALIAS)
    image4=image.resize((80, 60), PIL.Image.ANTIALIAS)

    # get the data in memory.
    newimage_file=StringIO()
    image.save(newimage_file, "JPEG")
    newimage_file.seek(0)
    newimage_file2=StringIO()
    image2.save(newimage_file2, "JPEG")
    newimage_file2.seek(0)
    newimage_file3=StringIO()
    image3.save(newimage_file3, "JPEG")
    newimage_file3.seek(0)
    newimage_file4=StringIO()
    image4.save(newimage_file4, "JPEG")
    newimage_file4.seek(0)

    # create an id for the image
    now = datetime.datetime.now()
    newimageid=now.strftime('%Y%m%d%H%M%S')
    newimage_id=newimageid + '-640.jpg'
    newimage_id2=newimageid + '-320.jpg'
    newimage_id3=newimageid + '-160.jpg'
    newimage_id4=newimageid + '-80.jpg'

    # if there's an old image, delete it
    if newimage_id in self.objectIds():
        self.manage_delObjects([newimage_id])
    if newimage_id2 in self.objectIds():
        self.manage_delObjects([newimage_id2])
    if newimage_id3 in self.objectIds():
        self.manage_delObjects([newimage_id3])
    if newimage_id4 in self.objectIds():
        self.manage_delObjects([newimage_id4])

    # create the Zope image object for the new image
    self.manage_addProduct['OFSP'].manage_addImage(newimage_id, 
newimage_file, '')
    self.manage_addProduct['OFSP'].manage_addImage(newimage_id2, 
newimage_file2, '')
    self.manage_addProduct['OFSP'].manage_addImage(newimage_id3, 
newimage_file3, '')
    self.manage_addProduct['OFSP'].manage_addImage(newimage_id4, 
newimage_file4, '')

    # now find the new zope object so we can modify
    # its properties.
    newimage_image=getattr(self, newimage_id)
    newimage_image.manage_addProperty('keywords', '', 'string')
    newimage_image.manage_addProperty('caption', '', 'string')
    newimage_image.manage_addProperty('imageid', '', 'string')
    newimage_image.manage_changeProperties(keywords=newkeywords, 
caption=newcaption, imageid=newimageid, source=newsource)
    context.ImageData.manage_catalogObject(newimage_image, uid)
    newimage_image2=getattr(self, newimage_id2)
    newimage_image2.manage_addProperty('imagefile2', '', 'string')
    newimage_image3=getattr(self, newimage_id3)
    newimage_image3.manage_addProperty('imagefile3', '', 'string')
    newimage_image4=getattr(self, newimage_id4)
    newimage_image4.manage_addProperty('imagefile4', '', 'string')

>
>> Tom
>> _______________________________________________
>> Zope maillist  -  Zope at zope.org
>> http://mail.zope.org/mailman/listinfo/zope
>> **   No cross posts or HTML encoding!  **
>> (Related lists -
>>  http://mail.zope.org/mailman/listinfo/zope-announce
>>  http://mail.zope.org/mailman/listinfo/zope-dev )
>>
>
>


More information about the Zope mailing list