[Zope3-Users] schema field for an Image?

Adam Summers adam at 4js.com.au
Wed Dec 6 11:07:40 EST 2006


Hi,

Tom Dossis wrote:
> 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 I wanted to use formlib to build the form, and wanted to build a HTML 
widget for the image field that had a
file input for uploading, and if img already had content woudl display a 
thumbnail; how would I go about this? I'm afraid I'm lost because its 
schema.Object that the widget would apply to (but I'm not sure).

regards,
Adam


> 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
>
> _______________________________________________
> Zope3-users mailing list
> Zope3-users at zope.org
> http://mail.zope.org/mailman/listinfo/zope3-users
>   




More information about the Zope3-users mailing list