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 <[EMAIL PROTECTED]>:
-----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 [EMAIL PROTECTED] 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 - [email protected] 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
_______________________________________________ Zope maillist - [email protected] 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 )
