Version 0.12

February 2012

This release commemorates Mayan EDMS first anniversary!

Overview

Aside from new features, the focus of this release of Mayan EDMS also been about improving the code and documentation quality standard even further. The permission system has been completely overhauled to make it entire class based. The other big change is the addition of object level permissions, with this new system being applied to documents, folder, tags and smart links. There is also a small batch of navigation improvements. Big code cleanup and lots of changes ‘under the hood’, most of these are not visible to the end user, but make the code cleaner and more manageable so that more and better features can be added in future releases:

  • Absolute imports used through the code

  • All app permissions have been move to a separate permissions.py file per app

  • Complete permission system refactor.

  • Document signing code moved to it’s own app

  • Initial unit tests

  • A lot of logging used through the entire project.

  • Much functionality moved to model managers.

  • A lot of code converted into classes.

  • Coding style improvements.

  • Template user authentication state logic improvements, for stronger prevention against intrusion or unintentional display or access of restricted data.

  • Removal of remarked code.

Changes

ACL support

  • Object level access control is now in place for documents, folders, tags and smart links. What this means is that administrators can now grant permissions to users, groups or roles on for specific objects. A more in-depth explanation of how this new ACL system can be found in the 3 tier access control section of the permissions chapter.

  • Default class ACL support. Administrators can setup the access control lists that new documents, folders and tags will automatically inherit when created. Aside from assigning permission to users, groups and roles to specific objects, there is a special user called Creator, use to allow the access control list that the actual creator of an object will inherit.

Anonymous user support

Anonymous user support is a two tier function, first is the addition of the COMMON_ALLOW_ANONYMOUS_ACCESS configuration option that allows non authenticated user to browse all the pages of a Mayan EDMS installation. The second part of this support is the ability to assign permissions or individual access to objects to anonymous users.

Translations

A new Italian translation is available, provided by SeeOpen.IT (www.seeopen.it, info@seeopen.it) as well as complete Russian translation update by Sergei Glita. Included in this release also the initial translation to Polish by mic.

Usability improvements

  • Detached signature behavior improved, uploading a new detached signature erases the previous one.

  • Usability improvement in the role member’s add/removal form, by using HTML’s option groups tag property

2 Step download process

The code for downloading single and multiple document and document versions has been merged with compression support also added. This allows for the download of documents in their original format or compressed and well as the download of several documents in a single compressed file.

Customizable GPG home directory

Addition of the SIGNATURES_GPG_HOME configuration option to let administrators set Mayan EDMS’s GPG instance home directory, used to store keyrings and other GPG configuration files.

Out of process bulk uploading

A management command has been added to help upload a large number of documents from a compressed file. For information about this new feature check the Initial data loading chapter.

Out of process user import

A management command has been added to import a large number users from a CSV file. More information about this new feature can also be found in the Initial data loading chapter.

Refactored document indexing

The document indexing functionality has been improved and moved from experimental stage to beta stage. Index configuration menus are now available on the Setup menu and allows administrators to create skeleton trees that will be populated with document links depending on their metadata and properties. These populated trees can also be mirrored on the physical filesystem and shared using Samba or another filesharing server giving users a structured view of the documents contained within Mayan EDMS from the Indexes tab or from a mirrored index shared via the network. A new configuration option has been added, DOCUMENT_INDEXING_FILESYSTEM_SERVING, which maps the index internal name with the physical directory where such index will be mirrored on disk.

Help shape Mayan EDMS’s future

Included in this version is a small feedback application, found under the About main menu, where users by just answering some questions can help determine the priority of the next planned features on the pipeline, or even help add new features if enough requests are received. All questions are optional but answering as many as possible will help greatly understand the need of the Mayan EDMS user base.

Staging file previews

The staging file previews now show the filename for easier identification and speedier upload selection. The staging files previews are now treated as a gallery which means that users can preview an entire page of staging files without having to click and close each one individually.

Removals

  • Support for Celery and Sentry has been drop for now.

  • Removed the ‘db_index’ argument from Text fields definition and migrations as it was causing error messages for MySQL users, thanks to Sergei Glita for reporting this one.

  • Configuration options removed:

    • OCR_CACHE_URI

    • DOCUMENT_INDEXING_FILESYSTEM_FILESERVING_PATH - Use the newest DOCUMENT_INDEXING_FILESYSTEM_SERVING

    • DOCUMENT_INDEXING_FILESYSTEM_FILESERVING_ENABLE - Use the newest DOCUMENT_INDEXING_FILESYSTEM_SERVING

Upgrading from a previous version

Start off by adding the new requirements:

$ pip install -r requirements/production.txt

Then create the new database structures with:

$ ./manage.py syncdb

Afterwards migrate existing database schema with:

$ ./manage.py migrate permissions 0001 --fake
$ ./manage.py migrate permissions

When the following message appears

The following content types are stale and need to be deleted:

    permissions | permission

Any objects related to these content types by a foreign key will also
be deleted. Are you sure you want to delete these content types?
If you're unsure, answer 'no'.

    Type 'yes' to continue, or 'no' to cancel:

Type yes and press Enter

And continue migrating database schema with:

$ ./manage.py migrate documents
$ ./manage.py migrate document_signatures
$ ./manage.py migrate folders 0001 --fake
$ ./manage.py migrate folders
$ ./manage.py migrate document_indexing 0001 --fake
$ ./manage.py migrate document_indexing
$ ./manage.py migrate sources 0001 --fake
$ ./manage.py migrate sources

Again when a similar messages appears

The following content types are stale and need to be deleted:

    document_indexing | indexinstance

Any objects related to these content types by a foreign key will also
be deleted. Are you sure you want to delete these content types?
If you're unsure, answer 'no'.

    Type 'yes' to continue, or 'no' to cancel:

Type yes and press Enter

The upgrade procedure is now complete.

Backward incompatible changes

The permission system has been completely reworked so sadly this is a place where even data migration can’t help and the permissions assigned to roles will be lost during the upgrade to version 0.12. Users, groups and roles will be preserved only permissions need to be assigned again, so write down your role permission setup before upgrading.

Bugs fixed

  • GitHub issue #17 special thanks to Dave Herring for all the help including

    access to a machine suffering with the issue, and to Sergei Glita for his research and eventual find of the core cause.

  • Statistics fixes.

  • Fixed get_image_cache_name regression in the OCR app.