Re: [Zope3-Users] save file to filesystem

2008-02-27 Thread Martijn Faassen
Hi there,

I haven't had much experience with blobs yet (I hope to start working
with this in the near future).

From my reading of the blobfile docs, I think the File object
defined in it is *not* a schema field, such as the
one you use from megrok.form. These things are different things
altogether, even though they're both called file.
blobfile tries to make its File object compatible with the file object
stored by the zope.app.file package. This is the
implementation of an object that *stores* the file data, not the field
that appears in the schema. From my cursory browsing
through z3c.blobfile it doesn't implement such a file field.

So, concept involved:

* the File field in a schema

* the actual object that ends up on your Python object, a File object
(altogether different, just same name). This stores your
  file in some way, by default in the ZODB, but now we want to use the
blob version.

* the widget that displays this field in a form.

I think unfortunately some custom work seems necessary to hook this
up. megrok.form uses collective.namedfile for its file upload widget.
Collective namedfile defines a field and widget for the file. Glancing
at it, I don't think it's much code, but we do need:

* a special 'BlobFile' field that stores the information in the ZODB

* probably a BlobNamedFile storage object that subclasses from the
existing blobfile File object, but adds a filename (which the named
file bits need)

* a new BlobNamedFileWidget widget  that subclasses NamedFileWidget
and creates a BlobNamedFile instead of a
  NamedFile. With a few tweaks to collective.namedfile we could make
this widget subclass really minimal, just introducing
  a file object factory in it or looking up some utility or adapter to
configure it, but even without that, it's going to be short.

I expect that all this is probably a bit intimidating for you to get
done yourself, but luckily there's help. I think this might make for a
good addition to megrok.form, which we're interested in expanding. I
think it makes sense for us to add blob file support in there along
the lines of what I sketched out above. Please join us in grok-dev and
we'll try to work it out with you. To start this off, I've cc-ed it
into that list as well as the developer of megrok.form.

Regards,

Martijn
___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


Re: [Zope3-Users] save file to filesystem

2008-02-27 Thread kev
 
thanks for the quick responce martijn. ive gotta better grasp of the
concepts now, but yea the implementation makes  my head spin a bit. i´ll
begin to investigate using what you´ve laid out here as  a guide. i´ve
joined the grok-dev list. 

El jue, 28-02-2008 a las 00:19 +0100, Martijn Faassen escribió:
 Hi there,
 
 I haven't had much experience with blobs yet (I hope to start working
 with this in the near future).
 
 From my reading of the blobfile docs, I think the File object
 defined in it is *not* a schema field, such as the
 one you use from megrok.form. These things are different things
 altogether, even though they're both called file.
 blobfile tries to make its File object compatible with the file object
 stored by the zope.app.file package. This is the
 implementation of an object that *stores* the file data, not the field
 that appears in the schema. From my cursory browsing
 through z3c.blobfile it doesn't implement such a file field.
 
 So, concept involved:
 
 * the File field in a schema
 
 * the actual object that ends up on your Python object, a File object
 (altogether different, just same name). This stores your
   file in some way, by default in the ZODB, but now we want to use the
 blob version.
 
 * the widget that displays this field in a form.
 
 I think unfortunately some custom work seems necessary to hook this
 up. megrok.form uses collective.namedfile for its file upload widget.
 Collective namedfile defines a field and widget for the file. Glancing
 at it, I don't think it's much code, but we do need:
 
 * a special 'BlobFile' field that stores the information in the ZODB
 
 * probably a BlobNamedFile storage object that subclasses from the
 existing blobfile File object, but adds a filename (which the named
 file bits need)
 
 * a new BlobNamedFileWidget widget  that subclasses NamedFileWidget
 and creates a BlobNamedFile instead of a
   NamedFile. With a few tweaks to collective.namedfile we could make
 this widget subclass really minimal, just introducing
   a file object factory in it or looking up some utility or adapter to
 configure it, but even without that, it's going to be short.
 
 I expect that all this is probably a bit intimidating for you to get
 done yourself, but luckily there's help. I think this might make for a
 good addition to megrok.form, which we're interested in expanding. I
 think it makes sense for us to add blob file support in there along
 the lines of what I sketched out above. Please join us in grok-dev and
 we'll try to work it out with you. To start this off, I've cc-ed it
 into that list as well as the developer of megrok.form.
 
 Regards,
 
 Martijn

___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users