Version 3.3.5

Released: December 13, 2019

Changes

Checkouts

The ID and URL of the checkout model was added the serializer. This adds these two fields to the entries of the checkout list API view. This change makes it easy to determine which checkout resource to delete to check in a document.

Database

The size of several fields was increased. These were: role label field size from 64 to 128 characters, smart link label size from 96 to 128 characters, and the source label field size from 64 to 128 characters.

Migrations were added to all changes and these will me applied automatically during upgrade.

Dependencies

Versions of django-timezone-field and kombu were pinned to specific version known to work correctly. This avoids two installations of Mayan EDMS to end up with different versions of these two libraries.

Downloads

The library Django DownloadView was removed. The code to support all downloads (document, version, keys, signatures) was been implement natively using a modified port of Django 2.2 FileResponse.

Settings

All initial setting migrations have been updated to accept manually migrated settings too.

Templating

The web link template field and the smart links fields were updated to use the new TemplateField form field. This is the same field used in the templating sandbox.

Testing

The process of creating the temporary config file used in setting tests has been unified. All setting tests create the test config file in a predictable way now.

User interface

Some remaining instances of the word “weblink” were renamed to “web link”.

It was a Mayan EDMS anti-pattern to have the resolved web links and smart links show their template edit and delete buttons. This has been rectified in this version.

Missing link icons were added for several apps. Likewise some missing field help texts were also added.

Other

The TemplateField field now shows the available variable in the help text automatically. There is no need to modify the help text anymore.

The method to add the BaseTransformationTypemetaclass metaclass to the BaseTransformation class, has been updated again to make it compatible with Python 2 and Python 3.

Removals

  • Django download views library.

Upgrading process

  1. Stop supervisord:

    sudo systemctl stop supervisor
    

Upgrading from Mayan EDMS 3.2.x

  1. Install the Python 3 development OS package:

    sudo apt-get install python3-dev
    
  2. Update the virtualenv to use Python 3:

    sudo -u mayan virtualenv --clear /opt/mayan-edms -p /usr/bin/python3
    
  3. Create a home directory for the Mayan EDMS system user:

    mkdir /home/mayan
    
  4. Grant ownership to the Mayan EDMS system user:

    chown mayan:mayan /home/mayan
    
  5. Reinstall the Python client for PostgreSQL and Redis:

    sudo -u mayan /opt/mayan-edms/bin/pip install --no-use-pep517 psycopg2==3.1.14 redis==5.0.3
    

    Note

    Platforms with the ARM CPU might also need additional requirements:

    sudo -u mayan /opt/mayan-edms/bin/pip install --no-use-pep517 psutil==5.8.0
    
  6. Reinstall the Python client for RabbitMQ if you are using RabbitMQ as a broker:

    sudo -u mayan /opt/mayan-edms/bin/pip install --no-use-pep517 amqp==5.2.0
    

Upgrade steps from any previous version of Mayan EDMS

  1. Remove deprecated requirements:

    sudo -u mayan curl https://gitlab.com/mayan-edms/mayan-edms/raw/master/removals.txt -o /tmp/removals.txt \
    && sudo -u mayan /opt/mayan-edms/bin/pip uninstall -y -r /tmp/removals.txt
    
  2. Update the Mayan EDMS Python package:

    sudo -u mayan /opt/mayan-edms/bin/pip install mayan-edms==3.3.5
    

    the requirements will also be updated automatically.

  3. Make a backup of your supervisord file:

    sudo cp /etc/supervisor/conf.d/mayan-edms.conf /etc/supervisor/conf.d/mayan-edms.conf.bck
    
  4. Update the supervisord configuration file. Replace the environment variables values show here with your respective settings. This step will refresh the supervisord configuration file with the new queues and the latest recommended layout:

    sudo -u mayan MAYAN_DATABASE_ENGINE=django.db.backends.postgresql MAYAN_DATABASE_NAME=mayan \
    MAYAN_DATABASE_PASSWORD=mayanuserpass MAYAN_DATABASE_USER=mayan \
    MAYAN_DATABASE_HOST=127.0.0.1 MAYAN_MEDIA_ROOT=/opt/mayan-edms/media/ \
    /opt/mayan-edms/bin/mayan-edms.py platformtemplate supervisord | sudo sh -c "cat > /etc/supervisor/conf.d/mayan-edms.conf"
    

    or:

    sudo -u mayan MAYAN_DATABASES=\"{'default':{'ENGINE':'django.db.backends.postgresql','NAME':'mayan','PASSWORD':'mayanuserpass','USER':'mayan','HOST':'127.0.0.1'}}\" \
    MAYAN_MEDIA_ROOT=/opt/mayan-edms/media/ \
    /opt/mayan-edms/bin/mayan-edms.py platformtemplate supervisord | sudo sh -c "cat > /etc/supervisor/conf.d/mayan-edms.conf"
    
  5. Edit the supervisord configuration file and update any setting specific to your installation:

    sudo vi /etc/supervisor/conf.d/mayan-edms.conf
    
  6. Migrate existing database schema with:

    sudo -u mayan MAYAN_DATABASE_ENGINE=django.db.backends.postgresql MAYAN_DATABASE_NAME=mayan \
    MAYAN_DATABASE_PASSWORD=mayanuserpass MAYAN_DATABASE_USER=mayan \
    MAYAN_DATABASE_HOST=127.0.0.1 MAYAN_MEDIA_ROOT=/opt/mayan-edms/media/ \
    /opt/mayan-edms/bin/mayan-edms.py performupgrade
    

    or:

     sudo -u mayan MAYAN_DATABASES="{'default':{'ENGINE':'django.db.backends.postgresql','NAME':'mayan','PASSWORD':'mayanuserpass','USER':'mayan','HOST':'127.0.0.1'}}" \
     MAYAN_MEDIA_ROOT=/opt/mayan-edms/media/ \
    /opt/mayan-edms/bin/mayan-edms.py performupgrade
    
  7. Add new static media:

    sudo -u mayan MAYAN_MEDIA_ROOT=/opt/mayan-edms/media/ \
    /opt/mayan-edms/bin/mayan-edms.py preparestatic --noinput
    
  8. Start supervisord:

    sudo systemctl start supervisor
    

The upgrade procedure is now complete.

Backward incompatible changes

  • None

Bugs fixed or issues closed

  • GitLab issue #698 3.3.3 install - ERROR: django-timezone-field 4.0 has requirement django>=2.2, but you’ll have django 1.11.26 which is incompatible.

  • GitLab issue #699 3.3.3 - TypeError: can’t pickle memoryview objects