Skip to main content

cmis_storage is a storage engine for Django to integrate CMIS-compatible services, like Alfresco

Project description

=============================
cmis_storage
=============================

.. image:: https://badge.fury.io/py/cmis_storage.png
:target: https://badge.fury.io/py/cmis_storage

**cmis_storage** is a storage engine for Django to integrate CMIS-compatible services, like Alfresco.
It's currently compatible with Django 1.7+ and Python 2.7, and uses Apache cmislib. Python 3.x is not
currently supported because cmislib does not support it yet.

Documentation
-------------

The full documentation can be found at https://cmis_storage.readthedocs.org.

Installation
------------

First, install **cmis_storage** from pip using

::

pip install cmis_storage

Next, add ``cmis_storage`` to ``INSTALLED_APPS`` in your ``settings.py`` file:

::

INSTALLED_APPS = (
...
'cmis_storage',
)

You also need to add the configuration for your CMIS-compatible server in your ``settings.py`` file,
like this, for example:

::

CMIS_STORAGE_OPTIONS = {
'repositoryUrl': 'http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.0/atom',
'username': 'admin',
'password': 'admin',
'baseFolder': '/'
}

The config parameters are self-explanatory.


Usage
------------

**cmis_storage** offers the class ``CMISStorage``, which is a storage engine
that you can use in any ``FileField`` field within your models, for example:

::

from django.db import models

from cmis_storage.storage import CMISStorage


class TestModel(models.Model):
document = models.FileField(storage=CMISStorage())

From that point on, all the file handling involving ``TestModel.document`` will happen on the CMIS-compatible
server. You shouldn't need to directly interact with the `CMISStorage`, only in case you
need to manually delete a file. You can do it like this:

::

storage = CMISStorage()
storage.delete(instance.document.path)

Optional views
^^^^^^^^^^^^^^

The module offers an optional view so you can directly serve files of your content management system
from a certain URL. To use it, simply add a corresponding url to the view in your ``urls.py`` file:

::

urlpatterns = [
...
url(r'^get/(?P<path>.+)$', cmis_storage.views.get_file, name='cmis_storage_get_file'),
]

Beware though, the view **should not be used as-is**, because it does not make any kind of authentication
or authorization check.

Credits
---------

This module was built by José Tomás Tocino and other authors that may be referenced in the AUTHORS file,
during the development of several internal projects at the University of Cádiz, Spain.




History
-------

0.1.0 (2016-03-24)
++++++++++++++++++

* Project opened

Project details


Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page