-----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@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-----