[Zope3-Users] Re: Zope3 and LocalFS functionality

Philipp von Weitershausen philipp at weitershausen.de
Fri Jun 3 11:23:02 EDT 2005


H Jansen wrote:
> On Thu, 2005-06-02 at 23:48, Ivo van der Wijk wrote:
> 
>>On 6/2/05, H Jansen <h.jansen at fel.tno.nl> wrote:
>>
>>>I have build a very useful website in Zope2 in which I used the LocalFS
>>>product for web access to my local file system. New to Zope3 I'm looking
>>>for similar functionality.
>>>
>>>I'd like to hear if anyone has dealt with this issue before in Zope3?
>>>How should I go about it, will I have to go deep and start writing the
>>>thing from scratch ... :sad:
>>>
>>
>>I don't think there are any existing products that implement this, but
>>depending on what you want to store on this LocalFS, I think
>>implementation in Zope3 should be alot easier than with Zope2
>>
>>  Ivo
> 
> 
> Can you tell me step by step which implementation stages must/should be
> addressed? At the moment I don't have the time to read the developers
> handbook front to back, so your information may help me save a lot of
> time. (I'm proficient with Python though.)

Henk,

I'm cc'ing zope3-users since that is the list you should address 
problems like these to. zope3-dev is for the development of Zope 3 itself.

Expecting somebody else to work out the whole development cycle so that 
you can save yourself some time by not reading the docs is asking a lot. 
I'll just run down the basic idea here (pseudo-python-code), but you'll 
sooner or later have to read some docs when you run into errors and 
don't understand them.

1) Write a schema that holds the file name and specifies the methods you 
want to have working for the file. I presume you only need read():

class ILocalFile(Interface):

   filename = TextLine(...)

   def read():
      """..."""

2) Write a persistent implementation, something along the lines of:

class LocalFile(Persistent):
   implements(ILocalFile)

   def __init__(self, filename):
       self.filename = filename

   def read(self):
       return file(self.filename).read()

3) Make security assertions for the implementation

4) Write a browser view that serves the file:

class LocalFileView(BrowserView):

   def __call__(self):
       return self.context.read()

5) Register the browser view under index.html for ILocalFile

6) Register addmenu, addform, editform for ILocalFile

Philipp


More information about the Zope3-users mailing list