Version 2.1

Released: May 14, 2016

Changes

Upgrade to use Django 1.8.13

With the end of life support for Django 1.7, moving to the next Mayan EDMS minor version was a target for this release. The Django minor release chosen was 1.8 as it is very compatible with 1.7 and required minimal changes. Django 1.8 is an LTS release (Long Term Support) meaning that is no new big feature of a new Django version is required, the project can stay in Django 1.8 for a good amount of time with no downsides.

Remove remaining references to Django’s User model

The few remaining hard code references to Django’s User model that were missed in a previous release have been removed. Using a custom User model with Mayan should present very little if any obstacles.

Remove included login required middleware

The custom middleware include with Mayan EDMS that forces user to be authenticated before being able to access any view has been removed in favor of a dedicated 3rd party Django app for that purpose. The app chosen was django-stronghold (http://mikegrouchy.com/django-stronghold/).

Improve generation of success and error messages for class based views

In the past success messages for actions would show a generic mention to the object being manipulated (document, folder, tag). Now the errors and success messages with be more explicit in describing what the view has or was trying to manipulate.

Remove ownership concept from folders

Currently Folders in Mayan EDMS have a field that stores a reference to the user that has created that folders. One of the design decisions of Mayan EDMS is that there should never be any explicit ownership of any object. Ownership is relative and is defined by the Access Control List of an object. The removal of the user field from the Folders model brings this app in line with the defined behavior.

Replacement of strip_spaces middleware with the spaceless template tag

As a size optimization technique HTML content was dynamically stripped of spaces as it was being served. The technique used involved detecting the MIME type of the content being served and if found to be of text/HTML type spaces between tags were stripped. An edge case was found where this did not worked always. The approached has been changed to use Django’s official tag to strip spaces. In addition to using an official approach, the removal of spaces only happens when the template is compiled and not at each HTTP response. The optimization is minimal but since it happened at every response a small increase in speed is expected for all deployment scenarios.

Deselect the update checkbox for optional metadata by default

During the last releases the behavior of the of metadata edit checkbox has seen several tune ups. Thanks to community feedback one small change has been introduced. The edit checkbox will be deselected by default for all optional document type metadata entries.

Implement per document type document creation permission

If is now possible to grant the document creation permission to a role for a document type. Previously document creation was a “blanket” permission. Having the permission meant that user could create any type of document. With this change it is now possible to restrict which types of document users of a specific role can create.

Make document type delete time period optional

The entries that defined after how long a document in the trash would be permanently deleted have been made optional. This means that if a document type has this option blank, the corresponding document of this type would never be deleted from the trash can.

Fixed date locale handling in document properties, checkout and user detail views

A few releases back the ability to for users to set their timezone was added. This change also included a smart date rendering update to adjust the dates and times fields to the user’s timezone. Some users reported a few views where this timezone adjustment was not happening, this has been fully fixed.

Default index

During new installations a default index that organizes document by year/month when they were uploaded will be created to help users better understand the concept of indexes in Mayan EDMS.

HTML5 upload widget

A common request is the ability to just drap and drop documents from other windows into Mayan EDMS’s document upload wizard. This release includes that capability and will also show a completion bar for the upload. Document uploading is sped up dramatically with this change.

Message of the Day app

Administrators wanting to display announcements has no other way to do so than to customize the login template. To avoid this a new app has been added that allows for the creation of messages to be shown at the user login screen. These messages can have an activation and an expiration date and time. These messages are useful for display company access policies, maintenance announcement, etc.

Document signing

The biggest change for this release if the addition of document signing from within the UI. Enterprise users request this feature very often as in those environments cryptographic signatures are a basic requirement. Previously Mayan EDMS had the ability to automatically check if a document was signed and if signed, verify the validity of the signature. However, to sign documents user had to download the document, sign the document offline, and either re-upload the signed document as a new version or upload a detached signature for the existing document version. Aside from being now able to sign documents from the web user interface, the way keys are handled has been rewritten from scratch to support distributed key storage. This means that a key uploaded in one computer by one user can be used transparently by other users in other computers to sign documents. The relevant access control updates were added to the new document signing system. Users wanting to sign a document need the singing permission for the document (or document type), for the private key they intend to use, and the passphrase (if the key has one). Finally documents are now checked just once for signatures and not every time they are accessed, this provides a very sizable speed improvement in document access and availability.

Other changes

  • Upgrade Python requirements to recent versions.
  • Rename ‘Content’ search box to ‘OCR’.
  • Silence all Django 1.8 model import warnings.
  • Add icons to the document face menu links.
  • Increase icon to text spacing to 3px.
  • Add new permission: checkout details view.
  • Add HTML tags stripping to the browser title generation template.
  • Folder and Tag creation API calls now return the id of the created instances.
  • Update Document model’s uuid field to use Django’s native UUIDField class.
  • Add new split view index navigation
  • Newly uploaded documents appear in the Recent document list of the user.
  • Start migration from django-sendfile to django-downloadview.
  • Index more model fields.
  • Navigation system support querysets using .defer() or .only() optimizations.
  • API fixes and improvements.
  • Increase total test count to 311.
  • Increase test coverage to 77%.
  • Documentation improvements.
  • Handle unicode filenames in staging folders.
  • Add staging file deletion permission.
  • New document_signature_view permission.
  • Instead of multiple keyservers only one keyserver is now supported.
  • Replace document type selection widget with an opened selection list.
  • Add roadmap documentation chapter.

Removals

  • None

Upgrading from a previous version

Using PIP

Type in the console:

$ pip install -U mayan-edms

the requirements will also be updated automatically.

Using Git

If you installed Mayan EDMS by cloning the Git repository issue the commands:

$ git reset --hard HEAD
$ git pull

otherwise download the compressed archived and uncompress it overriding the existing installation.

Next upgrade/add the new requirements:

$ pip install --upgrade -r requirements.txt

Common steps

Migrate existing database schema with:

$ mayan-edms.py performupgrade

Add new static media:

$ mayan-edms.py collectstatic --noinput

The upgrade procedure is now complete.

Backward incompatible changes

  • None

Bugs fixed or issues closed