Documents exist in [Projects]. Each project has a "storage backend" that implements how it stores the BLOBs that are the document contents.
Theoretically backends for storing documents are modular and additional document management backends are possible However only one document storage backend has even been implemented, the [DBFS1] backend.
OpenGroupware Legacy also provides an "SkyFS" (FileSystem) backend that lacked version control and permissions management - as it mapped directly 1:1 to the underlying filesystem at the specified path. OpenGroupware Coils does not support SkyFS at this time. Integrating any given underlying filesystem into the object model and allowing managed access control is nearly impossible - if you want a straight-up file share [known in groupware speak as a "garbage dump"] you should simply use a file server.
Although there is only one storage backend all code still assumes there are multiple possible backends. So from a [Project] entity the URL attribute is used to marshall a manager object using the blob_manager_for_ds method from coils.foundation.
blob_manager_for_ds(sky_url, project_id=None)
This will return a manager object that can be used to return the paths to the specified documents. The prefix of the project's URL determines the type of manager.
URL | Manager Type |
---|---|
NULL | DBFS1Manager |
skyrix:// | DBFS1Manager |
file:// | SKyFSManager (not implemented) |
... | ... |
A manager class implements two functions:
get_path(self, document, version=None) .... def create_path(self, document, version) ...
The get_path method returns a path to a file that can be passed to the appropriate method of the [BLOBManager].
The create_path method returns a tuple of folder path and file name where the resource should be created.
The DBFS1 is a fully functioning versioning backends that offers complete integration with OpenGrouwpare object model and access control. This is the default project storage backend.
This backend has a skyrix:// URL and in OpenGrouwpare Legacy was sometimes referred to as the Skyrix backend.
Not Implemented
Note that OpenGroupware Legacy code base easily predates the various other companies and products that use the "SkyFS" monitor - we had it first, the Legacy code base days back to the days of NextSTEP and as Open Source the commit log is public record.