[Zope] PUT_factory to create ZWikiPage by default - help
John Hunter
jdhunter@ace.bsd.uchicago.edu
16 Apr 2001 17:26:16 -0500
>>>>> "John" == John Hunter <jdhunter@ace.bsd.uchicago.edu> writes:
John> Following the advice of Dieter Maurer and Tres Seaver I am
John> trying to use PUT_factory to override the default object
John> type and create a ZWikiPage when I create a page by
John> ange-ftp. Because I am a zope and python newbie, I am
John> having some trouble.
OK, I have finally got this thing working. Part of the problem was
that I was trying to do this as a PythonScript instead of as an
ExternalMethod. But from
http://www.zope.org/Members/michel/Projects/Interfaces/NewObjectPutHandler
regarding PUT_factory methods:
MJ> PythonScripts cannot be used for this; you cannot give Python
MJ> Scripts access to classes that have been protected by
MJ> permissions. This includes any class that inherits from
MJ> PropertyManager, for example.
I'll run though what I did step-by-step for the benefits of other
newbies such as myself who want implement this:
1) Create a file in /the/path/to/zope/Extensions called
PUT_ZwikiPage.py (or name it whatever you like) with the content:
def PUT_factory( self, name, typ, body ):
"""
Override the default PUT method to make ZWikiPage the
default type for ftp uploads
"""
from Products.ZWiki.ZWikiPage import ZWikiPage
if typ == 'text/plain':
return ZWikiPage( '', __name__=name )
return None
# I think that returning None will invoke the default PUT handler from
# NullResources.py
2) From the ZWiki folder you are working in, add an External Method
with 'Select type to add'->'External Method'
3) enter the following info in the fields in the dialog box
Id PUT_factory
Title (optional)
Module Name PUT_ZwikiPage
Function Name PUT_factory
4) You're done. You should be able to create new links via ange-ftp.
Thanks to Dieter Maurer, Tres Seaver, Tim Hicks, and Brian Lloyd for
useful info in previous responses and posts.
John Hunter