[Zope-CMF] CookedBody and Blobs
David Pratt
fairwinds at eastlink.ca
Thu Aug 4 08:36:30 EDT 2005
I am about 95% through a filesystem product that stores the object data
on the filesystem. All my views inside ZMI work nice but I am having a
couple of troubles with my views of my repository files in CMF. So I
am looking for a bit of advice to help me to get past the final 5%
With this type of product I made an OFS-based product and a portal
based product. Instead of creating two distinct products I used the
same approach that OFSImage and portal image use. Portal image
subclasses OFSImage and as a result there is very little to it. In
anycase, I subclassed my OFSbased filesystem product so that I would
not have so much work to have all the methods that were created for the
OFS based product. The OFS product subclasses Persistent, Implicit,
PropertyManager, RoleManager, Item_w__name__, Cacheable
Because the portal filesystem object can have any mime type, I am
making a view template for my product that uses tal:condition to
display something appropriate for the content types depending on what
it gets. I looked at fileEdit for some ideas on this since it is the
manage_main for ZMI and seems to do pretty much the right thing. My
goal is this:
* images/jpeg images/gif images/png display the image in view if less
than 64K in size (otherwise provide link for download)
* text/* provides text editing through Cooked body for text files if
less than 64K in size (otherwise provide link for download)
* any other mime type just gives link to download the file.
Instead of reinventing the wheel, CMF also has a document_view and
image_view template so I am attempting to incorporate these in my
template. The key tal in here is ' tal:replace="structure here/tag" '
for portal image and ' tal:structure here/CookedBody' for text
document.
The initial problem I got was attribute error with tag method. (Tag
method is responsible for grabbing img tag and contents with portal
image rendering.) I am not quite sure how tag does because I haven't
found the method to view it but it seems to take the content from the
OFSImage view and takes img tag and everything inside it. But I did not
originally subclass OFSImage (which is the base of portal image). To
solve this, I just made the image tag in my template and gave it
absolute_url as tal:attribute for src. So now I get my image to appear
for conditions that fit image which is fine.
But for my text files such as HTML, plain text and restructured text, I
wanted to use CookedBody method which is already called in standard
document_view template since this will allow users to modify their
documents even if the object's data is not really in the object
database. So getting attribute error on CookedBody and trying to figure
out what this needs to work.
I guess I am wondering where I may have missed the boat that my Images
and text can't use the same methods already available in CMF- would
adding OFSImage to my subclasses in my OFSbased product help? My
problem is I don't really know tag method or CookedBody and what they
need to render content. Hoping someone has some suggestions. My
thinking is that perhaps I am missing something in my subclassing that
could have made this work better so it could use same view methods
consistently (just conditional on content type in a single template
instead of as separate templates). Sorry about the long message. Many
thanks.
Regards,
David
More information about the Zope-CMF
mailing list