[Zope] Re: Product function with extension

Garito garito at sistes.net
Mon Apr 9 12:23:48 EDT 2007


Sorry Tres but your solution is not so much minimalistic as I spect

I prefer the Gaël solution but I don't understand so much

Where do I need to put this line? At my product code? Where, please?

Thanks both!!!!!!!

2007/4/9, Tres Seaver <tseaver at palladion.com>:
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Gaël Le Mignot wrote:
> > Hello Garito!
> >
> > Sun, 8 Apr 2007 16:48:14 +0200, you wrote:
> >
> >  > Hi!!
> >  > I have a method in my product called freemind wich generate the xml
> to the
> >  > freemind applet but on this applet is mandatory to use the .mm
> extension
> >
> >  > Is possible to create a product function with extension? (in this
> case will
> >  > be something like freemind.mm)
> >
> > You could do it with a dirty setattr(self, "myfunction.mm",
> self.myfunction).
> >
> > But I would say the cleanest way is to use the Content-Disposition  HTTP
> header:
> >
> >          Content-Disposition: attachment; filename=myfunction.mm
> >
> > (with REQUEST.RESPONSE.setHeader).
> >
> > See http://www.ietf.org/rfc/rfc1806.txt for more information on it.
> >
>
> You could also register a browser view which uses your method. E.g.,
> to implement the view::
>
>    # Produts/foo/browser.py
>    from Products.Five import BrowserView
>    class FreemindView(BrowserView):
>        def __call__(self, *args, **kw):
>            self.request.RESPONSE.setHeader('Content-Type', 'text/xml')
>            return self.context.freemind()
>
> and then register the view
>
>   <!-- Products/foo/configure.zcml -->
>   <configure xmlns="http://namespaces.zope.org/zope"
>              xmlns:browser="http://namespaces.zope.org/browser">
>
>     <browser:page
>        for=".interfaces.IFreemindProvider"
>        name="freemind.mm"
>        class=".browser.FreemindView"
>        permission="zope.Public"
>        />
>
> The registration assumes that your content class implements an
> 'IFreemindProvider' view, which might be defined as:
>
>   # Products/foo/interfaces.py
>   from zope.interface import Interface
>   class IFreemindProvider(Interface):
>       """ Document it here.
>       """
>       def freemind():
>           """ Document the method here.
>           """
>
> Your content class would then declare that it implements it, e.g.:
>
>   # Products/foo/content.py
>   from zope.interface import implements
>   from Products.foo.interfaces import IFreemindProvider
>
>   class FooContent(...):
>       implements(IFreemindProvider)
>       ....
>
>
> Once set up this way, assuming that yo have a FooContext instance with
> the URL, 'http://example.com/path/to/foo', then you could point the
> browser to 'http://example.com/path/to/foo/freemind.mm' to get the XML.
>
>
>
> Tres.
> - --
> ===================================================================
> Tres Seaver          +1 540-429-0999          tseaver at palladion.com
> Palladion Software   "Excellence by Design"    http://palladion.com
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.2.2 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>
> iD8DBQFGGXdB+gerLs4ltQ4RAjlAAKCeXBZIYWcL1bHM6vjmnaEzznGvSQCeNCld
> qCeaE8441MRetKfmNwrhnP0=
> =Uzxy
> -----END PGP SIGNATURE-----
>
> _______________________________________________
> 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 )
>



-- 
Mis Cosas
http://blogs.sistes.net/Garito
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.zope.org/pipermail/zope/attachments/20070409/9f7ea596/attachment.htm


More information about the Zope mailing list