-> Instead of creating a Product, you can just put an External Method in the -> root of your site.
A couple of weeks ago, I asked about customizing the default Zope "type" when a file is uploaded with either WebDAV or FTP. For example, I want ".html" files to be a ZopePageTemplate instead of a DTML Document, which is the default. Ron gave me the excellent suggestion of creating an "External Method" that looks like the following: -> def PUT_factory(self, name, typ, body): -> """Make Page Template the default type for ftp uploads.""" -> from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate -> -> if typ == 'text/html': -> return ZopePageTemplate(name) -> return None Since then, I've done some learning, and now I'd like to understand exactly *why* Ron's external method works. I'm creating a Zope Product that will introduce a new Zope "type" called "MIME Remapper". This "MIME Remapper" will be a ZClass that has a single property sheet, which allows you to associate particular MIME types with particular Zope "types" using a nifty text field and dropdown. The problem is, I don't understand why Ron's suggestion actually works. I assume that the method PUT_factory() is over-riding the built-in default, and when it returns None (for an unknown MIME type), Zope --for some magical reason-- falls back to its built-in PUT_factory() to figure out the MIME type. Is that right? Now, does that mean that the only way to override PUT_factory() is via an external method? If so, why is that? If not, can I create a new ZClass that has a method called PUT_factory()? Will a new instance of my ZClass mean that PUT_factory() is overridden for the folder the instance is in? If so, then why is Zope finding the PUT_factory() of my new "MIME Remapper" type when it actually wants the PUT_factory() for the folder that I'm in? Do I need to redefine the PUT_factory() of the instance's folder? How do I do that? Obviously, I'm confused. I feel like this particular problem will give me good insight into how Zope works, so I'd love an explanation of why Ron's PUT_factory() works. (FYI, I understand class inheritance, just not within the Zope framework.) Thanks, Derek Simkowiak [EMAIL PROTECTED] _______________________________________________ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )