Module
zope.filerepresentation.interfaces

File-system representation interfaces

The interfaces defined here are used for file-system and file-system-like representations of objects, such as file-system synchronization, FTP, PUT, and WebDAV.

There are three issues we need to deal with:

File system representation

Every object is either a directory or a file.

Properties

There are two kinds of proprties:

  • Data properties

    Data properties are handled directly by the object implementation.

  • Meta-data properties

    Meta data properties are handled via annotations.

Completeness

We must have a complete lossless data representation for file-system synchronization. This is achieved through serialization of:

  • All annotations (not just properties, and
  • Extra data.

Strategies for common access mechanisms:

FTP

  • For getting directory info (statish) information:
    • Use Zope DublinCore to get modification times
    • Show as readable if we can access a read method.
    • Show as writable if we can access a write method.

FTP and WebDAV

  • Treat as a directory if there is an adapter to IReadDirectory. Treat as a file otherwise.

  • For creating objects:

    • Directories:

      Look for an IDirectoryFactory adapter.

    • Files

      First lookj for a IFileFactory adapter with a name that is the same as the extention (e.g. ".pt").

      Then look for an unnamed IFileFactory adapter.

File-system synchronization

Because this must be lossless, we will use class-based adapters for this, but we want to make it as easy as possible to use other adapters as well.

For reading, there must be a class adapter to IReadSync. We will then apply rules similar to those above.