[Zope3-Users] schema field for an Image?

Tom Dossis td at yoma.com.au
Sat Dec 2 17:15:48 EST 2006


Sascha Ottolski wrote:
> I'm wondering if anything already exists, that would allow me to define 
> a schema like (pseudo)
> 
> IPerson(Interface):
> 
>     image = File(
>         max_size=100,
>         )
> 
> Person(Persistent):
>     implements(IPerson)
> 
>     image = FileProperty(form_fields['image'])
> 
> with the result, that the image attribute behaves pretty much like an 
> IImage, that is, has contentType and size associated with it, and might 
> be easily displayed with the help of something like 
> zope.app.file.browser.image.ImageData.
> 
> I already tried to create such a Property, as well as using 
> schema.Object, but wasn't really successfull :-(

Hi Sacha, I've used something like this...

class IPerson(Interface):
  image=schema.Object(
    schema=zope.app.file.interfaces.IImage,
    required=False, # You may need this depending on validation needs..
    )

class Person(Persistent):
  implements(IPerson)
  image=FieldProperty(IPerson['image'])


If you want to make the image attribute traversable (via the url) the
z3c.traverser package can do the job.

> 
> Of course, I can do all this "by hand" for each content object by adding 
> a contentType attribute and providing some views, but I have the 
> feeling that there would exist a smarter way to to this.
> 
> Adding to this, is there a way to register views with "fuzzy" names? 
> Think of a class
> 
> Person:
> 
>     resume = File()
> 
> Now, to help the logfile analyzer, I would like to have a view 
> named "resume.%s', so that if resume is a Word document, it could be 
> accesed as /person1/resume.doc, if resume is PDF, access would 
> be /person1/resume.pdf. I could register several views for common 
> suffixes, but than there comes a buy with one no one thought of. May be 
> this is a stupid idea anyway :-)

Have a look at zope.publisher.interfaces.IPublishTraverse to hook in
your own handler for traversing a Person object.

regards,
-Tom



More information about the Zope3-users mailing list