Compare commits

..

1 Commits

Author SHA1 Message Date
Roberto Rosario
82099c2f1b Update the document print view to allow passing multiple document ids.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2018-06-08 17:03:46 -04:00
6598 changed files with 266891 additions and 212267 deletions

View File

@@ -4,7 +4,7 @@ HISTORY.md
mayan/media mayan/media
db.sqlite* db.sqlite*
docker docker
!docker/rootfs !docker/etc
!docker/entrypoint.sh
./.* ./.*
docs docs

View File

@@ -1,3 +1,2 @@
[flake8] [flake8]
exclude = node_modules,static,templates ignore = E501
ignore = E501, N801, N802, N804, N805, N806

4
.gitignore vendored
View File

@@ -7,7 +7,6 @@
.coverage .coverage
.coverage.tox* .coverage.tox*
.idea/ .idea/
*.swp
.tox/ .tox/
.vagrant .vagrant
_build/ _build/
@@ -28,8 +27,5 @@ static_collected/
/misc/mayan.geany /misc/mayan.geany
/mayan/media/static/ /mayan/media/static/
/venv/ /venv/
/venv3/
/whoosh_index/ /whoosh_index/
google_fonts/
node_modules/ node_modules/
docs/build/

View File

@@ -1,15 +1,9 @@
stages: stages:
- test - test
- build_python - build
- build_docker
- build_documentation
- push_python
- push_docker
- push_documentation
- deploy
job_docker_build: job_docker_master:
stage: build_docker stage: build
image: docker:latest image: docker:latest
services: services:
- docker:dind - docker:dind
@@ -17,40 +11,13 @@ job_docker_build:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script: script:
- docker build --pull -t "$CI_REGISTRY_IMAGE" -f docker/Dockerfile . - docker build --pull -t "$CI_REGISTRY_IMAGE" -f docker/Dockerfile .
- VERSION=`cat docker/rootfs/version` - docker run --rm "$CI_REGISTRY_IMAGE" run-tests
- docker tag "$CI_REGISTRY_IMAGE" "$CI_REGISTRY_IMAGE:$VERSION" - docker push "$CI_REGISTRY_IMAGE"
- docker run --rm "$CI_REGISTRY_IMAGE:$VERSION" run-tests
- docker push "$CI_REGISTRY_IMAGE:$VERSION"
- docker push "$CI_REGISTRY_IMAGE:latest"
- docker tag "$CI_REGISTRY_IMAGE:$VERSION" registry-1.docker.io/mayanedms/mayanedms:"$VERSION"
- docker tag "$CI_REGISTRY_IMAGE:$VERSION" registry-1.docker.io/mayanedms/mayanedms:latest
- docker logout
only: only:
- releases/all - master
- releases/docker
job_docker_push: job_docker_other:
stage: push_docker stage: build
image: docker:latest
services:
- docker:dind
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script:
- VERSION=`cat docker/rootfs/version`
- docker pull "$CI_REGISTRY_IMAGE:$VERSION"
- docker tag "$CI_REGISTRY_IMAGE:$VERSION" registry-1.docker.io/mayanedms/mayanedms:"$VERSION"
- docker tag "$CI_REGISTRY_IMAGE:$VERSION" registry-1.docker.io/mayanedms/mayanedms:latest
- docker logout
- docker login -u "$DOCKER_HUB_USERNAME" -p "$DOCKER_HUB_PASSWORD" https://registry-1.docker.io
- docker push registry-1.docker.io/mayanedms/mayanedms:"$VERSION"
- docker push registry-1.docker.io/mayanedms/mayanedms:latest
only:
- releases/all
- releases/docker
job_docker_nightly:
stage: build_docker
image: docker:latest image: docker:latest
services: services:
- docker:dind - docker:dind
@@ -60,87 +27,12 @@ job_docker_nightly:
- docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" -f docker/Dockerfile . - docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" -f docker/Dockerfile .
- docker run --rm "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" run-tests - docker run --rm "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" run-tests
- docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
only: except:
- nightly - master
- staging
job_documentation_build:
stage: build_documentation
image: ubuntu:18.04
artifacts:
expire_in: 1 hr
paths:
- docs
before_script:
- apt-get -qq update
- apt-get install -qq locales make python-pip enchant
- echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale
- locale-gen en_US.UTF-8
- update-locale LANG=en_US.UTF-8
- export LC_ALL=en_US.UTF-8
script:
- pip install -r requirements/documentation.txt
- cd docs
- make html
only:
- releases/all
- releases/documentation
job_documentation_push:
stage: push_documentation
image: ubuntu:18.04
before_script:
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- echo "$DOCUMENTATION_SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client rsync -y )'
- eval $(ssh-agent -s)
- echo "$DOCUMENTATION_SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
script:
- rsync -avzP --progress -e ssh docs/_build/html/* mayandocs@docs.mayan-edms.com:/home/rosarior/webapps/mayan_docs
only:
- releases/all
- releases/documentation
job_build_python:
stage: build_python
image: ubuntu:18.04
artifacts:
expire_in: 1 hr
paths:
- dist
before_script:
- apt-get -qq update
- apt-get install -qq locales make python-pip
script:
- echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale
- locale-gen en_US.UTF-8
- update-locale LANG=en_US.UTF-8
- export LC_ALL=en_US.UTF-8
- pip install -r requirements/build.txt
- make python-wheel
only:
- releases/all
- releases/python
job_push_python:
stage: push_python
image: ubuntu:18.04
before_script:
- apt-get -qq update
- apt-get install -qq python-pip
script:
- pip install -r requirements/build.txt
- echo "$PYPIRC" > ~/.pypirc
- twine upload dist/* -r pypi
only:
- releases/all
- releases/python
.test_base: &test_base .test_base: &test_base
stage: test stage: test
image: ubuntu:18.04 image: ubuntu:16.04
cache: cache:
paths: paths:
- ~/.cache/pip/ - ~/.cache/pip/
@@ -152,14 +44,8 @@ job_push_python:
- locale-gen en_US.UTF-8 - locale-gen en_US.UTF-8
- update-locale LANG=en_US.UTF-8 - update-locale LANG=en_US.UTF-8
- export LC_ALL=en_US.UTF-8 - export LC_ALL=en_US.UTF-8
- apt-get install -qq curl exiftool gcc ghostscript gnupg1 graphviz libfuse2 libjpeg-dev libmagic1 libpng-dev libtiff-dev poppler-utils libreoffice poppler-utils python-dev python-pip tesseract-ocr tesseract-ocr-deu - apt-get install -qq curl gcc ghostscript gpgv gnupg graphviz libjpeg-dev libmagic1 libpng-dev libtiff-dev poppler-utils libreoffice poppler-utils python-dev python-pip tesseract-ocr tesseract-ocr-deu
- pip install -r requirements.txt -r requirements/testing-base.txt - pip install -r requirements/testing.txt
only:
- releases/all
- releases/docker
- releases/python
- staging
- nightly
test-mysql: test-mysql:
<<: *test_base <<: *test_base
@@ -170,7 +56,7 @@ test-mysql:
- mysql:8.0.3 - mysql:8.0.3
script: script:
- apt-get install -qq libmysqlclient-dev mysql-client - apt-get install -qq libmysqlclient-dev mysql-client
- pip install mysqlclient - pip install mysql-python
- mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD" -e "set global character_set_server=utf8mb4;" - mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD" -e "set global character_set_server=utf8mb4;"
- python manage.py test --mayan-apps --settings=mayan.settings.testing.gitlab-ci.db_mysql --nomigrations - python manage.py test --mayan-apps --settings=mayan.settings.testing.gitlab-ci.db_mysql --nomigrations
tags: tags:
@@ -194,33 +80,3 @@ test-sqlite:
<<: *test_base <<: *test_base
script: script:
- python manage.py test --mayan-apps --settings=mayan.settings.testing.gitlab-ci --nomigrations - python manage.py test --mayan-apps --settings=mayan.settings.testing.gitlab-ci --nomigrations
deploy_demo:
environment:
name: demo
stage: deploy
before_script:
- mkdir -p ~/.ssh
- echo "${DEMO_SSH_KNOWN_HOST}" > ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- echo "${DEMO_PRIVATE_KEY}" > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
script:
- scp contrib/scripts/install/docker.sh root@$DEMO_IP_ADDRESS:~
- ssh root@$DEMO_IP_ADDRESS "DELETE_VOLUMES=true ./docker.sh"
when: manual
deploy_staging:
environment:
name: staging
stage: deploy
before_script:
- mkdir -p ~/.ssh
- echo "${STAGING_SSH_KNOWN_HOST}" > ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- echo "${STAGING_PRIVATE_KEY}" > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
script:
- scp contrib/scripts/install/docker.sh root@$STAGING_IP_ADDRESS:~
- ssh root@$STAGING_IP_ADDRESS "DOCKER_MAYAN_IMAGE=registry.gitlab.com/mayan-edms/mayan-edms:staging ./docker.sh"
when: manual

View File

@@ -19,12 +19,6 @@ source_lang = en
source_file = mayan/apps/authentication/locale/en/LC_MESSAGES/django.po source_file = mayan/apps/authentication/locale/en/LC_MESSAGES/django.po
type = PO type = PO
[mayan-edms.autoadmin-2-0]
file_filter = mayan/apps/autoadmin/locale/<lang>/LC_MESSAGES/django.po
source_lang = en
source_file = mayan/apps/autoadmin/locale/en/LC_MESSAGES/django.po
type = PO
[mayan-edms.cabinets-2-0] [mayan-edms.cabinets-2-0]
file_filter = mayan/apps/cabinets/locale/<lang>/LC_MESSAGES/django.po file_filter = mayan/apps/cabinets/locale/<lang>/LC_MESSAGES/django.po
source_lang = en source_lang = en
@@ -49,24 +43,18 @@ source_lang = en
source_file = mayan/apps/converter/locale/en/LC_MESSAGES/django.po source_file = mayan/apps/converter/locale/en/LC_MESSAGES/django.po
type = PO type = PO
[mayan-edms.dashboards-2-0]
file_filter = mayan/apps/dashboards/locale/<lang>/LC_MESSAGES/django.po
source_lang = en
source_file = mayan/apps/dashboards/locale/en/LC_MESSAGES/django.po
type = PO
[mayan-edms.dependencies-3-0]
file_filter = mayan/apps/dependencies/locale/<lang>/LC_MESSAGES/django.po
source_lang = en
source_file = mayan/apps/dependencies/locale/en/LC_MESSAGES/django.po
type = PO
[mayan-edms.django_gpg-2-0] [mayan-edms.django_gpg-2-0]
file_filter = mayan/apps/django_gpg/locale/<lang>/LC_MESSAGES/django.po file_filter = mayan/apps/django_gpg/locale/<lang>/LC_MESSAGES/django.po
source_lang = en source_lang = en
source_file = mayan/apps/django_gpg/locale/en/LC_MESSAGES/django.po source_file = mayan/apps/django_gpg/locale/en/LC_MESSAGES/django.po
type = PO type = PO
[mayan-edms.documents-2-0]
file_filter = mayan/apps/documents/locale/<lang>/LC_MESSAGES/django.po
source_lang = en
source_file = mayan/apps/documents/locale/en/LC_MESSAGES/django.po
type = PO
[mayan-edms.document_comments-2-0] [mayan-edms.document_comments-2-0]
file_filter = mayan/apps/document_comments/locale/<lang>/LC_MESSAGES/django.po file_filter = mayan/apps/document_comments/locale/<lang>/LC_MESSAGES/django.po
source_lang = en source_lang = en
@@ -97,12 +85,6 @@ source_lang = en
source_file = mayan/apps/document_states/locale/en/LC_MESSAGES/django.po source_file = mayan/apps/document_states/locale/en/LC_MESSAGES/django.po
type = PO type = PO
[mayan-edms.documents-2-0]
file_filter = mayan/apps/documents/locale/<lang>/LC_MESSAGES/django.po
source_lang = en
source_file = mayan/apps/documents/locale/en/LC_MESSAGES/django.po
type = PO
[mayan-edms.dynamic_search-2-0] [mayan-edms.dynamic_search-2-0]
file_filter = mayan/apps/dynamic_search/locale/<lang>/LC_MESSAGES/django.po file_filter = mayan/apps/dynamic_search/locale/<lang>/LC_MESSAGES/django.po
source_lang = en source_lang = en
@@ -115,12 +97,6 @@ source_lang = en
source_file = mayan/apps/events/locale/en/LC_MESSAGES/django.po source_file = mayan/apps/events/locale/en/LC_MESSAGES/django.po
type = PO type = PO
[mayan-edms.file_metadata-3-0]
file_filter = mayan/apps/file_metadata/locale/<lang>/LC_MESSAGES/django.po
source_lang = en
source_file = mayan/apps/file_metadata/locale/en/LC_MESSAGES/django.po
type = PO
[mayan-edms.linking-2-0] [mayan-edms.linking-2-0]
file_filter = mayan/apps/linking/locale/<lang>/LC_MESSAGES/django.po file_filter = mayan/apps/linking/locale/<lang>/LC_MESSAGES/django.po
source_lang = en source_lang = en
@@ -169,12 +145,6 @@ source_lang = en
source_file = mayan/apps/permissions/locale/en/LC_MESSAGES/django.po source_file = mayan/apps/permissions/locale/en/LC_MESSAGES/django.po
type = PO type = PO
[mayan-edms.platform-2-0]
file_filter = mayan/apps/platform/locale/<lang>/LC_MESSAGES/django.po
source_lang = en
source_file = mayan/apps/platform/locale/en/LC_MESSAGES/django.po
type = PO
[mayan-edms.rest_api-2-0] [mayan-edms.rest_api-2-0]
file_filter = mayan/apps/rest_api/locale/<lang>/LC_MESSAGES/django.po file_filter = mayan/apps/rest_api/locale/<lang>/LC_MESSAGES/django.po
source_lang = en source_lang = en

View File

@@ -23,7 +23,7 @@ with deployments, webservers, cloud providers, etc.
Code Code
---- ----
1. Complete and mail, or scan and email the corresponding Contributor Assignment Agreement: [Mayan EDMS Individual Contributor Assignment Agreement](https://gitlab.com/mayan-edms/mayan-edms/blob/master/docs/chapters/caa_individual.rst) or [Mayan EDMS Entity Contributor Assignment Agreement](https://gitlab.com/mayan-edms/mayan-edms/blob/master/docs/chapters/caa_entity.rst). 1. Complete and mail, or scan and email the corresponding Contributor Assignment Agreement: [Mayan EDMS Individual Contributor Assignment Agreement](http://mayan.readthedocs.io/en/latest/topics/caa_individual.rst) or [Mayan EDMS Entity Contributor Assignment Agreement](http://mayan.readthedocs.io/en/latest/topics/caa_entity.rst).
1. Fork [the repository](http://gitlab.com/mayan-edms/mayan-edms). 1. Fork [the repository](http://gitlab.com/mayan-edms/mayan-edms).
1. Choose the version for which you want to develop. The code is divided in the 1. Choose the version for which you want to develop. The code is divided in the
following branches: following branches:
@@ -75,5 +75,5 @@ translation. Language teams that don't see activity for a while are deleted.
Code style Code style
---------- ----------
- Refer to the [Development](https://docs.mayan-edms.com/topics/development.html) - Refer to the [Development](http://mayan.readthedocs.io/en/latest/topics/development.html)
chapter for information and examples of the code style. chapter for information and examples of the code style.

File diff suppressed because it is too large Load Diff

View File

@@ -1,60 +0,0 @@
1.1.1 (2015-05-21)
==================
- Update to Django 1.6.11
- Fix make_dist.sh script
- Add test for issue #163
- Activate tests for the sources app
- Removal of the registration app
- New simplified official project description
- Improvements to the index admin interface
- Removal of installation statistics gathering
- Remove unused folder tag
- Fix usage of ugettext to ugettext_lazy
- Increase size of the lock name field
- New style documentation
1.1 (2015-02-10)
================
- Uses Celery for background tasks
- Removal of the splash screen
- Adds a home view with common function buttons
- Support for sending and receiving documents via email
- Removed custom logging app in favor of django-actvity-stream
- Adds watch folders
- Includes Vagrant file for unified development and testing environments
- Per user locale profile (language and timezone)
- Includes news document workflow app
- Optional and required metadata types
- Improved testings. Automated tests against SQLite, MySQL, PostgreSQL
- Many new REST API endpoints added
- Simplified text messages
- Improved method for custom settings
- Addition of CORS support to the REST API
- Per document language setting instead of per installation language setting
- Metadata validation and parsing support
- Start of code updates towards Python 3 support
- Simplified UI
- Stable PDF previews generation
- More technical documentation
1.0 (2014-08-27)
================
- New home @ https://github.com/mayan-edms/mayan-edms
- Updated to use Django 1.6
- Translation updates
- Custom model properties removal
- Source code improvements
- Removal of included 3rd party modules
- Automatic testing and code coverage check
- Update of required modules and libraries versions
- Database connection leaks fixes
- Support for deletion of detached signatures
- Removal of Fabric based installations script
- Pluggable OCR backends
- OCR improvements
- License change, Mayan EDMS in now licensed under the Apache 2.0 License
- PyPI package, Mayan EDMS in now available on PyPI: https://pypi.python.org/pypi/mayan-edms/
- New REST API

View File

@@ -1,435 +0,0 @@
2.7.3 (2017-09-11)
==================
- Fix task manager queue list view. Thanks to LeVon Smoker for
the report.
- Fix resolved link class URL mangling when the keep_query argument is
used. Thanks to Nick Douma(LordGaav) for the report and diagnostic
information. Fixes source navigation on the document upload wizard.
2.7.2 (2017-09-06)
==================
- Fix new mailer creation view. GitLab issue #431.
Thanks to Robert Schöftner(@robert.schoeftner) for the
report and the solution.
- Consolidate intial document created event and the first
document properties edited events. Preserve the user that
initially creates the document. GitLab issue #433. Thanks
to Jesaja Everling(@jeverling) for the report.
- Sort the list of root cabinets. Thanks to Thomas Plotkowiak
for the request.
- Sort the list of a document's cabinets.
- Display a document's cabinet list in italics. GitLab issue #435.
Thanks to LeVon Smoker for the request.
- Install mock by default to allow easier testing of deployed
instances.
2.7.1 (2017-09-03)
==================
- Support unicode in URL querystring. GitLab issue #423.
Thanks to Gustavo Teixeira (@gsteixei) for the find.
- Import errors during initialization are only ignored
if they are cause by a missing local.py. Thanks to
MacRobb Simpson for the report and solution.
- Make sure the local.py created used unicode for strings
by default. GitLab issue #424. Thanks to Gustavo Teixeira
(@gsteixei) for the find.
2.7 (2017-08-30)
================
- Add workaround for PDF with IndirectObject as the
rotation value. GitHub #261.
- Add ACL list link with icon and use it for the document facet menu.
- Fix mailing app permissions labels.
- Add ACLs link and ACLs permissions to the mailer profile model.
- Improve mailer URL regex.
- Add ordering support to the SourceColumn class. GitLab issue #417.
- Shows the cabinets in the document list. GitLab #417 @corneliusludmann
- Add workaround for pycountry versions without the bibliographical key.
GitHub issue #250.
- Skip UUID migration on Oracle backends. GitHub issue #251.
- Allow changing the output format, DPI of the pdftoppm command, and
the output format of the converter via the CONVERTER_GRAPHICS_BACKEND_CONFIG
setting. GitHub issues #256 #257 GitLab issue #416.
- Add support for workflow triggers.
- Add support for workflow actions.
- Add support for rendering workflows.
- Add support for unbinding sub menus.
- Fix mailing profile test view.
- Disregard the last 3 dots that mark the end of the YAML document.
- Add support for multiple dashboards.
- Add support for removing dashboard widgets.
- Convert document version view to item list view.
- Add support for browsing individual document versions.
- Add support for dropdown menus to the item list view template.
- Add support for preserving the file extension when downloading a document
version. GitLab #415.
- Split OCR app into OCR and parsing.
- Remove Folders app.
- Use the literal 'System' instead of the target name when
the action user in unknown.
- Remove the view to submit all document for OCR.
- When changing document types, don't delete the old metadata that is
also found in the new document type. GitLab issue #421.
- Add tag attach and tag remove events.
- Change the permission needed to attach and remove tags.
- Add HTTP POST workflow state action.
- Add access control grant workflow state action.
- Beta Python 3 support.
2.6.4 (2017-07-26)
==================
- Add missing replacements of reverse to resolve_url.
2.6.3 (2017-07-25)
==================
- Add makefile target to launch a PostgreSQL container.
- Use resolve_url instead of redirect to resolve the post login URL.
- Make the intialsetup and performupgrade management tasks work
with signals to allow customization from 3rd party apps.
- PEP8 cleanups.
- Add tag_ids keyword argument to the Source.handle_upload
model method. GitLab issue #413.
- Add overflow wrapping so wrap long titles in Firefox too.
- Makes Roles searchable. GitLab issue #402.
- Add line numbers to the debug and production loggers.
Add date and time to the production logger.
- Add support for generating setup.py from a template. GitLab
#149 #200.
- Add fade in animation to document images.
2.6.2 (2017-07-19)
==================
- Fix deprecation warning to prepare upgrade to Django 1.11 and 2.0.
- Fix document page zoom.
- Add support to run tests against a MySQL, Postgres or Oracle container.
- Improve tag widget customization by moving the markup to its own template.
- Fix document page widget appearance in the document page list view.
- Make document version order deterministic.
- Allow total page number instrospection of encrypted PDF with non ASCII user properties. GitLab issue #411.
- Oracle database compatibility update in the cabinets app. GitHub #258.
2.6.1 (2017-07-18)
==================
- Fix issue when editing or removing metadata from multiple documents.
2.6 (2017-07-18)
================
- Fix HTML mark up in window title. GitLab #397.
- Add support for emailing documents to a recipient list. GitLab #396.
- Backport metadata widget changes from @Macrobb. GitLab #377.
- Make users and group searchable.
- Add support for logging errors during in production mode.
Add COMMON_PRODUCTION_ERROR_LOG_PATH to control path of log file.
Defaults to mayan/error.log.
- Add support logging request exceptions.
- Add document list item view.
- Sort setting by namespace label and by global name second.
- Sort indexes by label.
- Fix cabinets permission and access control checking.
- The permission to add or remove documents to cabinets now applies to documents too.
- Equalize dashboard widgets heights.
- Switch the order of the DEFAULT_AUTHENTICATION_CLASSES of DRF. GitLab #400.
- Backport document's version list view permission.
- Improve code to unbind menu entries.
- Renamed the document type permission namespace from "Document setup" to "Document types".
- Add support for granting the document type edit, document type delete, and document type view
permissions to individual document type instances.
- Improved tests by testing for accesses.
- Increase the size of the mailing profile label field to 128 characters.
2.5.2 (2017-07-08)
==================
- Improve new document creation signal handling.
Fixes issue with duplicate scanning at upload.
2.5.1 (2017-07-08)
==================
- Update release target due to changes in PyPI.
2.5 (2017-07-07)
================
- Add view to download a document's OCR text. GitLab #215
- Add user configurable mailer. GitLab #286.
- Use Toasts library for screen messages.
- Reduce verbosity of some debug messages.
- Add new lineart transformation.
- Fix SANE source resolution field.
- About and Profile menu reorganization.
- PDF compatibility improvements.
- Office document coversion improvements.
- New metadata type setup UI.
- Duplicated document scan support.
- "Remember me" login support.
- Forgotten password restore via email.
- Document cache disabling.
- Translation improvements.
- Image loading improvements.
- Lower JavaScript memory utilization.
- HTML reponsive layout improvements.
- Make document deletion a background task.
- Unicode handling improvements.
- Python3 compatilibyt improvements.
- New screen messages using Toastr.
2.4 (2017-06-23)
================
- Add Django-mathfilters.
- Improve render of documents with no pages.
- Add SANE scanner document source.
- Added PDF orientation detection. GitLab issue #387.
- Fix repeated permission list API URL. GitLab issue #389.
- Fix role creation API endpoint not returning id. GitLab issue #390.
- Make tags, metadata types and cabinets searchable via the dynamic search API. GitLab issue #344.
- Add support for updating configuration options from environment variables.
- Add purgelocks management command. GitLab issue #221.
- Fix index rebuilding for multi value first levels. GitLab issue #391.
- Truncate views titles via the APPEARANCE_MAXIMUM_TITLE_LENGTH setting. GitLab issue #217.
- Add background task manager app. GitLab issue #132.
- Add link to show a document's OCR errors. GitLab issue #291.
2.3 (2017-06-08)
================
- Allow for bigger indexing expression templates.
- Auto select checkbox when updating metadata values. GitLab issue #371.
- Added support for passing the options allow-other and allow-root to the
FUSE index mirror. GitLab issue #385
- Add support for check for the latest released version of Mayan from the
About menu.
- Support for rebuilding specific indexes. GitLab issue #372.
- Rewrite document indexing code to be faster and use less locking.
- Use a predefined file path for the file lock.
- Catch documents with not document version when displaying their thumbnails.
- Document page navigation fix when using Mayan as a sub URL app.
- Add support for indexing on workflow state changes.
- Add search model list API endpoint.
2.2 (2017-04-26)
================
- Remove the installation app (GitLab #301).
- Add support for document page search
- Remove recent searches feature
- Remove dependency on the django-filetransfer library
- Fix height calculation in resize transformation
- Improve upgrade instructions
- New image caching pipeline
- New drop down menus for the documents, folders and tags app as well as for
the user links.
- New Dashboard view
- Moved licenses to their own module in every app
- Update project to work with Django 1.10.4.
- Tags are alphabetically ordered by label (GitLab #342).
- Stop loading theme fonts from the web (GitLab #343).
- Add support for attaching multiple tags (GitLab #307).
- Integrate the Cabinets app.
2.1.11 (2017-03-14)
===================
- Added a quick rename serializer to the document type API serializer.
- Added per document type, workflow list API view.
- Mayan EDMS was adopted a version 1.1 of the Linux Foundation Developer Certificate of Origin.
- Added the detail url of a permission in the permission serializer.
- Added endpoints for the ACL app API.
- Implemented document workflows transition ACLs. GitLab issue #321.
- Add document comments API endpoints. GitHub issue #249.
- Add support for overriding the Celery class.
- Changed the document upload view in source app to not use the HTTP referer
URL blindly, but instead recompose the URL using known view name. Needed
when integrating Mayan EDMS into other app via using iframes.
- Addes size field to the document version serializer.
- Removed the serializer from the deleted document restore API endpoint.
- Added support for adding or editing document types to smart links via the
API.
2.1.10 (2017-02-13)
===================
- Update Makefile to use twine for releases.
- Add Makefile target to make test releases.
2.1.9 (2017-02-13)
==================
- Update make file to Workaround long standing pypa wheel bug #99
2.1.8 (2017-02-12)
==================
- Fixes in the trashed document API endpoints.
- Improved tags API PUT and PATCH endpoints.
- Bulk document adding when creating and editing tags.
- The version of django-mptt is preserved in case mayan-cabinets is installed.
- Add Django GPG API endpoints for singing keys.
- Add API endpoints for the document states (workflows) app.
- Add API endpoints for the messsage of the day (MOTD) app.
- Add Smart link API endpoints.
- Add writable versions of the Document and Document Type serializers (GitLab issues #348 and #349).
- Close GitLab issue #310 "Metadata's lookup with chinese messages when new document"
2.1.7 (2017-02-01)
==================
- Improved user management API endpoints.
- Improved permissions API endpoints.
- Improvements in the API tests of a few apps.
- Addition Content type list API view to the common app.
- Add API endpoints to the events app.
- Enable the parser and validation fields of the metadata serializer.
2.1.6 (2016-11-23)
==================
- Fix variable name typo in the rotation transformation class.
- Update translations
2.1.5 (2016-11-08)
==================
- Backport resize transformation math operation fix (GitLab #319).
- Update Pillow to 3.1.2 (Security fix).
- Backport zoom transformation performance improvement (GitLab #334).
- Backport trash can navigation link resolution fix (GitLab #331).
- Improve documentation regarding the use of GPG version 1 (GitLab #333).
- Fix ACL create view HTML response type. (GitLab #335).
- Expland staging folder and watch folder explanation.
2.1.4 (2016-10-28)
==================
- Add missing link to the 2.1.3 release notes in the index file.
- Improve TempfileCheckMixin.
- Fix statistics namespace list display view.
- Fix events list display view.
- Update required Django version to 1.8.15.
- Update required python-gnupg version to 0.3.9.
- Improved orphaned temporary files test mixin.
- Re-enable and improve GitLab CI MySQL testing.
- Improved GPG handling.
- New GPG backend system.
- Minor documentation updates.
2.1.3 (2016-06-29)
==================
- Add help message when initialsetup migration phase fails. Relates to GitLab issue #296.
- Start using self.setdout instead of print as per documentation.
- Fix GitLab issue #295, "When editing a user the top bar jumps to the name of the user".
- Normalize handling of temporary file and directory creation.
- Fix GitLab issue #309, "Temp files quickly filling-up my /tmp (1GB tmpfs)".
- Explicitly check for residual temporary files in tests.
- Add missing temporary file cleanup for office documents.
- Fix file descriptor leak in the document signature download test.
2.1.2 (2016-05-20)
==================
- Sort document languages and user profile locale language lists. GitLab issue #292.
- Fix metadata lookup for {{ users }} and {{ group }}. Fixes GitLab #290.
- Add Makefile for common development tasks
2.1.1 (2016-05-17)
==================
- Fix navigation issue that make it impossible to add new sources. GitLab issue #288.
- The Tesseract OCR backend now reports if the requested language file is missing. GitLab issue #289.
- Ensure the automatic default index is created after the default document type.
2.1 (2016-05-14)
================
- Upgrade to use Django 1.8.13. Issue #246.
- Upgrade requirements.
- Remove remaining references to Django's User model. GitLab issue #225
- Rename 'Content' search box to 'OCR'.
- Remove included login required middleware using django-stronghold instead (http://mikegrouchy.com/django-stronghold/).
- Improve generation of success and error messages for class based views.
- Remove ownership concept from folders.
- Replace strip_spaces middleware with the spaceless template tag. GitLab issue #255
- Deselect the update checkbox for optional metadata by default.
- Silence all Django 1.8 model import warnings.
- Implement per document type document creation permission. Closes GitLab issue #232.
- Add icons to the document face menu links.
- Increase icon to text spacing to 3px.
- Make document type delete time period optional.
- Fixed date locale handling in document properties, checkout and user detail views.
- Add new permission: checkout details view.
- Add HTML5 upload widget. Issue #162.
- Add Message of the Day app. Issue #222
- 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.
- Document indexes now have ACL support.
- Remove the document index setup permission.
- Status messages now display the object class on which they operate not just the word "Object".
- More tests added.
- Handle unicode filenames in staging folders.
- Add staging file deletion permission.
- New document_signature_view permission.
- Add support for signing documents.
- Instead of multiple keyservers only one keyserver is now supported.
- Replace document type selection widget with an opened selection list.
- Add mailing documentation chapter.
- Add roadmap documentation chapter.
- API updates.
2.0.2 (2016-02-09)
==================
- Install testing dependencies when installing development dependencies.
- Fix GitLab issue #250 "Empty optional lookup metadata trigger validation error".
- Fix OCR API test.
- Move metadata form value validation to .clean() method.
- Only extract validation error messages from ValidationError exception instances.
- Don't store empty metadata value if the update checkbox is not checked.
- Add 2 second delay to document version tests to workaround MySQL limitation.
- Strip HTML tags from the browser title.
- Remove Docker and Docker Compose files.
2.0.1 (2016-01-22)
==================
- Fix GitLab issue #243, "System allows a user to skip entering values for a required metadata field while uploading a new document"
- Fix GitLab issue #245, "Add multiple metadata not possible"
- Updated Vagrantfile to provision a production box too.
2.0 (2015-12-04)
================
- New source homepage: https://gitlab.com/mayan-edms/mayan-edms
- Update to Django 1.7
- New Bootstrap Frontend UI
- Easier theming and rebranding
- Improved page navigation interface
- Menu reorganization
- Removal of famfam icon set
- Improved document preview generation
- Document submission for OCR changed to POST
- New YAML based settings system
- Removal of auto admin creation as separate app
- Removal of dependencies
- ACL system refactor
- Object access control inheritance
- Removal of anonymous user support
- Metadata validators refactor
- Trash can support
- Retention policies
- Support for sharing indexes as FUSE filesystems
- Clickable preview images titles
- Removal of eval
- Smarter OCR, per page parsing or OCR fallback
- Improve failure tolerance (not all Operational Errors are critical now)
- RGB tags
- Default document type and default document source
- Link unbinding
- Statistics refactor
- Apps merge
- New signals
- Test improvements
- Indexes recalculation after document creation too
- Upgrade command
- OCR data moved to ocr app from documents app
- New internal document creation workflow return a document stub
- Auto console debug logging during development and info during production
- New class based and menu based navigation system
- New class based transformations
- Usage of Font Awesome icons set
- Management command to remove obsolete permissions: `purgepermissions`
- Normalization of 'title' and 'name' fields to 'label'
- Improved API, now at version 1
- Invert page title/project name order in browser title
- Django's class based views pagination
- Reduction of text strings
- Removal of the CombinedSource class
- Removal of default class ACLs
- Removal of the ImageMagick and GraphicsMagick converter backends
- Remove support for applying roles to new users automatically
- Removal of the DOCUMENT_RESTRICTIONS_OVERRIDE permission
- Removed the page_label field

View File

@@ -1,4 +1,4 @@
Copyright 2011 Roberto Rosario Copyright 2011-2015 Roberto Rosario
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,3 @@
include README.md LICENSE HISTORY.rst mayan/LICENSE include README.md LICENSE HISTORY.rst mayan/LICENSE
recursive-include mayan/apps *.txt *.html *.css *.ico *.png *.jpg *.js *.mo *.ttf *.woff *.woff2 *.gif *.eot *.svg *.doc *.pdf *.tiff *.sig *.asc *.gpg *.zip *.tar *.gz *.bz2 *.tmpl recursive-include mayan/apps *.txt *.html *.css *.ico *.png *.jpg *.js *.po *.mo *.ttf *.woff *.woff2 *.gif *.eot *.svg *.doc *.pdf *.tiff *.sig *.asc *.gpg *.zip package.json
global-exclude mayan/settings/local.py *.po global-exclude mayan/settings/local.py mayan/settings/travis/* mayan/media/*
prune mayan/apps/*/static/*/node_modules/*
prune mayan/settings/travis/*
prune mayan/media/*

187
Makefile
View File

@@ -1,20 +1,64 @@
.PHONY: clean-pyc clean-build .PHONY: clean-pyc clean-build
help: help: docker-help
@echo "Usage: make <target>\n" @echo
@awk 'BEGIN {FS = ":.*##"} /^[a-zA-Z_-]+:.*?## / { printf " * %-40s -%s\n", $$1, $$2 }' $(MAKEFILE_LIST)|sort @echo "**** Main makefile ****"
@echo "clean-build - Remove build artifacts."
@echo "clean-pyc - Remove Python artifacts."
@echo "clean - Remove Python and build artifacts."
@echo "generate-setup - Create and updated setup.py"
@echo "check-readme - Checks validity of the README.rst file for PyPI publication."
@echo "check-missing_migrations - Make sure all models have proper migrations."
@echo "test-all - Run all tests."
@echo "test MODULE=<python module name> - Run tests for a single app, module or test class."
@echo "test-with-postgres-all - Run all tests against a Postgres database container."
@echo "test-postgres MODULE=<python module name> - Run tests for a single app, module or test class against a Postgres database container."
@echo "test-with-mysql-all - Run all tests against a MySQL database container."
@echo "test-mysql MODULE=<python module name> - Run tests for a single app, module or test class against a MySQL database container."
@echo "test-with-oracle-all - Run all tests against a Oracle database container."
@echo "test-oracle MODULE=<python module name> - Run tests for a single app, module or test class against a Oracle database container."
@echo "docs-serve - Run the livehtml documentation generator."
@echo "translations-make - Refresh all translation files."
@echo "translations-compile - Compile all translation files."
@echo "translations-push - Upload all translation files to Transifex."
@echo "translations-pull - Download all translation files from Transifex."
@echo "sdist - Build the source distribution package."
@echo "wheel - Build the wheel distribution package."
@echo "release - Package (sdist and wheel) and upload a release."
@echo "test-release - Package (sdist and wheel) and upload to the PyPI test server."
@echo "release-test-via-docker-ubuntu - Package (sdist and wheel) and upload to the PyPI test server using an Ubuntu Docker builder."
@echo "release-via-docker-ubuntu - Package (sdist and wheel) and upload to PyPI using an Ubuntu Docker builder."
@echo "test-sdist-via-docker-ubuntu - Make an sdist packange and test it using an Ubuntu Docker container."
@echo "test-wheel-via-docker-ubuntu - Make a wheel package and test it using an Ubuntu Docker container."
@echo "runserver - Run the development server."
@echo "runserver_plus - Run the Django extension's development server."
@echo "shell_plus - Run the shell_plus command."
@echo "test-with-docker-services-on - Launch and initialize production-like services using Docker (Postgres and Redis)."
@echo "test-with-docker-services-off - Stop and delete the Docker production-like services."
@echo "test-with-docker-frontend - Launch a front end instance that uses the production-like services."
@echo "test-with-docker-worker - Launch a worker instance that uses the production-like services."
@echo "docker-mysql-on - Launch and initialize a MySQL Docker container."
@echo "docker-mysql-off - Stop and delete the MySQL Docker container."
@echo "docker-postgres-on - Launch and initialize a PostgreSQL Docker container."
@echo "docker-postgres-off - Stop and delete the PostgreSQL Docker container."
@echo "safety-check - Run a package safety check."
# Cleaning # Cleaning
clean: ## Remove Python and build artifacts.
clean: clean-build clean-pyc clean: clean-build clean-pyc
clean-build: ## Remove build artifacts. clean-build:
rm -fr build/ rm -fr build/
rm -fr dist/ rm -fr dist/
rm -fr *.egg-info rm -fr *.egg-info
clean-pyc: ## Remove Python artifacts. clean-pyc:
find . -name '*.pyc' -exec rm -f {} + find . -name '*.pyc' -exec rm -f {} +
find . -name '*.pyo' -exec rm -f {} + find . -name '*.pyo' -exec rm -f {} +
find . -name '*~' -exec rm -f {} + find . -name '*~' -exec rm -f {} +
@@ -22,29 +66,25 @@ clean-pyc: ## Remove Python artifacts.
# Testing # Testing
test: clean-pyc test:
test: ## MODULE=<python module name> - Run tests for a single app, module or test class. ./manage.py test $(MODULE) --settings=mayan.settings.testing.development --nomigrations
./manage.py test $(MODULE) --settings=mayan.settings.testing.development --nomigrations $(ARGUMENTS)
test-all: ## Run all tests. test-all:
test-all: clean-pyc ./manage.py test --mayan-apps --settings=mayan.settings.testing.development --nomigrations
./manage.py test --mayan-apps --settings=mayan.settings.testing.development --nomigrations $(ARGUMENTS)
test-launch-postgres: test-launch-postgres:
@docker rm -f test-postgres || true @docker rm -f test-postgres || true
@docker volume rm test-postgres || true @docker volume rm test-postgres || true
docker run -d --name test-postgres -p 5432:5432 -v test-postgres:/var/lib/postgresql/data healthcheck/postgres docker run -d --name test-postgres -p 5432:5432 -v test-postgres:/var/lib/postgresql/data healthcheck/postgres
sudo apt-get install -q libpq-dev sudo apt-get install -qq libpq-dev
pip install psycopg2 pip install psycopg2
while ! docker inspect --format='{{json .State.Health}}' test-postgres|grep 'Status":"healthy"'; do sleep 1; done while ! docker inspect --format='{{json .State.Health}}' test-postgres|grep 'Status":"healthy"'; do sleep 1; done
test-with-postgres: ## MODULE=<python module name> - Run tests for a single app, module or test class against a Postgres database container.
test-with-postgres: test-launch-postgres test-with-postgres: test-launch-postgres
./manage.py test $(MODULE) --settings=mayan.settings.testing.docker.db_postgres --nomigrations ./manage.py test $(MODULE) --settings=mayan.settings.testing.docker.db_postgres --nomigrations
@docker rm -f test-postgres || true @docker rm -f test-postgres || true
@docker volume rm test-postgres || true @docker volume rm test-postgres || true
test-with-postgres-all: ## Run all tests against a Postgres database container.
test-with-postgres-all: test-launch-postgres test-with-postgres-all: test-launch-postgres
./manage.py test --mayan-apps --settings=mayan.settings.testing.docker.db_postgres --nomigrations ./manage.py test --mayan-apps --settings=mayan.settings.testing.docker.db_postgres --nomigrations
@docker rm -f test-postgres || true @docker rm -f test-postgres || true
@@ -54,19 +94,16 @@ test-launch-mysql:
@docker rm -f test-mysql || true @docker rm -f test-mysql || true
@docker volume rm test-mysql || true @docker volume rm test-mysql || true
docker run -d --name test-mysql -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=True -e MYSQL_DATABASE=mayan -v test-mysql:/var/lib/mysql healthcheck/mysql docker run -d --name test-mysql -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=True -e MYSQL_DATABASE=mayan -v test-mysql:/var/lib/mysql healthcheck/mysql
sudo apt-get install -q libmysqlclient-dev mysql-client sudo apt-get install -qq libmysqlclient-dev mysql-client
pip install mysqlclient pip install mysql-python
while ! docker inspect --format='{{json .State.Health}}' test-mysql|grep 'Status":"healthy"'; do sleep 1; done while ! docker inspect --format='{{json .State.Health}}' test-mysql|grep 'Status":"healthy"'; do sleep 1; done
mysql -h 127.0.0.1 -P 3306 -uroot -e "set global character_set_server=utf8mb4;" mysql -h 127.0.0.1 -P 3306 -uroot -e "set global character_set_server=utf8mb4;"
test-with-mysql: ## MODULE=<python module name> - Run tests for a single app, module or test class against a MySQL database container.
test-with-mysql: test-launch-mysql test-with-mysql: test-launch-mysql
./manage.py test $(MODULE) --settings=mayan.settings.testing.docker.db_mysql --nomigrations ./manage.py test $(MODULE) --settings=mayan.settings.testing.docker.db_mysql --nomigrations
@docker rm -f test-mysql || true @docker rm -f test-mysql || true
@docker volume rm test-mysql || true @docker volume rm test-mysql || true
test-with-mysql-all: ## Run all tests against a MySQL database container.
test-with-mysql-all: test-launch-mysql test-with-mysql-all: test-launch-mysql
./manage.py test --mayan-apps --settings=mayan.settings.testing.docker.db_mysql --nomigrations ./manage.py test --mayan-apps --settings=mayan.settings.testing.docker.db_mysql --nomigrations
@docker rm -f test-mysql || true @docker rm -f test-mysql || true
@@ -81,13 +118,11 @@ test-launch-oracle:
while ! nc -z 127.0.0.1 49161; do sleep 1; done while ! nc -z 127.0.0.1 49161; do sleep 1; done
sleep 10 sleep 10
test-with-oracle: ## MODULE=<python module name> - Run tests for a single app, module or test class against a Oracle database container.
test-with-oracle: test-launch-oracle test-with-oracle: test-launch-oracle
./manage.py test $(MODULE) --settings=mayan.settings.testing.docker.db_oracle --nomigrations ./manage.py test $(MODULE) --settings=mayan.settings.testing.docker.db_oracle --nomigrations
@docker rm -f test-oracle || true @docker rm -f test-oracle || true
@docker volume rm test-oracle || true @docker volume rm test-oracle || true
test-with-oracle-all: ## Run all tests against a Oracle database container.
test-with-oracle-all: test-launch-oracle test-with-oracle-all: test-launch-oracle
./manage.py test --mayan-apps --settings=mayan.settings.testing.docker.db_oracle --nomigrations ./manage.py test --mayan-apps --settings=mayan.settings.testing.docker.db_oracle --nomigrations
@docker rm -f test-oracle || true @docker rm -f test-oracle || true
@@ -95,56 +130,48 @@ test-with-oracle-all: test-launch-oracle
# Documentation # Documentation
docs-serve: ## Run the livehtml documentation generator. docs-serve:
cd docs;make livehtml cd docs;make livehtml
docs-spellcheck: ## Spellcheck the documentation.
sphinx-build -b spelling -d docs/_build/ docs docs/_build/spelling
# Translations # Translations
translations-make: ## Refresh all translation files. translations_make:
contrib/scripts/process_messages.py -m contrib/scripts/process_messages.py -m
translations-compile: ## Compile all translation files. translations_compile:
contrib/scripts/process_messages.py -c contrib/scripts/process_messages.py -c
translations-push: ## Upload all translation files to Transifex. translations_push:
tx push -s tx push -s
translations-pull: ## Download all translation files from Transifex. translations_pull:
tx pull -f tx pull -f
generate-setup:
@./generate_setup.py
@echo "Complete."
# Releases # Releases
increase-version: ## Increase the version number of the entire project's files.
@VERSION=`grep "__version__ =" mayan/__init__.py| cut -d\' -f 2|./increase_version.py - $(PART)`; \
BUILD=`echo $$VERSION|awk '{split($$VERSION,a,"."); printf("0x%02d%02d%02d\n", a[1],a[2], a[3])}'`; \
sed -i -e "s/__build__ = 0x[0-9]*/__build__ = $${BUILD}/g" mayan/__init__.py; \
sed -i -e "s/__version__ = '[0-9\.]*'/__version__ = '$${VERSION}'/g" mayan/__init__.py; \
echo $$VERSION > docker/rootfs/version
make generate-setup
python-test-release: ## Package (sdist and wheel) and upload to the PyPI test server. test-release: clean wheel
python-test-release: clean wheel
twine upload dist/* -r testpypi twine upload dist/* -r testpypi
@echo "Test with: pip install -i https://testpypi.python.org/pypi mayan-edms" @echo "Test with: pip install -i https://testpypi.python.org/pypi mayan-edms"
python-release: ## Package (sdist and wheel) and upload a release. release: clean wheel
python-release: clean python-wheel
twine upload dist/* -r pypi twine upload dist/* -r pypi
python-sdist: ## Build the source distribution package. sdist: clean
python-sdist: clean
python setup.py sdist python setup.py sdist
ls -l dist ls -l dist
python-wheel: ## Build the wheel distribution package. wheel: clean sdist
python-wheel: clean python-sdist
pip wheel --no-index --no-deps --wheel-dir dist dist/*.tar.gz pip wheel --no-index --no-deps --wheel-dir dist dist/*.tar.gz
ls -l dist ls -l dist
python-release-test-via-docker-ubuntu: ## Package (sdist and wheel) and upload to the PyPI test server using an Ubuntu Docker builder. release-test-via-docker-ubuntu:
docker run --rm --name mayan_release -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source ubuntu:16.04 /bin/bash -c "\ docker run --rm --name mayan_release -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source ubuntu:16.04 /bin/bash -c "\
echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \ echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \
locale-gen en_US.UTF-8 && \ locale-gen en_US.UTF-8 && \
@@ -157,21 +184,20 @@ python-release-test-via-docker-ubuntu: ## Package (sdist and wheel) and upload t
cp -r /host_home/.pypirc ~/.pypirc && \ cp -r /host_home/.pypirc ~/.pypirc && \
make test-release" make test-release"
python-release-via-docker-ubuntu: ## Package (sdist and wheel) and upload to PyPI using an Ubuntu Docker builder. release-via-docker-ubuntu:
docker run --rm --name mayan_release -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source ubuntu:16.04 /bin/bash -c "\ docker run --rm --name mayan_release -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source ubuntu:16.04 /bin/bash -c "\
apt-get update && \
apt-get -y install locales && \
echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \ echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \
locale-gen en_US.UTF-8 && \ locale-gen en_US.UTF-8 && \
update-locale LANG=en_US.UTF-8 && \ update-locale LANG=en_US.UTF-8 && \
export LC_ALL=en_US.UTF-8 && \ export LC_ALL=en_US.UTF-8 && \
cp -r /host_source/* . && \ cp -r /host_source/* . && \
apt-get update && \
apt-get install make python-pip -y && \ apt-get install make python-pip -y && \
pip install -r requirements/build.txt && \ pip install -r requirements/build.txt && \
cp -r /host_home/.pypirc ~/.pypirc && \ cp -r /host_home/.pypirc ~/.pypirc && \
make release" make release"
test-sdist-via-docker-ubuntu: ## Make an sdist package and test it using an Ubuntu Docker container. test-sdist-via-docker-ubuntu:
docker run --rm --name mayan_sdist_test -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source ubuntu:16.04 /bin/bash -c "\ docker run --rm --name mayan_sdist_test -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source ubuntu:16.04 /bin/bash -c "\
cp -r /host_source/* . && \ cp -r /host_source/* . && \
echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \ echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \
@@ -184,7 +210,7 @@ test-sdist-via-docker-ubuntu: ## Make an sdist package and test it using an Ubun
make sdist-test-suit \ make sdist-test-suit \
" "
test-wheel-via-docker-ubuntu: ## Make a wheel package and test it using an Ubuntu Docker container. test-wheel-via-docker-ubuntu:
docker run --rm --name mayan_wheel_test -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source ubuntu:16.04 /bin/bash -c "\ docker run --rm --name mayan_wheel_test -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source ubuntu:16.04 /bin/bash -c "\
cp -r /host_source/* . && \ cp -r /host_source/* . && \
echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \ echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \
@@ -197,7 +223,7 @@ test-wheel-via-docker-ubuntu: ## Make a wheel package and test it using an Ubunt
make wheel-test-suit \ make wheel-test-suit \
" "
python-sdist-test-suit: sdist sdist-test-suit: sdist
rm -f -R _virtualenv rm -f -R _virtualenv
virtualenv _virtualenv virtualenv _virtualenv
sh -c '\ sh -c '\
@@ -208,7 +234,7 @@ python-sdist-test-suit: sdist
_virtualenv/bin/mayan-edms.py test --mayan-apps \ _virtualenv/bin/mayan-edms.py test --mayan-apps \
' '
python-wheel-test-suit: wheel wheel-test-suit: wheel
rm -f -R _virtualenv rm -f -R _virtualenv
virtualenv _virtualenv virtualenv _virtualenv
sh -c '\ sh -c '\
@@ -219,30 +245,18 @@ python-wheel-test-suit: wheel
_virtualenv/bin/mayan-edms.py test --mayan-apps \ _virtualenv/bin/mayan-edms.py test --mayan-apps \
' '
generate-setup: ## Create and update the setup.py file.
generate-setup: generate-requirements
@./generate_setup.py
@echo "Complete."
generate-requirements: ## Generate all requirements files from the project depedency declarations.
@./manage.py generaterequirements build > requirements/build.txt
@./manage.py generaterequirements development > requirements/development.txt
@./manage.py generaterequirements testing > requirements/testing-base.txt
@./manage.py generaterequirements production --exclude=django > requirements/base.txt
@./manage.py generaterequirements production --only=django > requirements/common.txt
# Dev server # Dev server
runserver: ## Run the development server. runserver:
./manage.py runserver --settings=mayan.settings.development $(ADDRPORT) ./manage.py runserver --settings=mayan.settings.development $(ADDRPORT)
runserver_plus: ## Run the Django extension's development server. runserver_plus:
./manage.py runserver_plus --settings=mayan.settings.development $(ADDRPORT) ./manage.py runserver_plus --settings=mayan.settings.development $(ADDRPORT)
shell_plus: ## Run the shell_plus command. shell_plus:
./manage.py shell_plus --settings=mayan.settings.development ./manage.py shell_plus --settings=mayan.settings.development
test-with-docker-services-on: ## Launch and initialize production-like services using Docker (Postgres and Redis). test-with-docker-services-on:
docker run -d --name redis -p 6379:6379 redis docker run -d --name redis -p 6379:6379 redis
docker run -d --name postgres -p 5432:5432 postgres docker run -d --name postgres -p 5432:5432 postgres
while ! nc -z 127.0.0.1 6379; do sleep 1; done while ! nc -z 127.0.0.1 6379; do sleep 1; done
@@ -250,64 +264,63 @@ test-with-docker-services-on: ## Launch and initialize production-like services
sleep 4 sleep 4
./manage.py initialsetup --settings=mayan.settings.staging.docker ./manage.py initialsetup --settings=mayan.settings.staging.docker
test-with-docker-services-off: ## Stop and delete the Docker production-like services. test-with-docker-services-off:
docker stop postgres redis docker stop postgres redis
docker rm postgres redis docker rm postgres redis
test-with-docker-frontend: ## Launch a front end instance that uses the production-like services. test-with-docker-frontend:
./manage.py runserver --settings=mayan.settings.staging.docker ./manage.py runserver --settings=mayan.settings.staging.docker
test-with-docker-worker: ## Launch a worker instance that uses the production-like services. test-with-docker-worker:
./manage.py celery worker --settings=mayan.settings.staging.docker -B -l INFO -O fair ./manage.py celery worker --settings=mayan.settings.staging.docker -B -l INFO -O fair
docker-mysql-on: ## Launch and initialize a MySQL Docker container. docker-mysql-on:
docker run -d --name mysql -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=True -e MYSQL_DATABASE=mayan_edms mysql docker run -d --name mysql -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=True -e MYSQL_DATABASE=mayan_edms mysql
while ! nc -z 127.0.0.1 3306; do sleep 1; done while ! nc -z 127.0.0.1 3306; do sleep 1; done
docker-mysql-off: ## Stop and delete the MySQL Docker container. docker-mysql-off:
docker stop mysql docker stop mysql
docker rm mysql docker rm mysql
docker-postgres-on: ## Launch and initialize a PostgreSQL Docker container. docker-postgres-on:
docker run -d --name postgres -p 5432:5432 postgres docker run -d --name postgres -p 5432:5432 postgres
while ! nc -z 127.0.0.1 5432; do sleep 1; done while ! nc -z 127.0.0.1 5432; do sleep 1; done
docker-postgres-off: ## Stop and delete the PostgreSQL Docker container. docker-postgres-off:
docker stop postgres docker stop postgres
docker rm postgres docker rm postgres
# Security # Security
safety-check: ## Run a package safety check. safety-check:
safety check safety check
# Other # Other
find-gitignores: ## Find stray .gitignore files. find-gitignores:
@export FIND_GITIGNORES=`find -name '.gitignore'| wc -l`; \ @export FIND_GITIGNORES=`find -name '.gitignore'| wc -l`; \
if [ $${FIND_GITIGNORES} -gt 1 ] ;then echo "More than one .gitignore found."; fi if [ $${FIND_GITIGNORES} -gt 1 ] ;then echo "More than one .gitignore found."; fi
python-build: build:
docker rm -f mayan-edms-build || true && \ docker rm -f mayan-edms-build || true && \
docker run --rm --name mayan-edms-build -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source python:2-slim sh -c "\ docker run --rm --name mayan-edms-build -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source python:2-alpine3.7 /bin/busybox sh -c "\
rm /host_source/dist -R || true && \ rm /host_source/dist -R || true && \
mkdir /host_source/dist || true && \ mkdir /host_source/dist || true && \
export LC_ALL=C.UTF-8 && \ export LC_ALL=en_US.UTF-8 && \
cp -r /host_source/* . && \ cp -r /host_source/* . && \
apt-get update && \ apk update && \
apt-get install -y make && \ apk add make && \
pip install -r requirements/build.txt && \ pip install -r requirements/build.txt && \
cp -r /host_home/.pypirc ~/.pypirc && \
make wheel && \ make wheel && \
cp dist/* /host_source/dist/" cp dist/* /host_source/dist/"
check-readme: ## Checks validity of the README.rst file for PyPI publication. check-readme:
python setup.py check -r -s python setup.py check -r -s
check-missing-migrations: ## Make sure all models have proper migrations. check-missing-migrations:
./manage.py makemigrations --dry-run --noinput --check ./manage.py makemigrations --dry-run --noinput --check
setup-dev-environment: ## Bootstrap a virtualenv by install all dependencies to start developing.
pip install -r requirements.txt -r requirements/development.txt -r requirements/testing-base.txt -r requirements/documentation.txt -r requirements/build.txt
-include docker/Makefile include docker/Makefile

View File

@@ -1,11 +1,11 @@
[![Donation](https://img.shields.io/badge/donation-PayPal-brightgreen)](https://paypal.me/MayanEDMS)
[![pypi][pypi]][pypi-url] [![pypi][pypi]][pypi-url]
[![builds][builds]][builds-url] [![builds][builds]][builds-url]
[![coverage][cover]][cover-url]
![python][python] ![python][python]
![license][license] ![license][license]
[![Docker pulls](https://img.shields.io/docker/pulls/mayanedms/mayanedms.svg?maxAge=3600)](https://hub.docker.com/r/mayanedms/mayanedms/) [![Docker pulls](https://img.shields.io/docker/pulls/mayanedms/mayanedms.svg?maxAge=3600)](https://hub.docker.com/r/mayanedms/mayanedms/)
[![Docker Stars](https://img.shields.io/docker/stars/mayanedms/mayanedms.svg?maxAge=3600)](https://hub.docker.com/r/mayanedms/mayanedms/) [![Docker Stars](https://img.shields.io/docker/stars/mayanedms/mayanedms.svg?maxAge=3600)](https://hub.docker.com/r/mayanedms/mayanedms/)
[![Docker layers](https://images.microbadger.com/badges/image/mayanedms/mayanedms.svg)](https://microbadger.com/images/mayanedms/mayanedms)
[pypi]: http://img.shields.io/pypi/v/mayan-edms.svg [pypi]: http://img.shields.io/pypi/v/mayan-edms.svg
[pypi-url]: http://badge.fury.io/py/mayan-edms [pypi-url]: http://badge.fury.io/py/mayan-edms
@@ -43,20 +43,6 @@
</div> </div>
<h2 align="center">Book</h2>
The pre-release version of the book "Exploring Mayan EDMS" available now at a discounted price!
<p align="center">
<a href="https://sellfy.com/p/um2fkx/">
<img width="400" src="https://d12swbtw719y4s.cloudfront.net/images/v6RpxW40/aP0qKLjkPiAuXZhYuB45/wDAULAzFyx.jpeg?w=548">
</a>
</p>
Limited quantities. Buyers of the pre-release will get the full version for free when it is ready.
The link is https://sellfy.com/p/um2fkx/
<h2 align="center">Installation</h2> <h2 align="center">Installation</h2>
The easiest way to use Mayan EDMS is by using the official The easiest way to use Mayan EDMS is by using the official
@@ -64,7 +50,7 @@ The easiest way to use Mayan EDMS is by using the official
and working before attempting to install Mayan EDMS. and working before attempting to install Mayan EDMS.
For the complete set of installation instructions visit the Mayan EDMS documentation For the complete set of installation instructions visit the Mayan EDMS documentation
at: https://docs.mayan-edms.com/topics/installation.html at: http://mayan.readthedocs.io/en/latest/topics/installation.html
<h2 align="center">Hardware requirements</h2> <h2 align="center">Hardware requirements</h2>
@@ -75,12 +61,14 @@ at: https://docs.mayan-edms.com/topics/installation.html
- [Homepage](http://www.mayan-edms.com) - [Homepage](http://www.mayan-edms.com)
- [Documentation](https://docs.mayan-edms.com) - [Videos](https://www.youtube.com/channel/UCJOOXHP1MJ9lVA7d8ZTlHPw)
- [Wiki](https://wiki.mayan-edms.com/) - [Documentation](http://mayan.readthedocs.io/en/stable/)
- [Paid support](http://www.mayan-edms.com/providers/)
- [Roadmap](https://gitlab.com/mayan-edms/mayan-edms/wikis/roadmap)
- [Contributing](https://gitlab.com/mayan-edms/mayan-edms/blob/master/CONTRIBUTING.md) - [Contributing](https://gitlab.com/mayan-edms/mayan-edms/blob/master/CONTRIBUTING.md)
- [Forum](https://forum.mayan-edms.com/) - [Community forum](https://groups.google.com/forum/#!forum/mayan-edms)
- [Community forum archive](http://mayan-edms.1003.x6.nabble.com/)
- [Source code, issues, bugs](https://gitlab.com/mayan-edms/mayan-edms) - [Source code, issues, bugs](https://gitlab.com/mayan-edms/mayan-edms)
- [Plug-ins, other related projects](https://gitlab.com/mayan-edms/) - [Plug-ins, other related projects](https://gitlab.com/mayan-edms/)
- [Translations](https://www.transifex.com/rosarior/mayan-edms/) - [Translations](https://www.transifex.com/rosarior/mayan-edms/)
- [Videos](https://www.youtube.com/channel/UCJOOXHP1MJ9lVA7d8ZTlHPw)

View File

@@ -1,4 +1,4 @@
|donation| |pypi| |builds| |coverage| |python| |license| |docker_pulls| |docker_stars| |docker_layers| |pypi| |builds| |coverage| |python| |license| |docker_pulls| |docker_stars| |docker_layers|
.. image:: https://gitlab.com/mayan-edms/mayan-edms/raw/master/docs/_static/mayan_logo.png .. image:: https://gitlab.com/mayan-edms/mayan-edms/raw/master/docs/_static/mayan_logo.png
@@ -21,20 +21,10 @@ Make sure Docker is properly installed and working before attempting to install
Mayan EDMS. Mayan EDMS.
For the complete set of installation instructions visit the Mayan EDMS documentation For the complete set of installation instructions visit the Mayan EDMS documentation
at: https://docs.mayan-edms.com/topics/installation.html at: http://mayan.readthedocs.io/en/latest/topics/installation.html
.. _Docker: https://www.docker.com/ .. _Docker: https://www.docker.com/
The pre-release version of the book "Exploring Mayan EDMS" available now at a discounted price!
.. image:: https://camo.githubusercontent.com/89d2fe787507c9247aa7bb406e2682b53eb7a5f9/68747470733a2f2f64313273776274773731397934732e636c6f756466726f6e742e6e65742f696d616765732f76365270785734302f615030714b4c6a6b50694175585a6859754234352f774441554c417a4679782e6a7065673f773d353438
:align: center
:width: 300
:target: https://sellfy.com/p/um2fkx/
Limited quantities. Buyers of the pre-release will get the full version for free when it is ready.
Click the image or visit: https://sellfy.com/p/um2fkx/
Hardware requirements Hardware requirements
- 2 Gigabytes of RAM (1 Gigabyte if OCR is turned off). - 2 Gigabytes of RAM (1 Gigabyte if OCR is turned off).
@@ -44,18 +34,18 @@ Hardware requirements
Important links Important links
- `Homepage <http://www.mayan-edms.com>`__ - `Homepage <http://www.mayan-edms.com>`__
- `Documentation <https://docs.mayan-edms.com>`__ - `Videos <https://www.youtube.com/channel/UCJOOXHP1MJ9lVA7d8ZTlHPw>`__
- `Wiki <https://wiki.mayan-edms.com>`__ - `Documentation <http://mayan.readthedocs.io/en/stable/>`__
- `Paid support <http://www.mayan-edms.com/providers/>`__
- `Roadmap <https://gitlab.com/mayan-edms/mayan-edms/wikis/roadmap>`__
- `Contributing <https://gitlab.com/mayan-edms/mayan-edms/blob/master/CONTRIBUTING.md>`__ - `Contributing <https://gitlab.com/mayan-edms/mayan-edms/blob/master/CONTRIBUTING.md>`__
- `Forum <https://forum.mayan-edms.com>`__ - `Community forum <https://groups.google.com/forum/#!forum/mayan-edms>`__
- `Community forum archive <http://mayan-edms.1003.x6.nabble.com/>`__
- `Source code, issues, bugs <https://gitlab.com/mayan-edms/mayan-edms>`__ - `Source code, issues, bugs <https://gitlab.com/mayan-edms/mayan-edms>`__
- `Plug-ins, other related projects <https://gitlab.com/mayan-edms/>`__ - `Plug-ins, other related projects <https://gitlab.com/mayan-edms/>`__
- `Translations <https://www.transifex.com/rosarior/mayan-edms/>`__ - `Translations <https://www.transifex.com/rosarior/mayan-edms/>`__
- `Videos <https://www.youtube.com/channel/UCJOOXHP1MJ9lVA7d8ZTlHPw>`__
.. |donation| image:: https://img.shields.io/badge/donation-PayPal-brightgreen
:target: https://paypal.me/MayanEDMS
.. |pypi| image:: http://img.shields.io/pypi/v/mayan-edms.svg .. |pypi| image:: http://img.shields.io/pypi/v/mayan-edms.svg
:target: http://badge.fury.io/py/mayan-edms :target: http://badge.fury.io/py/mayan-edms
.. |builds| image:: https://gitlab.com/mayan-edms/mayan-edms/badges/master/build.svg .. |builds| image:: https://gitlab.com/mayan-edms/mayan-edms/badges/master/build.svg

View File

@@ -1,14 +0,0 @@
from __future__ import unicode_literals
__title__ = 'Mayan EDMS'
__version__ = '{{ version }}'
__build__ = {{ build }}
__build_string__ = '{{ build_string }}'
__django_version__ = '1.11'
__author__ = 'Roberto Rosario'
__author_email__ = 'roberto.rosario@mayan-edms.com'
__description__ = 'Free Open Source Electronic Document Management System'
__license__ = 'Apache 2.0'
__copyright_short__ = '2011 Roberto Rosario'
__copyright__ = '{} {}'.format('Copyright', __copyright_short__)
__website__ = 'https://www.mayan-edms.com'

View File

@@ -1,10 +1,8 @@
#!/bin/sh #!/bin/sh
export DEBIAN_FRONTEND=noninteractive
apt-get update apt-get update
apt-get install -y --no-install-recommends tesseract-ocr-deu apt-get install -y --no-install-recommends tesseract-ocr-deu
$MAYAN_PIP_BIN install -r ${MAYAN_INSTALL_DIR}/requirements-testing.txt pip install -r $DOCKER_ROOT/requirements-testing.txt
$MAYAN_BIN test --mayan-apps --settings=mayan.settings.testing mayan-edms.py test --mayan-apps --settings=mayan.settings.testing

File diff suppressed because it is too large Load Diff

View File

@@ -1,131 +0,0 @@
#!/bin/sh
set -e
# This script is meant for quick & easy install via:
# $ curl -fsSL get.mayan-edms.com -o get-mayan-edms.sh
# $ sh get-mayan-edms.sh
#
# NOTE: Make sure to verify the contents of the script
# you downloaded matches the contents of docker.sh
# located at https://gitlab.com/mayan-edms/mayan-edms/blob/master/contrib/scripts/install/docker.sh
# before executing.
: ${VERBOSE:=true}
: ${INSTALL_DOCKER:=false}
: ${DELETE_VOLUMES:=false}
: ${DATABASE_USER:=mayan}
: ${DATABASE_NAME:=mayan}
: ${DATABASE_PASSWORD:=mayanuserpass}
: ${DOCKER_POSTGRES_IMAGE:=postgres:9.6}
: ${DOCKER_POSTGRES_CONTAINER:=mayan-edms-postgres}
: ${DOCKER_POSTGRES_VOLUME:=/docker-volumes/mayan-edms/postgres}
: ${DOCKER_POSTGRES_PORT:=5432}
: ${DOCKER_MAYAN_IMAGE:=mayanedms/mayanedms:latest}
: ${DOCKER_MAYAN_CONTAINER:=mayan-edms}
: ${DOCKER_MAYAN_VOLUME:=/docker-volumes/mayan-edms/media}
cat << EOF
███╗ ███╗ █████╗ ██╗ ██╗ █████╗ ███╗ ██╗
████╗ ████║██╔══██╗╚██╗ ██╔╝██╔══██╗████╗ ██║
██╔████╔██║███████║ ╚████╔╝ ███████║██╔██╗ ██║
██║╚██╔╝██║██╔══██║ ╚██╔╝ ██╔══██║██║╚██╗██║
██║ ╚═╝ ██║██║ ██║ ██║ ██║ ██║██║ ╚████║
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═══╝
Docker deploy script
NOTE: Make sure to verify the contents of this script
matches the contents of docker.sh located at https://gitlab.com/mayan-edms/mayan-edms/blob/master/contrib/scripts/install/docker.sh before executing.
EOF
if [ "$VERBOSE" = true ]; then
echo "Variable values to be used:"
echo "---------------------------"
echo "INSTALL_DOCKER: $INSTALL_DOCKER"
echo "DELETE_VOLUMES: $DELETE_VOLUMES"
echo "DATABASE_USER: $DATABASE_USER"
echo "DATABASE_NAME: $DATABASE_NAME"
echo "DATABASE_PASSWORD: $DATABASE_PASSWORD"
echo "DOCKER_POSTGRES_IMAGE: $DOCKER_POSTGRES_IMAGE"
echo "DOCKER_POSTGRES_CONTAINER: $DOCKER_POSTGRES_CONTAINER"
echo "DOCKER_POSTGRES_VOLUME: $DOCKER_POSTGRES_VOLUME"
echo "DOCKER_POSTGRES_PORT: $DOCKER_POSTGRES_PORT"
echo "DOCKER_MAYAN_IMAGE: $DOCKER_MAYAN_IMAGE"
echo "DOCKER_MAYAN_CONTAINER: $DOCKER_MAYAN_CONTAINER"
echo "DOCKER_MAYAN_VOLUME: $DOCKER_MAYAN_VOLUME"
echo "\nStarting in 10 seconds."
sleep 10
fi
if [ "$INSTALL_DOCKER" = true ]; then
echo -n "* Installing Docker..."
curl -fsSL get.docker.com -o get-docker.sh >/dev/null
sh get-docker.sh >/dev/null 2>&1
rm get-docker.sh
echo "Done"
fi
if [ -z `which docker` ]; then
echo "Docker is not installed. Rerun this script with the variable INSTALL_DOCKER set to true."
exit 1
fi
echo -n "* Removing existing Mayan EDMS and PostgreSQL containers (no data will be lost)..."
true || docker stop $DOCKER_MAYAN_CONTAINER >/dev/null 2>&1
true || docker rm $DOCKER_MAYAN_CONTAINER >/dev/null 2>&1
true || docker stop $DOCKER_POSTGRES_CONTAINER >/dev/null 2>&1
true || docker rm $DOCKER_POSTGRES_CONTAINER >/dev/null 2>&1
echo "Done"
if [ "$DELETE_VOLUMES" = true ]; then
echo -n "* Deleting Docker volumes in 5 seconds (warning: this delete all document data)..."
sleep 5
true || rm DOCKER_MAYAN_VOLUME -Rf
true || rm DOCKER_POSTGRES_VOLUME -Rf
echo "Done"
fi
echo -n "* Pulling (downloading) the Mayan EDMS Docker image..."
docker pull $DOCKER_MAYAN_IMAGE >/dev/null
echo "Done"
echo -n "* Pulling (downloading) the PostgreSQL Docker image..."
docker pull $DOCKER_POSTGRES_IMAGE > /dev/null
echo "Done"
echo -n "* Deploying the PostgreSQL container..."
docker run -d \
--name $DOCKER_POSTGRES_CONTAINER \
--restart=always \
-p $DOCKER_POSTGRES_PORT:5432 \
-e POSTGRES_USER=$DATABASE_USER \
-e POSTGRES_DB=$DATABASE_NAME \
-e POSTGRES_PASSWORD=$DATABASE_PASSWORD \
-v $DOCKER_POSTGRES_VOLUME:/var/lib/postgresql/data \
$DOCKER_POSTGRES_IMAGE >/dev/null
echo "Done"
echo -n "* Waiting for the PostgreSQL container to be ready (10 seconds)..."
sleep 10
echo "Done"
echo -n "* Deploying Mayan EDMS container..."
docker run -d \
--name $DOCKER_MAYAN_CONTAINER \
--restart=always \
-p 80:8000 \
-e MAYAN_DATABASE_ENGINE=django.db.backends.postgresql \
-e MAYAN_DATABASE_HOST=172.17.0.1 \
-e MAYAN_DATABASE_NAME=$DATABASE_NAME \
-e MAYAN_DATABASE_PASSWORD=$DATABASE_PASSWORD \
-e MAYAN_DATABASE_USER=$DATABASE_USER \
-e MAYAN_DATABASE_PORT=$DOCKER_POSTGRES_PORT \
-e MAYAN_DATABASE_CONN_MAX_AGE=0 \
-v $DOCKER_MAYAN_VOLUME:/var/lib/mayan \
$DOCKER_MAYAN_IMAGE >/dev/null
echo "Done"
echo -n "* Waiting for the Mayan EDMS container to be ready (might take a few minutes)..."
while ! curl --output /dev/null --silent --head --fail http://localhost:80; do sleep 1 && echo -n .; done;
echo "Done"

View File

@@ -161,7 +161,7 @@ priority = 998
EOF EOF
echo -e "\n -> Collecting the static files \n" echo -e "\n -> Collecting the static files \n"
mayan-edms.py preparestatic --noinput mayan-edms.py collectstatic --noinput
echo -e "\n -> Making the installation directory readable and writable by the webserver user \n" echo -e "\n -> Making the installation directory readable and writable by the webserver user \n"
chown www-data:www-data ${INSTALLATION_DIRECTORY} -R chown www-data:www-data ${INSTALLATION_DIRECTORY} -R

View File

@@ -1,7 +1,4 @@
#!/usr/bin/env python #!/usr/bin/env python
from __future__ import print_function
import os import os
import optparse import optparse
@@ -9,21 +6,19 @@ import sh
APP_LIST = ( APP_LIST = (
'acls', 'appearance', 'authentication', 'autoadmin', 'cabinets', 'acls', 'appearance', 'authentication', 'cabinets', 'checkouts', 'common',
'checkouts', 'common', 'converter', 'dashboards', 'dependencies', 'converter', 'django_gpg', 'document_comments', 'document_indexing',
'django_gpg', 'document_comments', 'document_indexing', 'document_parsing', 'document_signatures', 'document_states', 'documents',
'document_parsing', 'document_signatures', 'document_states', 'dynamic_search', 'events', 'linking', 'lock_manager', 'mayan_statistics',
'documents', 'dynamic_search', 'events', 'file_metadata', 'linking', 'mailer', 'metadata', 'mirroring', 'motd', 'navigation', 'ocr', 'permissions',
'lock_manager', 'mayan_statistics', 'mailer', 'metadata', 'mirroring', 'rest_api', 'smart_settings', 'sources', 'storage', 'tags', 'task_manager',
'motd', 'navigation', 'ocr', 'permissions', 'platform', 'rest_api',
'smart_settings', 'sources', 'storage', 'tags', 'task_manager',
'user_management' 'user_management'
) )
LANGUAGE_LIST = ( LANGUAGE_LIST = (
'ar', 'bg', 'bs_BA', 'cs', 'da_DK', 'de_DE', 'en', 'es', 'el', 'fa', 'fr', 'ar', 'bg', 'bs_BA', 'da', 'de_DE', 'en', 'es', 'fa', 'fr', 'hu', 'id',
'hu', 'id', 'it', 'lv', 'nl_NL', 'pl', 'pt', 'pt_BR', 'ro_RO', 'ru', 'sl_SI', 'it', 'nl_NL', 'pl', 'pt', 'pt_BR', 'ro_RO', 'ru', 'sl_SI', 'tr_TR',
'tr_TR', 'vi_VN', 'zh', 'vi_VN', 'zh_CN',
) )
makemessages = sh.Command('django-admin.py') makemessages = sh.Command('django-admin.py')
@@ -43,29 +38,29 @@ BASE_DIR = os.path.abspath(
def process(command, app_list, language_list): def process(command, app_list, language_list):
if command == makemessages: if command == makemessages:
print('Making messages') print 'Making messages'
elif command == compilemessages: elif command == compilemessages:
print('Compiling messages') print 'Compiling messages'
elif command == pull_translations: elif command == pull_translations:
print('Pulling translation files') print 'Pulling translation files'
elif command == push_translations: elif command == push_translations:
print('Pushing translation files') print 'Pushing translation files'
if command in [compilemessages, makemessages]: if command in [compilemessages, makemessages]:
for app in app_list: for app in app_list:
print('Processing app: %s...' % app) print 'Processing app: %s...' % app
app_path = os.path.join(BASE_DIR, 'apps', app) app_path = os.path.join(BASE_DIR, 'apps', app)
os.chdir(app_path) os.chdir(app_path)
for lang in language_list: for lang in language_list:
print('Doing language: %s' % lang) print 'Doing language: %s' % lang
command(locale=lang) command(locale=lang)
elif command == pull_translations: elif command == pull_translations:
for lang in language_list: for lang in language_list:
print('Doing language: %s' % lang) print 'Doing language: %s' % lang
command('-f', '-l', lang) command('-f', '-l', lang)
elif command == push_translations: elif command == push_translations:
for lang in language_list: for lang in language_list:
print('Doing language: %s' % lang) print 'Doing language: %s' % lang
command('-s', '-l', lang) command('-s', '-l', lang)

View File

@@ -1,7 +1,5 @@
#!/usr/bin/env python #!/usr/bin/env python
from __future__ import print_function
import os import os
BASE_PATH = 'mayan/apps' BASE_PATH = 'mayan/apps'
@@ -9,7 +7,7 @@ BASE_PATH = 'mayan/apps'
def print_views_summary(module_filename): def print_views_summary(module_filename):
with open(module_filename) as file_object: with open(module_filename) as file_object:
print(' module:', module_filename) print ' module:', module_filename
count_class_based_views = 0 count_class_based_views = 0
count_function_based_views = 0 count_function_based_views = 0
for line in file_object: for line in file_object:
@@ -19,20 +17,20 @@ def print_views_summary(module_filename):
if line.startswith('def') and 'request' in line: if line.startswith('def') and 'request' in line:
count_function_based_views += 1 count_function_based_views += 1
print(' class based views: {}'.format(count_class_based_views)) print ' class based views: {}'.format(count_class_based_views)
print(' function based views: {}'.format(count_function_based_views)) print ' function based views: {}'.format(count_function_based_views)
return count_class_based_views, count_function_based_views return count_class_based_views, count_function_based_views
def print_tests_summary(module_filename): def print_tests_summary(module_filename):
with open(module_filename) as file_object: with open(module_filename) as file_object:
print(' module:', module_filename) print ' module:', module_filename
count_tests = 0 count_tests = 0
for line in file_object: for line in file_object:
if line.startswith(' def test'): if line.startswith(' def test'):
count_tests += 1 count_tests += 1
print(' tests: {}'.format(count_tests)) print ' tests: {}'.format(count_tests)
return count_tests return count_tests
@@ -49,10 +47,10 @@ if __name__ == '__main__':
for app_name in sorted(os.listdir(BASE_PATH)): for app_name in sorted(os.listdir(BASE_PATH)):
if app_name != '__init__.py': if app_name != '__init__.py':
count_totals['Apps'] += 1 count_totals['Apps'] += 1
print('\n\nApp name: {}'.format(app_name)) print '\n\nApp name: {}'.format(app_name)
app_path = os.path.join(BASE_PATH, app_name) app_path = os.path.join(BASE_PATH, app_name)
print('\n Views') print '\n Views'
try: try:
module_filename = os.path.join(app_path, 'views.py') module_filename = os.path.join(app_path, 'views.py')
count_class_based_views, count_function_based_views = print_views_summary(module_filename=module_filename) count_class_based_views, count_function_based_views = print_views_summary(module_filename=module_filename)
@@ -71,9 +69,9 @@ if __name__ == '__main__':
count_totals['Function based views'] += count_function_based_views count_totals['Function based views'] += count_function_based_views
except OSError: except OSError:
# No views directory, skip app # No views directory, skip app
print(' No views') print ' No views'
print('\n API Views') print '\n API Views'
try: try:
module_filename = os.path.join(app_path, 'api_views.py') module_filename = os.path.join(app_path, 'api_views.py')
count_class_based_views, count_function_based_views = print_views_summary(module_filename=module_filename) count_class_based_views, count_function_based_views = print_views_summary(module_filename=module_filename)
@@ -82,9 +80,9 @@ if __name__ == '__main__':
except IOError: except IOError:
# No API views directory, skip app # No API views directory, skip app
print(' No API views') print ' No API views'
print('\n Tests') print '\n Tests'
module_path = os.path.join(app_path, 'tests') module_path = os.path.join(app_path, 'tests')
try: try:
for module_name in os.listdir(module_path): for module_name in os.listdir(module_path):
@@ -96,10 +94,10 @@ if __name__ == '__main__':
except OSError: except OSError:
# No tests directory, skip app # No tests directory, skip app
print(' No tests') print ' No tests'
print('-' * 10) print '-' * 10
print('Totals:') print 'Totals:'
for key, value in count_totals.items(): for key, value in count_totals.items():
print(' {}: {}'.format(key, value)) print ' {}: {}'.format(key, value)

View File

@@ -1,158 +1,149 @@
# vim:set ft=dockerfile: # vim:set ft=dockerfile:
#### ####################
# BASE_IMAGE - Bare bones image with the base packages needed to run Mayan EDMS # Base image start #
#### ####################
FROM debian:9.8-slim as BASE_IMAGE FROM debian:9.4-slim as BASE_IMAGE
LABEL maintainer="Roberto Rosario roberto.rosario@mayan-edms.com" MAINTAINER Roberto Rosario "roberto.rosario@mayan-edms.com"
ENV PYTHONUNBUFFERED=1 \ ENV DEBIAN_FRONTEND noninteractive
LC_ALL=C.UTF-8 \ ENV PYTHONUNBUFFERED 1
PROJECT_INSTALL_DIR=/opt/mayan-edms ENV LC_ALL C.UTF-8
ENV PROJECT_INSTALL_DIR=/usr/local/lib/python2.7/dist-packages/mayan
# Debian package caching
ARG APT_PROXY ARG APT_PROXY
RUN set -x \ # Package caching
&& if [ "${APT_PROXY}" ]; \ RUN if [ "${APT_PROXY}" ]; then echo "Acquire::http { Proxy \"http://${APT_PROXY}\"; };" > /etc/apt/apt.conf.d/01proxy; fi
then echo "Acquire::http { Proxy \"http://${APT_PROXY}\"; };" > /etc/apt/apt.conf.d/01proxy \
; fi \
# Install base OS packages to run Mayan EDMS
&& DEBIAN_FRONTEND=noninteractive \
apt-get update \
&& apt-get install -y --no-install-recommends \
exiftool \
fonts-arphic-uming \
fonts-arphic-ukai \
ghostscript \
gpgv \
gnupg1 \
graphviz \
libfuse2 \
libmagic1 \
libmariadbclient18 \
libreoffice \
libpq5 \
poppler-utils \
redis-server \
sane-utils \
sudo \
supervisor \
tesseract-ocr \
# Remove make and build dependencies
&& apt-get remove make libproxy-tools libreoffice-avmedia-backend-vlc libvlc-bin libvlc5 libvlccore9 adwaita-icon-theme gsettings-desktop-schemas libgstreamer-plugins-base1.0-0 -y \
&& apt-get autoremove -y --purge \
# Add mayan user
&& adduser mayan --disabled-password --disabled-login --no-create-home --gecos "" \
# Pillow can't find zlib or libjpeg on aarch64 (ODROID C2)
&& if [ "$(uname -m)" = "aarch64" ]; then \
ln -s /usr/lib/aarch64-linux-gnu/libz.so /usr/lib/ \
&& ln -s /usr/lib/aarch64-linux-gnu/libjpeg.so /usr/lib/ \
; fi \
# Pillow can't find zlib or libjpeg on armv7l (ODROID HC1)
&& if [ "$(uname -m)" = "armv7l" ]; then \
ln -s /usr/lib/arm-linux-gnueabihf/libz.so /usr/lib/ \
&& ln -s /usr/lib/arm-linux-gnueabihf/libjpeg.so /usr/lib/ \
; fi \
# Discard data when Redis runs out of memory
&& echo "maxmemory-policy allkeys-lru" >> /etc/redis/redis.conf \
# Disable saving the Redis database
echo "save \"\"" >> /etc/redis/redis.conf \
# Only provision 1 database
&& echo "databases 1" >> /etc/redis/redis.conf
#### # Install base Ubuntu libraries
# BUILDER_IMAGE - This image buildS the Python package and is discarded afterwards RUN apt-get update && \
####
# Reuse image
FROM BASE_IMAGE as BUILDER_IMAGE
WORKDIR /src
# Copy the source files needed to build the Python package
COPY --chown=mayan:mayan requirements /src/requirements
COPY --chown=mayan:mayan \
HISTORY.rst \
LICENSE \
MANIFEST.in \
README.md \
README.rst \
setup.py \
/src/
COPY --chown=mayan:mayan mayan /src/mayan
# Install development packages needed to build the Python packages
RUN DEBIAN_FRONTEND=noninteractive \
apt-get install -y --no-install-recommends \ apt-get install -y --no-install-recommends \
default-libmysqlclient-dev \ g++ \
libffi-dev \ gcc \
libjpeg-dev \ ghostscript \
libpng-dev \ gpgv \
libpq-dev \ gnupg1 \
libtiff-dev \ graphviz \
zlib1g-dev \ libffi-dev \
libssl-dev \ libjpeg-dev \
g++ \ libmagic1 \
gcc \ default-libmysqlclient-dev \
python-dev \ libpng-dev \
python-virtualenv \ libpq-dev \
&& mkdir -p "${PROJECT_INSTALL_DIR}" \ libreoffice \
&& chown -R mayan:mayan "${PROJECT_INSTALL_DIR}" \ libtiff-dev \
&& chown -R mayan:mayan /src poppler-utils \
python-dev \
python-pip \
python-setuptools \
python-wheel \
redis-server \
sane-utils \
supervisor \
tesseract-ocr \
zlib1g-dev \
&& \
apt-get clean autoclean && \
apt-get autoremove --purge -y && \
rm -rf /var/lib/apt/lists/* && \
rm -f /var/cache/apt/archives/*.deb
USER mayan # Install apt-get-install
RUN python -m virtualenv "${PROJECT_INSTALL_DIR}" \ ADD https://raw.githubusercontent.com/guilhem/apt-get-install/master/apt-get-install /usr/bin/
&& . "${PROJECT_INSTALL_DIR}/bin/activate" \ RUN chmod +x /usr/bin/apt-get-install
&& pip install --no-cache-dir --no-use-pep517 \
librabbitmq==1.6.1 \
mysql-python==1.2.5 \
psycopg2==2.7.3.2 \
redis==2.10.6 \
# psutil is needed by ARM builds otherwise gevent and gunicorn fail to start
&& UNAME=`uname -m` && if [ "${UNAME#*arm}" != $UNAME ]; then \
pip install --no-cache-dir --no-use-pep517 \
psutil==5.6.2 \
; fi \
# Install the Python packages needed to build Mayan EDMS
&& pip install --no-cache-dir --no-use-pep517 -r /src/requirements/build.txt \
# Build Mayan EDMS
&& python setup.py sdist \
# Install the built Mayan EDMS package
&& pip install --no-cache-dir --no-use-pep517 dist/mayan* \
# Install the static content
&& mayan-edms.py installjavascript \
&& MAYAN_STATIC_ROOT=${PROJECT_INSTALL_DIR}/static mayan-edms.py preparestatic --link --noinput
COPY --chown=mayan:mayan requirements/testing-base.txt "${PROJECT_INSTALL_DIR}" # Install Python clients for PostgreSQL, REDIS, librabbitmq
RUN pip install psycopg2==2.7.3.2 redis==2.10.6 mysql-python==1.2.5 librabbitmq==1.6.1
#### RUN adduser mayan --disabled-password --disabled-login --no-create-home --gecos ""
# Final image - BASE_IMAGE + Mayan install directory from the builder image
#### # Pillow can't find zlib or libjpeg on aarch64 (ODROID C2)
RUN if [ "$(uname -m)" = "aarch64" ]; then \
ln -s /usr/lib/aarch64-linux-gnu/libz.so /usr/lib/ && \
ln -s /usr/lib/aarch64-linux-gnu/libjpeg.so /usr/lib/ \
; fi
# Pillow can't find zlib or libjpeg on armv7l (ODROID HC1)
RUN if [ "$(uname -m)" = "armv7l" ]; then \
apt-get install libssl-dev -y && \
ln -s /usr/lib/arm-linux-gnueabihf/libz.so /usr/lib/ && \
ln -s /usr/lib/arm-linux-gnueabihf/libjpeg.so /usr/lib/ \
; fi
#####################
# Build image start #
#####################
FROM debian:9.4-slim as BUILDER_IMAGE
ARG APT_PROXY
# Package caching
RUN if [ "${APT_PROXY}" ]; then echo "Acquire::http { Proxy \"http://${APT_PROXY}\"; };" > /etc/apt/apt.conf.d/01proxy; fi
WORKDIR /code
COPY . /code
RUN apt-get update && apt-get install make python-dev python-pip -y
RUN pip install -r requirements/build.txt
ENV LC_ALL C.UTF-8
RUN touch docker/Makefile
RUN make wheel
RUN chmod 777 dist -R
#####################
# Final image start #
#####################
FROM BASE_IMAGE FROM BASE_IMAGE
COPY --from=BUILDER_IMAGE --chown=mayan:mayan "${PROJECT_INSTALL_DIR}/" "${PROJECT_INSTALL_DIR}/" WORKDIR /root/
USER root COPY --from=BUILDER_IMAGE /code/dist/*.whl .
COPY docker/rootfs / COPY --from=BUILDER_IMAGE /code/contrib/scripts/docker/run-tests.sh .
COPY --from=BUILDER_IMAGE /code/requirements/testing-base.txt requirements-testing.txt
# Install build Mayan EDMS
RUN pip install *.whl && \
rm *.whl
# Setup supervisor
COPY docker/etc/supervisor/mayan.conf /etc/supervisor/conf.d
# Fix ownership
RUN chown -R mayan:mayan $PROJECT_INSTALL_DIR
# Allow flanker to autogenerate its PLY files
RUN chown -R mayan:mayan /usr/local/lib/python2.7/dist-packages/flanker/
RUN mkdir /var/lib/mayan
VOLUME ["/var/lib/mayan"] VOLUME ["/var/lib/mayan"]
COPY docker/entrypoint.sh /usr/local/bin/
RUN ln -s usr/local/bin/entrypoint.sh / # backwards compat
ENTRYPOINT ["entrypoint.sh"] ENTRYPOINT ["entrypoint.sh"]
EXPOSE 8000 EXPOSE 8000
CMD ["mayan"] CMD ["mayan"]
RUN ${PROJECT_INSTALL_DIR}/bin/mayan-edms.py platformtemplate supervisord_docker > /etc/supervisor/conf.d/mayan.conf \ RUN rm /root/.cache -R
&& apt-get clean autoclean \ RUN rm -rf /tmp/*
&& apt-get autoremove --purge -y \
&& rm -rf /var/lib/apt/lists/* \ RUN apt-get -y autoremove --purge && apt-get -y autoclean && apt-get -y clean
&& rm -f /var/cache/apt/archives/*.deb \
# Remove temporary files owned by root from the platformtemplate step RUN rm -rf /usr/share/man/*
&& rm /tmp/* \ RUN rm -rf /usr/share/doc/*
# Keep displaying log messages to stdout
&& find /var/log -type f | while read f; do echo -ne '' > $f; done; RUN find /var/lib/apt -type f | xargs rm -f
RUN find /var/cache -type f -exec rm -rf {} \;
RUN find /var/log -type f | while read f; do echo -ne '' > $f; done;

150
docker/Dockerfile.ubuntu Executable file
View File

@@ -0,0 +1,150 @@
# vim:set ft=dockerfile:
####################
# Base image start #
####################
FROM ubuntu:16.04 as BASE_IMAGE
MAINTAINER Roberto Rosario "roberto.rosario@mayan-edms.com"
ENV DEBIAN_FRONTEND noninteractive
ENV PYTHONUNBUFFERED 1
ENV LANG en_US.UTF-8
ENV PROJECT_INSTALL_DIR=/usr/local/lib/python2.7/dist-packages/mayan
ARG APT_PROXY
# Package caching
RUN if [ "${APT_PROXY}" ]; then echo "Acquire::http { Proxy \"http://${APT_PROXY}\"; };" > /etc/apt/apt.conf.d/01proxy; fi
# Install base Ubuntu libraries
RUN apt-get update && \
apt-get install -y --no-install-recommends \
curl \
g++ \
gcc \
gettext-base \
ghostscript \
gpgv \
graphviz \
libffi-dev \
libjpeg-dev \
libmagic1 \
libmysqlclient-dev \
libpng-dev \
libpq-dev \
libreoffice \
libtiff-dev \
locales \
netcat-openbsd \
poppler-utils \
python-dev \
python-pip \
python-setuptools \
python-wheel \
redis-server \
supervisor \
tesseract-ocr \
zlib1g-dev \
&& \
apt-get clean autoclean && \
apt-get autoremove --purge -y && \
rm -rf /var/lib/apt/lists/* && \
rm -f /var/cache/apt/archives/*.deb
# Switch to UTF locale
RUN echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \
locale-gen en_US.UTF-8 && \
update-locale LANG=en_US.UTF-8 && \
export LC_ALL=en_US.UTF-8
# Install apt-get-install
ADD https://raw.githubusercontent.com/guilhem/apt-get-install/master/apt-get-install /usr/bin/
RUN chmod +x /usr/bin/apt-get-install
# Install Python clients for PostgreSQL, REDIS, librabbitmq
RUN pip install psycopg2==2.7.3.2 redis==2.10.6 mysql-python==1.2.5 librabbitmq==1.6.1
RUN adduser mayan --disabled-password --disabled-login --no-create-home --gecos ""
# Pillow can't find zlib or libjpeg on aarch64
RUN if [ "$(uname -m)" = "aarch64" ]; then \
ln -s /usr/lib/aarch64-linux-gnu/libz.so /usr/lib/ && \
ln -s /usr/lib/aarch64-linux-gnu/libjpeg.so /usr/lib/ \
; fi
#####################
# Build image start #
#####################
FROM python:2-alpine3.7 as BUILDER_IMAGE
WORKDIR /code
COPY . /code
RUN apk update && \
apk add make
RUN pip install -r requirements/build.txt
RUN make wheel
RUN chmod 777 dist -R
#####################
# Final image start #
#####################
FROM BASE_IMAGE
WORKDIR /root/
COPY --from=BUILDER_IMAGE /code/dist/*.whl .
# Install build Mayan EDMS
RUN pip install *.whl && \
rm *.whl
# Setup supervisor
#RUN mkdir /etc/supervisor.d/
COPY docker/etc/supervisor/beat.conf /etc/supervisor/conf.d
COPY docker/etc/supervisor/gunicorn.conf /etc/supervisor/conf.d
COPY docker/etc/supervisor/redis.conf /etc/supervisor/conf.d
COPY docker/etc/supervisor/workers.conf /etc/supervisor/conf.d
# Create the directory for the logs
RUN mkdir /var/log/mayan
# Fix ownership
RUN chown -R mayan:mayan $PROJECT_INSTALL_DIR
# Allow flanker to autogenerate its PLY files
RUN chown -R mayan:mayan /usr/local/lib/python2.7/dist-packages/flanker/
RUN mkdir /var/lib/mayan
VOLUME ["/var/lib/mayan"]
COPY docker/entrypoint.sh /usr/local/bin/
RUN ln -s usr/local/bin/entrypoint.sh / # backwards compat
ENTRYPOINT ["entrypoint.sh"]
# Healthcheck setup
HEALTHCHECK --interval=15s --timeout=1s --retries=20 \
CMD curl -s -f http://localhost/authentication/login/ | grep 'form' > /dev/null || exit 1
EXPOSE 8000
CMD ["mayan"]
RUN rm /root/.cache -R
RUN rm -rf /tmp/*
RUN apt-get -y autoremove --purge && apt-get -y autoclean && apt-get -y clean
RUN rm -rf /usr/share/man/*
RUN rm -rf /usr/share/doc/*
RUN find /var/lib/apt -type f | xargs rm -f
RUN find /var/cache -type f -exec rm -rf {} \;
RUN find /var/log -type f | while read f; do echo -ne '' > $f; done;

View File

@@ -1,25 +1,33 @@
APT_PROXY ?= `/sbin/ip route|awk '/docker0/ { print $$9 }'`:3142 APT_PROXY ?= `/sbin/ip route|awk '/docker0/ { print $$9 }'`:3142
IMAGE_VERSION ?= `cat docker/rootfs/version` IMAGE_VERSION ?= `cat docker/version`
CONSOLE_COLUMNS ?= `echo $$(tput cols)` CONSOLE_COLUMNS ?= `echo $$(tput cols)`
CONSOLE_LINES ?= `echo $$(tput lines)` CONSOLE_LINES ?= `echo $$(tput lines)`
docker-build: ## Build a new image locally. docker-help:
@echo
@echo "**** Docker makefile ****"
@echo "docker-build - Build a new image locally."
@echo "docker-build-with-proxy - Build a new image locally using an APT proxy."
@echo "docker-test-container - Build and run a test container."
@echo "docker-test-cleanup - Delete the test container and the test volume."
@echo "docker-test-all - Build and executed the test suite in a test container."
@echo "docker-shell - Launch a bash instance inside a running container. Pass the container name via DOCKER_CONTAINER."
docker-build:
docker build -t mayanedms/mayanedms:$(IMAGE_VERSION) -f docker/Dockerfile . docker build -t mayanedms/mayanedms:$(IMAGE_VERSION) -f docker/Dockerfile .
docker-build-with-proxy: ## Build a new image locally using an APT proxy as APT_PROXY. docker-build-with-proxy:
docker build -t mayanedms/mayanedms:$(IMAGE_VERSION) -f docker/Dockerfile --build-arg APT_PROXY=$(APT_PROXY) . docker build -t mayanedms/mayanedms:$(IMAGE_VERSION) -f docker/Dockerfile --build-arg APT_PROXY=$(APT_PROXY) .
docker-shell: ## Launch a bash instance inside a running container. Pass the container name via DOCKER_CONTAINER. docker-shell:
docker exec -e TERM=$(TERM) -e "COLUMNS=$(CONSOLE_COLUMNS)" -e "LINES=$(CONSOLE_LINES)" -it $(DOCKER_CONTAINER) /bin/bash docker exec -e TERM=$(TERM) -e "COLUMNS=$(CONSOLE_COLUMNS)" -e "LINES=$(CONSOLE_LINES)" -it $(DOCKER_CONTAINER) /bin/bash
docker-test-container: ## Build and run a test container.
docker-test-container: docker-build-with-proxy docker-test-cleanup docker-test-container: docker-build-with-proxy docker-test-cleanup
docker run -d --name test-mayan-edms -p 80:8000 -v test-mayan_data:/var/lib/mayan mayanedms/mayanedms:$(DOCKER_VERSION) docker run -d --name test-mayan-edms -p 80:8000 -v test-mayan_data:/var/lib/mayan mayanedms/mayanedms:$(DOCKER_VERSION)
docker-test-cleanup: ## Delete the test container and the test volume. docker-test-cleanup:
@docker rm -f test-mayan-edms || true @docker rm -f test-mayan-edms || true
@docker volume rm test-mayan_data || true @docker volume rm test-mayan_data || true
docker-test-all: ## Build and executed the test suite in a test container.
docker-test-all: docker-build-with-proxy docker-test-all: docker-build-with-proxy
docker run --rm run-tests docker run --rm run-tests

1
docker/README-short.txt Executable file
View File

@@ -0,0 +1 @@
Mayan EDMS is a free open source electronic document management system.

549
docker/README.md Executable file

File diff suppressed because it is too large Load Diff

549
docker/README.md.tmpl Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -61,7 +61,7 @@ services:
environment: environment:
MAYAN_BROKER_URL: amqp://mayan:mayan@broker:5672/mayan MAYAN_BROKER_URL: amqp://mayan:mayan@broker:5672/mayan
MAYAN_CELERY_RESULT_BACKEND: redis://results:6379/0 MAYAN_CELERY_RESULT_BACKEND: redis://results:6379/0
MAYAN_DATABASE_ENGINE: django.db.backends.postgresql MAYAN_DATABASE_DRIVER: django.db.backends.postgres
MAYAN_DATABASE_HOST: db MAYAN_DATABASE_HOST: db
MAYAN_DATABASE_NAME: mayan MAYAN_DATABASE_NAME: mayan
MAYAN_DATABASE_PASSWORD: mayan-password MAYAN_DATABASE_PASSWORD: mayan-password

View File

@@ -47,7 +47,7 @@ services:
environment: environment:
MAYAN_BROKER_URL: amqp://mayan:mayan@broker:5672/mayan MAYAN_BROKER_URL: amqp://mayan:mayan@broker:5672/mayan
MAYAN_CELERY_RESULT_BACKEND: redis://results:6379/0 MAYAN_CELERY_RESULT_BACKEND: redis://results:6379/0
MAYAN_DATABASE_ENGINE: django.db.backends.postgresql MAYAN_DATABASE_DRIVER: django.db.backends.postgres
MAYAN_DATABASE_HOST: db MAYAN_DATABASE_HOST: db
MAYAN_DATABASE_NAME: mayan MAYAN_DATABASE_NAME: mayan
MAYAN_DATABASE_PASSWORD: mayan-password MAYAN_DATABASE_PASSWORD: mayan-password

86
docker/entrypoint.sh Executable file
View File

@@ -0,0 +1,86 @@
#!/bin/sh
set -e
echo "mayan: starting entrypoint.sh"
INSTALL_FLAG=/var/lib/mayan/media/system/SECRET_KEY
export DOCKER_ROOT=/root
export MAYAN_DEFAULT_BROKER_URL=redis://127.0.0.1:6379/0
export MAYAN_DEFAULT_CELERY_RESULT_BACKEND=redis://127.0.0.1:6379/0
export MAYAN_ALLOWED_HOSTS=*
export MAYAN_BIN=/usr/local/lib/python2.7/dist-packages/mayan/bin/mayan-edms.py
export MAYAN_BROKER_URL=${MAYAN_BROKER_URL:-${MAYAN_DEFAULT_BROKER_URL}}
export MAYAN_CELERY_RESULT_BACKEND=${MAYAN_CELERY_RESULT_BACKEND:-${MAYAN_DEFAULT_CELERY_RESULT_BACKEND}}
export MAYAN_GUNICORN_WORKERS=${MAYAN_GUNICORN_WORKERS:-2}
export MAYAN_INSTALL_DIR=/usr/local/lib/python2.7/dist-packages/mayan
export MAYAN_PYTHON_DIR=/usr/local/bin
export MAYAN_MEDIA_ROOT=/var/lib/mayan
export MAYAN_SETTINGS_MODULE=${MAYAN_SETTINGS_MODULE:-mayan.settings.production}
export CELERY_ALWAYS_EAGER=False
export PYTHONPATH=$PYTHONPATH:$MAYAN_MEDIA_ROOT
chown mayan:mayan /var/lib/mayan -R
initialize() {
echo "mayan: initialize()"
su mayan -c "mayan-edms.py initialsetup --force"
su mayan -c "mayan-edms.py collectstatic --noinput --clear"
}
upgrade() {
echo "mayan: upgrade()"
su mayan -c "mayan-edms.py performupgrade"
su mayan -c "mayan-edms.py collectstatic --noinput --clear"
}
start() {
echo "mayan: start()"
rm -rf /var/run/supervisor.sock
exec /usr/bin/supervisord -nc /etc/supervisor/supervisord.conf
}
os_package_installs() {
echo "mayan: os_package_installs()"
if [ "${MAYAN_APT_INSTALLS}" ]; then
apt-get-install $MAYAN_APT_INSTALLS
fi
}
pip_installs() {
echo "mayan: pip_installs()"
if [ "${MAYAN_PIP_INSTALLS}" ]; then
pip install $MAYAN_PIP_INSTALLS
fi
}
os_package_installs || true
pip_installs || true
case "$1" in
mayan) # Check if this is a new install, otherwise try to upgrade the existing
# installation on subsequent starts
if [ ! -f $INSTALL_FLAG ]; then
initialize
else
upgrade
fi
start
;;
run-tests) # Check if this is a new install, otherwise try to upgrade the existing
# installation on subsequent starts
if [ ! -f $INSTALL_FLAG ]; then
initialize
else
upgrade
fi
$DOCKER_ROOT/run-tests.sh
;;
*) su mayan -c "$@";
;;
esac

View File

@@ -0,0 +1,80 @@
[program:mayan-gunicorn]
autorestart = false
autostart = true
command = /bin/bash -c "cd ${MAYAN_PYTHON_DIR}; gunicorn -w ${MAYAN_GUNICORN_WORKERS} mayan.wsgi --max-requests 500 --max-requests-jitter 50 --worker-class gevent --bind 0.0.0.0:8000 --env DJANGO_SETTINGS_MODULE=${MAYAN_SETTINGS_MODULE}"
redirect_stderr = true
stderr_logfile = /dev/fd/2
stderr_logfile_maxbytes = 0
stdout_logfile = /dev/fd/1
stdout_logfile_maxbytes = 0
user = mayan
[program:redis]
autorestart = false
autostart = true
command = /bin/bash -c "if [ ${MAYAN_BROKER_URL} == ${MAYAN_DEFAULT_BROKER_URL} ] && [ ${MAYAN_CELERY_RESULT_BACKEND} == ${MAYAN_DEFAULT_CELERY_RESULT_BACKEND} ];then /usr/bin/redis-server /etc/redis/;fi"
stderr_logfile = /dev/fd/2
stderr_logfile_maxbytes = 0
stdout_logfile = /dev/fd/1
stdout_logfile_maxbytes = 0
user = root
[program:mayan-worker-fast]
autorestart = false
autostart = true
command = nice -n 1 /bin/bash -c "cd ${MAYAN_PYTHON_DIR}; python ${MAYAN_BIN} celery --settings=${MAYAN_SETTINGS_MODULE} worker -Ofair -l ERROR -Q converter -n mayan-worker-fast.%%h --concurrency=1"
killasgroup = true
numprocs = 1
priority = 998
startsecs = 10
stderr_logfile = /dev/fd/2
stderr_logfile_maxbytes = 0
stdout_logfile = /dev/fd/1
stdout_logfile_maxbytes = 0
stopwaitsecs = 1
user = mayan
[program:mayan-worker-medium]
autorestart = false
autostart = true
command = nice -n 18 /bin/bash -c "cd ${MAYAN_PYTHON_DIR}; python ${MAYAN_BIN} celery --settings=${MAYAN_SETTINGS_MODULE} worker -Ofair -l ERROR -Q checkouts_periodic,documents_periodic,indexing,metadata,sources,sources_periodic,uploads,documents -n mayan-worker-medium.%%h --concurrency=1"
killasgroup = true
numprocs = 1
priority = 998
startsecs = 10
stderr_logfile = /dev/fd/2
stderr_logfile_maxbytes = 0
stdout_logfile = /dev/fd/1
stdout_logfile_maxbytes = 0
stopwaitsecs = 1
user = mayan
[program:mayan-worker-slow]
autorestart = false
autostart = true
command = nice -n 19 /bin/bash -c "cd ${MAYAN_PYTHON_DIR}; python ${MAYAN_BIN} celery --settings=${MAYAN_SETTINGS_MODULE} worker -Ofair -l ERROR -Q mailing,tools,statistics,parsing,ocr -n mayan-worker-slow.%%h --concurrency=1"
killasgroup = true
numprocs = 1
priority = 998
startsecs = 10
stderr_logfile = /dev/fd/2
stderr_logfile_maxbytes = 0
stdout_logfile = /dev/fd/1
stdout_logfile_maxbytes = 0
stopwaitsecs = 1
user = mayan
[program:mayan-celery-beat]
autorestart = false
autostart = true
command = nice -n 1 /bin/bash -c "cd ${MAYAN_PYTHON_DIR}; python ${MAYAN_BIN} celery --settings=${MAYAN_SETTINGS_MODULE} beat --pidfile= -l ERROR"
killasgroup = true
numprocs = 1
priority = 998
stderr_logfile = /dev/fd/2
stderr_logfile_maxbytes = 0
stdout_logfile = /dev/fd/1
stdout_logfile_maxbytes = 0
startsecs = 10
stopwaitsecs = 1
user = mayan

View File

@@ -1,140 +0,0 @@
#!/bin/sh
set -e
echo "mayan: starting entrypoint.sh"
INSTALL_FLAG=/var/lib/mayan/system/SECRET_KEY
CONCURRENCY_ARGUMENT=--concurrency=
DEFAULT_USER_UID=1000
DEFAULT_USER_GID=1000
MAYAN_USER_UID=${MAYAN_USER_UID:-${DEFAULT_USER_UID}}
MAYAN_USER_GID=${MAYAN_USER_GID:-${DEFAULT_USER_GID}}
export MAYAN_DEFAULT_BROKER_URL=redis://127.0.0.1:6379/0
export MAYAN_DEFAULT_CELERY_RESULT_BACKEND=redis://127.0.0.1:6379/0
export MAYAN_ALLOWED_HOSTS='["*"]'
export MAYAN_BIN=/opt/mayan-edms/bin/mayan-edms.py
export MAYAN_BROKER_URL=${MAYAN_BROKER_URL:-${MAYAN_DEFAULT_BROKER_URL}}
export MAYAN_CELERY_RESULT_BACKEND=${MAYAN_CELERY_RESULT_BACKEND:-${MAYAN_DEFAULT_CELERY_RESULT_BACKEND}}
export MAYAN_INSTALL_DIR=/opt/mayan-edms
export MAYAN_PYTHON_BIN_DIR=/opt/mayan-edms/bin/
export MAYAN_MEDIA_ROOT=/var/lib/mayan
export MAYAN_SETTINGS_MODULE=${MAYAN_SETTINGS_MODULE:-mayan.settings.production}
export MAYAN_GUNICORN_BIN=${MAYAN_PYTHON_BIN_DIR}gunicorn
export MAYAN_GUNICORN_WORKERS=${MAYAN_GUNICORN_WORKERS:-2}
export MAYAN_GUNICORN_TIMEOUT=${MAYAN_GUNICORN_TIMEOUT:-120}
export MAYAN_PIP_BIN=${MAYAN_PYTHON_BIN_DIR}pip
export MAYAN_STATIC_ROOT=${MAYAN_INSTALL_DIR}/static
MAYAN_WORKER_FAST_CONCURRENCY=${MAYAN_WORKER_FAST_CONCURRENCY:-1}
MAYAN_WORKER_MEDIUM_CONCURRENCY=${MAYAN_WORKER_MEDIUM_CONCURRENCY:-1}
MAYAN_WORKER_SLOW_CONCURRENCY=${MAYAN_WORKER_SLOW_CONCURRENCY:-1}
update_uid_gid() {
echo "mayan: update_uid_gid()"
groupmod mayan -g ${MAYAN_USER_GID} 2>/dev/null || true
usermod mayan -u ${MAYAN_USER_UID} -g ${MAYAN_USER_GID} 2>/dev/null
if [ ${MAYAN_USER_UID} -ne ${DEFAULT_USER_UID} ] || [ ${MAYAN_USER_GID} -ne ${DEFAULT_USER_GID} ]; then
echo "mayan: Updating file ownership. This might take a while if there are many documents."
chown -R mayan:mayan ${MAYAN_INSTALL_DIR} ${MAYAN_STATIC_ROOT} ${MAYAN_MEDIA_ROOT}
fi
}
update_uid_gid
if [ "$MAYAN_WORKER_FAST_CONCURRENCY" -eq 0 ]; then
MAYAN_WORKER_FAST_CONCURRENCY=
else
MAYAN_WORKER_FAST_CONCURRENCY="${CONCURRENCY_ARGUMENT}${MAYAN_WORKER_FAST_CONCURRENCY}"
fi
export MAYAN_WORKER_FAST_CONCURRENCY
if [ "$MAYAN_WORKER_MEDIUM_CONCURRENCY" -eq 0 ]; then
MAYAN_WORKER_MEDIUM_CONCURRENCY=
else
MAYAN_WORKER_MEDIUM_CONCURRENCY="${CONCURRENCY_ARGUMENT}${MAYAN_WORKER_MEDIUM_CONCURRENCY}"
fi
export MAYAN_WORKER_MEDIUM_CONCURRENCY
if [ "$MAYAN_WORKER_SLOW_CONCURRENCY" -eq 0 ]; then
MAYAN_WORKER_SLOW_CONCURRENCY=
else
MAYAN_WORKER_SLOW_CONCURRENCY="${CONCURRENCY_ARGUMENT}${MAYAN_WORKER_SLOW_CONCURRENCY}"
fi
export MAYAN_WORKER_SLOW_CONCURRENCY
export CELERY_ALWAYS_EAGER=False
export PYTHONPATH=$PYTHONPATH:$MAYAN_MEDIA_ROOT
chown mayan:mayan /var/lib/mayan -R
apt_get_install() {
apt-get -q update
apt-get install -y --force-yes --no-install-recommends --auto-remove "$@"
apt-get -q clean
rm -rf /var/lib/apt/lists/*
}
initialize() {
echo "mayan: initialize()"
su mayan -c "${MAYAN_BIN} initialsetup --force --no-javascript"
}
os_package_installs() {
echo "mayan: os_package_installs()"
if [ "${MAYAN_APT_INSTALLS}" ]; then
DEBIAN_FRONTEND=noninteractive apt_get_install $MAYAN_APT_INSTALLS
fi
}
pip_installs() {
echo "mayan: pip_installs()"
if [ "${MAYAN_PIP_INSTALLS}" ]; then
su mayan -c "${MAYAN_PIP_BIN} install $MAYAN_PIP_INSTALLS"
fi
}
start() {
echo "mayan: start()"
rm -rf /var/run/supervisor.sock
exec /usr/bin/supervisord -nc /etc/supervisor/supervisord.conf
}
upgrade() {
echo "mayan: upgrade()"
su mayan -c "${MAYAN_BIN} performupgrade --no-javascript"
}
os_package_installs || true
pip_installs || true
case "$1" in
mayan) # Check if this is a new install, otherwise try to upgrade the existing
# installation on subsequent starts
if [ ! -f $INSTALL_FLAG ]; then
initialize
else
upgrade
fi
start
;;
run-tests) # Check if this is a new install, otherwise try to upgrade the existing
# installation on subsequent starts
if [ ! -f $INSTALL_FLAG ]; then
initialize
else
upgrade
fi
run-tests.sh
;;
*) su mayan -c "$@";
;;
esac

View File

@@ -1,10 +0,0 @@
#!/bin/sh
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y --no-install-recommends gcc python-dev tesseract-ocr-deu
su mayan -c "$MAYAN_PIP_BIN install -r ${MAYAN_INSTALL_DIR}/testing-base.txt"
su mayan -c "$MAYAN_BIN test --mayan-apps --settings=mayan.settings.testing"

View File

@@ -1 +0,0 @@
3.2.8

View File

@@ -14,8 +14,6 @@ services:
POSTGRES_DB: mayan POSTGRES_DB: mayan
POSTGRES_PASSWORD: mayan-password POSTGRES_PASSWORD: mayan-password
POSTGRES_USER: mayan POSTGRES_USER: mayan
volumes:
- db:/var/lib/postgresql/data
app: app:
image: mayanedms/mayanedms:latest image: mayanedms/mayanedms:latest
@@ -27,6 +25,6 @@ services:
MAYAN_DATABASE_NAME: mayan MAYAN_DATABASE_NAME: mayan
MAYAN_DATABASE_PASSWORD: mayan-password MAYAN_DATABASE_PASSWORD: mayan-password
MAYAN_DATABASE_USER: mayan MAYAN_DATABASE_USER: mayan
MAYAN_DATABASE_CONN_MAX_AGE: 0
volumes: volumes:
- app:/var/lib/mayan - app:/var/lib/mayan

1
docker/version Executable file
View File

@@ -0,0 +1 @@
3.0rc1

View File

@@ -1,5 +0,0 @@
.menuselection {
color: white;
background: #2c3e50;
padding: 3px;
}

View File

@@ -1,102 +0,0 @@
***
API
***
Mayan EDMS provides an HTTP REST Application Program Interface (or API). This
API allows integration with 3rd party software using simple HTTP requests.
Several API authentication methods are provides: **Session**, **Token**,
and **HTTP Basic**.
The URL for the API can be found via the :menuselection:`Tools --> REST API
menu. The API is also self-documenting. The live API documentation can be
found in the :menuselection:`Tools --> API Documentation (Swagger)` menu for
the Swagger version and in the
:menuselection:`Tools --> API Documentation (ReDoc)` menu for the ReDoc version.
The are a few ways to structure REST APIs. In the case of Mayan EDMS, API
endpoints are structured by resource type. Examples:
* /cabinets - To view or create new cabinets
* /cabinets/<id> - To view the details, edit, or delete an existing cabinet.
* /cabinets/<id>/documents - To view, add, or remove documents from an existing
cabinet.
* /cabinets/<id>/documents/<id> - To view, add, or remove one document from an
existing cabinet.
The API supports the HTTP verbs: **GET**, **POST**, **PUT**, **PATCH**,
and **DELETE**.
Example use
===========
Install Python Requests (http://docs.python-requests.org/en/master/)::
pip install requests
Get a list of document types::
import requests
requests.get('http://127.0.0.1:8000/api/document_types/', auth=('username', 'password')).json()
{u'count': 1,
u'next': None,
u'previous': None,
u'results': [{u'delete_time_period': 30,
u'delete_time_unit': u'days',
u'documents_count': 12,
u'documents_url': u'http://127.0.0.1:8000/api/document_types/1/documents/',
u'filenames': [],
u'id': 1,
u'label': u'Default',
u'trash_time_period': None,
u'trash_time_unit': None,
u'url': u'http://127.0.0.1:8000/api/document_types/1/'}]}
Upload a new document::
with open('test_document.pdf', mode='rb') as
requests.post('http://127.0.0.1:8000/api/documents/', auth=('username', 'password'), files={'file': file_object}, data={'document_type': 1}).json()
{u'description': u'',
u'document_type': 1,
u'id': 19,
u'label': u'test_document.pdf',
u'language': u'eng'}
Use API tokens to avoid sending the username and password on every request. Obtain a token by making a POST request to ``/api/auth/token/obtain/?format=json``::
requests.post('http://127.0.0.1:8000/api/auth/token/obtain/?format=json', data={'username': 'username', 'password': 'password'}).json()
{u'token': u'4ccbc35b5eb327aa82dc3b7c9747b578900f02bb'}
Add the API token to the request header::
headers = {'Authorization': 'Token 4ccbc35b5eb327aa82dc3b7c9747b578900f02bb'}
requests.get('http://127.0.0.1:8000/api/document_types/', headers=headers).json()
{u'description': u'',
u'document_type': 1,
u'id': 19,
u'label': u'test_document.pdf',
u'language': u'eng'}
Use sessions to avoid having to add the headers on each request::
session = requests.Session()
headers = {'Authorization': 'Token 4ccbc35b5eb327aa82dc3b7c9747b578900f02bb'}
session.headers.update(headers)
session.get('http://127.0.0.1:8000/api/document_types/')
{u'description': u'',
u'document_type': 1,
u'id': 19,
u'label': u'test_document.pdf',
u'language': u'eng'}

View File

@@ -1,14 +0,0 @@
Cabinets
========
Cabinets are a multi-level method to organize documents. Each cabinet can
contain documents as well as other sub level cabinets. Cabinets can
be added from the :menuselection:`Cabinets --> Add new` menu.
With a cabinet structure created, the next step is to add documents to them.
To add documents to a cabinet, select the cabinet tab of a document, and
select :menuselection:`Actions --> Add to cabinets` link.
Documents can also be added in bulk to one or more cabinets from any view
that lists documents.

View File

@@ -1,103 +0,0 @@
*******************
Database conversion
*******************
Version 3.1.x added a new management command to help convert data residing in
an SQLite database to other database managers like PostgreSQL. Here is the
conversion procedure.
Direct install
==============
* Make a backup of your existing SQLite database and documents by copying the
``/opt/mayan-edms/media`` folder.
* :doc:`Upgrade to at least version 3.1.3. <../releases/3.1.3>`
* Migrate the existing SQLite database with the command ``performupgrade``::
sudo -u mayan MAYAN_MEDIA_ROOT=/opt/mayan-edms/media /opt/mayan-edms/bin/mayan-edms.py performupgrade
* Install PostgreSQL::
sudo apt-get install postgresql libpq-dev
* Provision a PostgreSQL database::
sudo -u postgres psql -c "CREATE USER mayan WITH password 'mayanuserpass';"
sudo -u postgres createdb -O mayan mayan
* Install the Python client for PostgreSQL::
sudo -u mayan /opt/mayan-edms/bin/pip install --no-cache-dir --no-use-pep517 psycopg2==2.7.3.2
* Copy the newly created fallback config file::
cp /opt/mayan-edms/media/config_backup.yml /opt/mayan-edms/media/config.yml
* Edit the configuration file to add the entry for the PostgreSQL database and
rename the SQLite database to 'old'::
# Before
DATABASES:
default:
ATOMIC_REQUESTS: false
AUTOCOMMIT: true
CONN_MAX_AGE: 0
ENGINE: django.db.backends.sqlite3
HOST: ''
NAME: /opt/mayan-edms/media/db.sqlite3
OPTIONS: {}
PASSWORD: ''
PORT: ''
TEST: {CHARSET: null, COLLATION: null, MIRROR: null, NAME: null}
TIME_ZONE: null
USER: ''
# After
DATABASES:
old:
ATOMIC_REQUESTS: false
AUTOCOMMIT: true
CONN_MAX_AGE: 0
ENGINE: django.db.backends.sqlite3
HOST: ''
NAME: /opt/mayan-edms/media/db.sqlite3
OPTIONS: {}
PASSWORD: ''
PORT: ''
TEST: {CHARSET: null, COLLATION: null, MIRROR: null, NAME: null}
TIME_ZONE: null
USER: ''
default:
ATOMIC_REQUESTS: false
AUTOCOMMIT: true
CONN_MAX_AGE: 0
ENGINE: django.db.backends.postgresql
HOST: '127.0.0.1'
NAME: /opt/mayan-edms/media/db.sqlite3
OPTIONS: {}
PASSWORD: 'mayanuserpass'
PORT: ''
TEST: {CHARSET: null, COLLATION: null, MIRROR: null, NAME: null}
TIME_ZONE: null
USER: 'mayan'
* Migrate the new database to create the empty tables::
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 migrate
* Convert the data in the SQLite and store it in the PostgreSQL database::
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 convertdb --from=old --to=default --force
* Update the supervisor config file to have Mayan EDMS run from the PostgreSQL database::
[supervisord]
environment=
<...>
MAYAN_DATABASE_ENGINE=django.db.backends.postgresql,
MAYAN_DATABASE_HOST=127.0.0.1,
MAYAN_DATABASE_NAME=mayan,
MAYAN_DATABASE_PASSWORD=mayanuserpass,
MAYAN_DATABASE_USER=mayan,
MAYAN_DATABASE_CONN_MAX_AGE=0,
<...>

View File

@@ -1,255 +0,0 @@
******************
Direct deployments
******************
Mayan EDMS should be deployed like any other Django_ project and
preferably using virtualenv_. Below are some ways to deploy and use Mayan EDMS.
Being a Django_ and a Python_ project, familiarity with these technologies is
recommended to better understand why Mayan EDMS does some of the things it
does.
Compilers and development libraries will be installed to compile runtime
libraries. LibreOffice and Poppler utils will also be installed as they are
used to convert document files. Supervisor (https://supervisord.org/), a
Process Control System, will be used to monitor and keep all Mayan processes
running.
Basic deployment
================
This setup uses less memory and CPU resources at the expense of some speed.
For another setup that offers more performance and scalability refer to the
`Advanced deployment`_ below.
1. Install binary dependencies:
-------------------------------
If using a Debian_ or Ubuntu_ based Linux distribution, get the executable
requirements using::
sudo apt-get install g++ gcc ghostscript gnupg1 graphviz libfuse2 \
libjpeg-dev libmagic1 libpq-dev libpng-dev libreoffice libtiff-dev \
poppler-utils postgresql python-dev python-virtualenv redis-server \
sane-utils supervisor tesseract-ocr zlib1g-dev -y
.. note::
Platforms with the ARM CPU might also need additional requirements.
::
sudo apt-get install libffi-dev libssl-dev -y
2. Create the user account for the installation:
------------------------------------------------
This will create an unprivileged user account that is also unable to login.
::
sudo adduser mayan --disabled-password --disabled-login --no-create-home --gecos ""
3. Create the parent directory where the project will be deployed:
------------------------------------------------------------------
``/opt/`` is a good choice as it is meant is for "software and add-on packages
that are not part of the default installation". (https://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/opt.html)
::
sudo mkdir /opt
4. Create the Python virtual environment:
-----------------------------------------
This will keep all the Python packages installed here isolated from the rest
of the Python packages in the system.
::
sudo virtualenv /opt/mayan-edms
5. Make the mayan user the owner of the installation directory:
---------------------------------------------------------------
::
sudo chown mayan:mayan /opt/mayan-edms -R
6. Install Mayan EDMS from PyPI:
--------------------------------
::
sudo -u mayan /opt/mayan-edms/bin/pip install --no-cache-dir --no-use-pep517 mayan-edms
7. Install the Python client for PostgreSQL and Redis:
------------------------------------------------------
::
sudo -u mayan /opt/mayan-edms/bin/pip install --no-cache-dir --no-use-pep517 psycopg2==2.7.3.2 redis==2.10.6
.. note::
Platforms with the ARM CPU might also need additional requirements.
::
sudo -u mayan /opt/mayan-edms/bin/pip install --no-cache-dir --no-use-pep517 psutil==5.6.2
8. Create the database for the installation:
--------------------------------------------
::
sudo -u postgres psql -c "CREATE USER mayan WITH password 'mayanuserpass';"
sudo -u postgres createdb -O mayan mayan
9. Initialize the project:
--------------------------
This step will create all the database structures, download static media files
like JavaScript libraries and HTML frameworks, and create and initial admin
account with a random password.
.. note::
For simplicity, the ``MAYAN_MEDIA_ROOT`` folder is set to be a subfolder
of the installation. If you want to keep your files separated from
the installation files, change the value of the ``MAYAN_MEDIA_ROOT``
variable in this and all subsequent steps. Be sure to first create the
folder and give ownership of it to the ``mayan`` user with the ``chown``
command.
.. warning::
If this step is interrupted, even if it is later resumed, will
cause the automatic admin user to no be created in some cases. Make sure all
environment variable and values are correct. If this happens, refer to the
troubleshooting chapters: :ref:`troubleshooting-autoadmin-account` and
:ref:`troubleshooting-admin-password`.
::
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 initialsetup
10. Collect the static files:
-----------------------------
This step merges and compressed static media files so they can be served more
effectively.
::
sudo -u mayan MAYAN_MEDIA_ROOT=/opt/mayan-edms/media \
/opt/mayan-edms/bin/mayan-edms.py preparestatic --noinput
11. Create the supervisor file at ``/etc/supervisor/conf.d/mayan.conf``:
------------------------------------------------------------------------
::
sudo 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 > /etc/supervisor/conf.d/mayan.conf
12. Configure Redis:
--------------------
Configure Redis to discard data when it runs out of memory, not save its
database and only keep 1 database:
::
sudo echo "maxmemory-policy allkeys-lru" >> /etc/redis/redis.conf
sudo echo "save \"\"" >> /etc/redis/redis.conf
sudo echo "databases 1" >> /etc/redis/redis.conf
sudo systemctl restart redis
13. Enable and restart the services [1_]:
-----------------------------------------
::
sudo systemctl enable supervisor
sudo systemctl restart supervisor
14. Cleaning up:
----------------
The following operating system dependencies are only needed during
installation and can be removed.
::
sudo apt-get remove --purge libjpeg-dev libpq-dev libpng-dev libtiff-dev zlib1g-dev
.. _deployment_advanced:
Advanced deployment
===================
This variation uses RabbitMQ as the message broker. RabbitMQ consumes more
memory but scales to thousands of messages per second. RabbitMQ messages are also
persistent by default, this means that pending tasks are not lost in the case
of a restart or power failure. The Gunicorn workers are increased to 3.
1. Install RabbitMQ:
--------------------
If using a Debian_ or Ubuntu_ based Linux distribution, get the executable
requirements using::
sudo apt-get install rabbitmq-server -y
2. Install the Python client for RabbitMQ:
------------------------------------------
::
sudo -u mayan /opt/mayan-edms/bin/pip install --no-cache-dir --no-use-pep517 librabbitmq==2.0.0
3. Create the RabbitMQ user and vhost:
--------------------------------------
::
sudo rabbitmqctl add_user mayan mayanrabbitmqpassword
sudo rabbitmqctl add_vhost mayan
sudo rabbitmqctl set_permissions -p mayan mayan ".*" ".*" ".*"
4. Edit the supervisor file at ``/etc/supervisor/conf.d/mayan.conf``:
---------------------------------------------------------------------
Replace (paying attention to the comma at the end)::
MAYAN_BROKER_URL="redis://127.0.0.1:6379/0",
with::
MAYAN_BROKER_URL="amqp://mayan:mayanrabbitmqpassword@localhost:5672/mayan",
increase the number of Gunicorn workers to 3 in the line (``-w 2`` section)::
command = /opt/mayan-edms/bin/gunicorn -w 2 mayan.wsgi --max-requests 1000 --max-requests-jitter 50 --worker-class gevent --bind 0.0.0.0:8000 --timeout 120
remove the concurrency limit (or increase it) of the fast worker (remove ``--concurrency=1``).
5. Restart the services:
------------------------
::
sudo supervisorctl restart all
[1]: https://bugs.launchpad.net/ubuntu/+source/supervisor/+bug/1594740
.. _Debian: https://www.debian.org/
.. _Django: https://www.djangoproject.com/
.. _Python: https://www.python.org/
.. _SQLite: https://www.sqlite.org/
.. _Ubuntu: http://www.ubuntu.com/
.. _virtualenv: http://www.virtualenv.org/en/latest/index.html
.. _1: https://bugs.launchpad.net/ubuntu/+source/supervisor/+bug/1594740

File diff suppressed because it is too large Load Diff

View File

@@ -1,456 +0,0 @@
============
Docker image
============
How to use this image
=====================
.. _docker_install:
Start a Mayan EDMS Docker image
-------------------------------
With Docker properly installed, proceed to download the Mayan EDMS image using
the command::
docker pull mayanedms/mayanedms:<version>
Instead of a specific version tag you may use then generic ``:latest`` tag
to the get latest version available automatically. If you use the ``:latest``
tag here, remember to do so in the next steps also.::
docker pull mayanedms/mayanedms:latest
Then download version 9.6 of the Docker PostgreSQL image::
docker pull postgres:9.6
Create and run a PostgreSQL container::
docker run -d \
--name mayan-edms-postgres \
--restart=always \
-p 5432:5432 \
-e POSTGRES_USER=mayan \
-e POSTGRES_DB=mayan \
-e POSTGRES_PASSWORD=mayanuserpass \
-v /docker-volumes/mayan-edms/postgres:/var/lib/postgresql/data \
-d postgres:9.6
The PostgreSQL container will have one database named ``mayan``, with an user
named ``mayan`` too, with a password of ``mayanuserpass``. The container will
expose its internal 5432 port (PostgreSQL's default port) via the host's
5432 port. The data of this container will reside on the host's
``/docker-volumes/mayan-edms/postgres`` folder.
Finally create and run a Mayan EDMS container::
docker run -d \
--name mayan-edms \
--restart=always \
-p 80:8000 \
-e MAYAN_DATABASE_ENGINE=django.db.backends.postgresql \
-e MAYAN_DATABASE_HOST=172.17.0.1 \
-e MAYAN_DATABASE_NAME=mayan \
-e MAYAN_DATABASE_PASSWORD=mayanuserpass \
-e MAYAN_DATABASE_USER=mayan \
-e MAYAN_DATABASE_CONN_MAX_AGE=0 \
-v /docker-volumes/mayan-edms/media:/var/lib/mayan \
mayanedms/mayanedms:<version>
The Mayan EDMS container will connect to the PostgreSQL container via the
``172.17.0.1`` IP address (the Docker host's default IP address). It will
connect using the ``django.db.backends.postgresql`` database driver and
connect to the ``mayan`` database using the ``mayan`` user with the password
``mayanuserpass``. The container will keep connections to the database
for up to 60 seconds in an attempt to reuse them increasing response time
and reducing memory usage. The files of the container will be store in the
host's ``/docker-volumes/mayan-edms/media`` folder. The container will
expose its web service running on port 8000 on the host's port 80.
The container will be available by browsing to ``http://localhost`` or to
the IP address of the computer running the container.
If another web server is running on port 80 use a different port in the
``-p`` option. For example: ``-p 81:8000``.
Using a dedicated Docker network
--------------------------------
Use this method to avoid having to expose PostreSQL port to the host's network
or if you have other PostgreSQL instances but still want to use the default
port of 5432 for this installation.
Create the network::
docker network create mayan
Launch the PostgreSQL container with the network option and remove the port
binding (``-p 5432:5432``)::
docker run -d \
--name mayan-edms-postgres \
--network=mayan \
--restart=always \
-e POSTGRES_USER=mayan \
-e POSTGRES_DB=mayan \
-e POSTGRES_PASSWORD=mayanuserpass \
-v /docker-volumes/mayan-edms/postgres:/var/lib/postgresql/data \
-d postgres:9.6
Launch the Mayan EDMS container with the network option and change the
database hostname to the PostgreSQL container name (``mayan-edms-postgres``)
instead of the IP address of the Docker host (``172.17.0.1``)::
docker run -d \
--name mayan-edms \
--network=mayan \
--restart=always \
-p 80:8000 \
-e MAYAN_DATABASE_ENGINE=django.db.backends.postgresql \
-e MAYAN_DATABASE_HOST=mayan-edms-postgres \
-e MAYAN_DATABASE_NAME=mayan \
-e MAYAN_DATABASE_PASSWORD=mayanuserpass \
-e MAYAN_DATABASE_USER=mayan \
-e MAYAN_DATABASE_CONN_MAX_AGE=0 \
-v /docker-volumes/mayan-edms/media:/var/lib/mayan \
mayanedms/mayanedms:<version>
Stopping and starting the container
-----------------------------------
To stop the container use::
docker stop mayan-edms
To start the container again::
docker start mayan-edms
.. _docker_environment_variables:
Environment Variables
---------------------
The Mayan EDMS image can be configure via environment variables.
``MAYAN_DATABASE_ENGINE``
Defaults to ``None``. This environment variable configures the database
backend to use. If left unset, SQLite will be used. The database backends
supported by this Docker image are:
- ``'django.db.backends.postgresql'``
- ``'django.db.backends.mysql'``
- ``'django.db.backends.sqlite3'``
When using the SQLite backend, the database file will be saved in the Docker
volume. The SQLite database as used by Mayan EDMS is meant only for development
or testing, never use it in production.
``MAYAN_DATABASE_NAME``
Defaults to 'mayan'. This optional environment variable can be used to define
the database name that Mayan EDMS will connect to. For more information read
the pertinent Django documentation page:
:django-docs:`Connecting to the database <ref/databases/#connecting-to-the-database>`
``MAYAN_DATABASE_USER``
Defaults to 'mayan'. This optional environment variable is used to set the
username that will be used to connect to the database. For more information
read the pertinent Django documentation page:
:django-docs:`Settings, USER <ref/settings/#user>`
``MAYAN_DATABASE_PASSWORD``
Defaults to ''. This optional environment variable is used to set the
password that will be used to connect to the database. For more information
read the pertinent Django documentation page:
:django-docs:`Settings, PASSWORD <ref/settings/#password>`
``MAYAN_DATABASE_HOST``
Defaults to `None`. This optional environment variable is used to set the
hostname that will be used to connect to the database. This can be the
hostname of another container or an IP address. For more information read
the pertinent Django documentation page:
:django-docs:`Settings, HOST <ref/settings/#host>`
``MAYAN_DATABASE_PORT``
Defaults to `None`. This optional environment variable is used to set the
port number to use when connecting to the database. An empty string means
the default port. Not used with SQLite. For more information read the
pertinent Django documentation page:
:django-docs:`Settings, PORT <ref/settings/#port>`
``MAYAN_BROKER_URL``
This optional environment variable determines the broker that Celery will use
to relay task messages between the frontend code and the background workers.
For more information read the pertinent Celery Kombu documentation page: `Broker URL`_
.. _Broker URL: http://kombu.readthedocs.io/en/latest/userguide/connections.html#connection-urls
This Docker image supports using Redis and RabbitMQ as brokers.
Caveat: If the `MAYAN_BROKER_URL` and `MAYAN_CELERY_RESULT_BACKEND` environment
variables are specified, the built-in Redis server inside the container will
be disabled.
``MAYAN_CELERY_RESULT_BACKEND``
This optional environment variable determines the results backend that Celery
will use to relay result messages from the background workers to the frontend
code. For more information read the pertinent Celery Kombu documentation page:
`Task result backend settings`_
.. _Task result backend settings: http://docs.celeryproject.org/en/3.1/configuration.html#celery-result-backend
This Docker image supports using Redis and RabbitMQ as result backends.
Caveat: If the `MAYAN_BROKER_URL` and `MAYAN_CELERY_RESULT_BACKEND` environment
variables are specified, the built-in Redis server inside the container will
be disabled.
``MAYAN_SETTINGS_MODULE``
Optional. Allows loading an alternate settings file.
``MAYAN_DATABASE_CONN_MAX_AGE``
Amount in seconds to keep a database connection alive. Allow reuse of database
connections. For more information read the pertinent Django documentation
page: :django-docs:`Settings, CONN_MAX_AGE <ref/settings/#conn-max-age>`
According to new information Gunicorn's microthreads don't share connections
and will exhaust the available Postgres connections available if a number
other than 0 is used. Reference: https://serverfault.com/questions/635100/django-conn-max-age-persists-connections-but-doesnt-reuse-them-with-postgresq
and https://github.com/benoitc/gunicorn/issues/996
``MAYAN_GUNICORN_TIMEOUT``
Optional. Changes the amount of time the frontend worker will wait for a
request to finish before raising a timeout error. The default is 120
seconds.
``MAYAN_GUNICORN_WORKERS``
Optional. This environment variable controls the number of frontend workers
that will be executed. If not specified the default is 2. For heavier loads,
user a higher number. A formula recommended for this setting is the number
of CPU cores + 1.
``MAYAN_WORKER_FAST_CONCURRENCY``
Optional. Changes the concurrency (number of child processes) of the Celery
worker consuming the queues in the fast (low latency, short tasks) category.
Default is 1. Use 0 to disable hardcoded concurrency and allow the Celery
worker to launch its default number of child processes (equal to the number
of CPUs detected).
``MAYAN_WORKER_MEDIUM_CONCURRENCY``
Optional. Changes the concurrency (number of child processes) of the Celery
worker consuming the queues in the medium (medium latency, long running tasks)
category. Default is 1. Use 0 to disable hardcoded concurrency and allow the
Celery worker to launch its default number of child processes (equal to the
number of CPUs detected).
``MAYAN_WORKER_SLOW_CONCURRENCY``
Optional. Changes the concurrency (number of child processes) of the Celery
worker consuming the queues in the slow (high latency, very long running tasks)
category. Default is 1. Use 0 to disable hardcoded concurrency and allow the
Celery worker to launch its default number of child processes (equal to the
number of CPUs detected).
``MAYAN_USER_UID``
Optional. Changes the UID of the ``mayan`` user internal to the Docker
container. Defaults to 1000.
``MAYAN_USER_GID``
Optional. Changes the GID of the ``mayan`` user internal to the Docker
container. Defaults to 1000.
.. _docker-accessing-outside-data:
Accessing outside data
======================
To use Mayan EDMS's staging folders or watch folders from Docker, the data
for these source must be made accessible to the container. This is done by
mounting the folders in the host computer to folders inside the container.
This is necessary because Docker containers do not have access to host data
on purpose. For example, to make a folder in the host accessible as a watch
folder, add the following to the Docker command line when starting the
container::
-v /opt/scanned_files:/scanned_files
The command line would look like this::
docker run ... -v /opt/scanned_files:/scanned_files mayanedms/mayanedms:latest
Now create a watch folder in Mayan EDMS using the path ``/scanned_files``
and the documents from the host folder ``/opt/scanned_files`` will be
automatically available. Use the same procedure to mount host folders to be
used as staging folders. In this example ``/scanned_files`` was used as the
container directory, but any path can be used as long as:
- the path not an already existing path
- the path is not used by any other program
- the path is a single level path
Performing backups
==================
To backup the existing data, stop the image and copy the content of the volume.
For the example::
docker run -d --name mayan-edms --restart=always -p 80:8000 \
-v /docker-volumes/mayan:/var/lib/mayan \
-v /opt/scanned_files:/scanned_files mayanedms/mayanedms:latest
That would be the ``/docker-volumes/mayan folder``::
sudo tar -zcvf backup.tar.gz /docker-volumes/mayan
sudo chown `whoami` backup.tar.gz
If using an external PostgreSQL or MySQL database or database containers, these
too need to be backed up using their respective procedures. A simple solution
is to copy the entire database container volume after the container has
been stopped.
Restoring from a backup
=======================
Uncompress the backup archive in the original docker volume using::
sudo tar -xvzf backup.tar.gz -C /
Upgrading
=========
Upgrading a Mayan EDMS Docker container is actually a matter of stopping and
deleting the container, downloading the most recent version of the image and
starting a container again. The container will take care of updating the
database structure to the newest version if necessary.
**IMPORTANT!** Do not delete the volume storing the data, only the container.
Stop the container to be upgraded::
docker stop mayan-edms
Remove the container::
docker rm mayan-edms
Pull the new image version::
docker pull mayanedms/mayanedms:latest
Start the container again with the new image version::
docker run -d --name mayan-edms --restart=always -p 80:8000 -v /docker-volumes/mayan:/var/lib/mayan mayanedms/mayanedms:latest
Building the image
==================
Clone the repository with::
git clone https://gitlab.com/mayan-edms/mayan-edms.git
Change to the directory of the cloned repository::
cd mayan-edms
Execute Docker's build command using the provided makefile::
make docker-build
Or using an APT cache to speed up the build::
make docker-build-with-proxy APT_PROXY=172.17.0.1:3142
Replace the IP address `172.17.0.1` with the IP address of the computer
running the APT proxy and caching service.
Customizing the image
=====================
Simple method
-------------
If you just need to add a few Ubuntu or Python packages to your installation,
you can use the following environment variables:
``MAYAN_APT_INSTALLS``
Specifies a list of Ubuntu .deb packages to be installed via APT when the
container is first created. The installed packages are not lost when the image
is stopped. Example: To install the Tesseract OCR language packs for German
and Spanish add the following in your ``docker start`` command line::
-e MAYAN_APT_INSTALLS="tesseract-ocr-deu tesseract-ocr-spa"
``MAYAN_PIP_INSTALLS``
Specifies a list of Python packages to be installed via ``pip``. Packages will
be downloaded from the Python Package Index (https://pypi.python.org) by
default.
Using Docker compose
====================
To deploy a complete production stack using the included Docker compose file
execute::
docker-compose -f docker-compose.yml up -d
This Docker compose file will provision four containers:
- Postgres as the database
- Redis as the Celery result storage
- RabbitMQ as the Celery broker
- Mayan EDMS using the above service containers
To stop the stack use::
docker-compose -f docker-compose.yml stop
The stack will also create four volumes to store the data of each container.
These are:
- mayan_app - The Mayan EDMS data container, normally called `mayan_data` when not using Docker compose.
- mayan_broker - The broker volume, in this case RabbitMQ.
- mayan_db - The database volume, in this case Postgres.
- mayan_results - The celery result backend volume, in this case Redis.
Nightly images
==============
The continuous integration pipeline used for testing development builds also
produces a resulting Docker image. These are build automatically and their
stability is not guaranteed. They should never be used in production.
If you want to try out the Docker images the development uses or want a sneak
peek at the new features being worked on checkout the container registry at:
https://gitlab.com/mayan-edms/mayan-edms/container_registry

View File

@@ -1,88 +0,0 @@
Document types
==============
The basic unit of data in Mayan EDMS is the **document type**. A document
type can be interpreted also as a document category, a document class, or a
document template. Every other aspect of the system will rely or be tied to
one or more document type. Create one document type for each type or class of
document you intend to upload into Mayan EDMS.
Document types need to be created before documents can be
uploaded. It is not possible to upload documents without assigning them a
document type.
Document types usually mirror the type of physical, paper document they
represent.
Example document types:
* Letter
* Invoice
* Timesheet
* Blueprint
.. blockdiag::
blockdiag {
default_shape = roundedbox
document_type [ label = 'each document type' ];
documents [ label = 'many documents' ];
document_type -> documents;
}
Examples:
.. blockdiag::
blockdiag {
default_shape = roundedbox
document_type [ label = 'Invoice' ];
documents_1 [ label = 'invoice_001.pdf', width=200 ];
documents_2 [ label = 'invoice_032.pdf', width=200 ];
document_type -> documents_1, documents_2;
}
.. blockdiag::
blockdiag {
default_shape = roundedbox
document_type [ label = 'Receipts' ];
documents_1 [ label = 'groceries_18-01-11.pdf', width=200 ];
documents_2 [ label = 'car_payment-17-01-02.png', width=200 ];
document_type -> documents_1, documents_2;
}
Settings and attributes are applied to document types and documents will
inherit those settings and attributes based on the document type they were
assigned when uploaded into Mayan EDMS. A document can only be of one
type at a given moment, but if needed, the type of a document can be changed.
Upon changing its type, the document will lose its previous settings and
attributes, and will inherit the settings and attributes of its new type.
Creating document types
=======================
.. admonition:: Permissions required
:class: warning
The "Create document types" permission is required for this action.
#. Go to the :menuselection:`System --> Setup --> Document types` menu.
#. From the :guilabel:`Actions` dropdown select :guilabel:`Create document type`.
#. Enter a label to be shown to users when using this document type.
#. Optional: Enter a period of time after which documents of this type will be moved to the trash.
#. Optional: Select the unit of time for the period after which the document will be moved to the trash.
#. Optional: Enter a period of time after which documents moved to the trash will be permanently deleted.
#. Optional: Select the unit of time for the period of time after which the documents moved to the trash will be permanently deleted
#. Press :guilabel:`Submit`.

View File

@@ -1,125 +0,0 @@
Index examples
--------------
Index of document types
^^^^^^^^^^^^^^^^^^^^^^^
.. admonition:: Permissions required
:class: warning
- The "Create new document indexes" permission is required for this action.
- The "Edit document indexes" permission is required for this action, globally
of via an ACL for a document index.
- The "Edit document types" permission is required for this action, globally
of via an ACL for a document type.
This index will create one level for each document type in the system and place
links to the document of each respective type.
#. Go to the :menuselection:`System --> Setup --> Indexes` menu.
#. Create a new index using :guilabel:`Actions` > :guilabel:`Create new`.
#. Give it a label to describe it, and an internal name. The internal name is
used when referencing this index in other parts of the system.
#. Press the :guilabel:`Template` link of the newly created index.
#. Select :guilabel:`New child node` to create a new level in which the
following template code will be entered.
::
{{ document.document_type }}
#. Save the template.
#. Click on :guilabel:`Document types` and associate this index with
existing document types in the system.
#. Finally go to :menuselection:`Tools --> Rebuild indexes` to execute the
index template. The rebuild process is only necessary when changes are
made to the index templates. Otherwise they update automatically whenever
a new document is uploaded or existing documents properties are modified.
#. A new index should appear under :menuselection:`Indexes` menu.
You can also program different behavior based on the different document types,
by use a comparison and a conditional statement. As the document_type itself
is not a string you cannot directly use that for that comparison. You will have
to use the label of the document type.
For example::
{% if document.document_type.label == "Invoice" or document.document_type.label == "Letter" %}
Correspondence
{% else %}
{{ document.document_type }}
{% endif %}
This will create and index level for each document type. Except for documents
of types "Invoice" and "Letter", these will now go into the level "Correspondence".
Index document by department, taken from the first character of the invoice number metadata
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Requires one index node with the template::
{% if document.metadata_value_of.invoice_number.0 == "A" %}Accounting
{% if document.metadata_value_of.invoice_number.0 == "H" %}Human Resources
{% endif %}
Nested date index from a date contained in a metadata
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Assuming the metadata type is named **date_issued** with a date format
of YYYY-MM-DD. The target is to have two levels: one for years and another
sub level for months.
**First level: Year**
::
{{ document.metadata_value_of.date_issued|slice:"0:4" }}
**Second level: Months**
::
{{ document.metadata_value_of.date_issued|slice:"5:7" }}
**Optional: Third level: Day**
::
{{ document.metadata_value_of.date_issued|slice:"8:10" }}
Index by OCR content
^^^^^^^^^^^^^^^^^^^^
This example indexes documents in a "quarterly report" level if they have the
fragment “quarterly report” in the OCR text::
{% if "quarterly report" in document.latest_version.ocr_content|join:" "|lower %}Quarterly reports{% endif %}
The same applies to text content extracted for the document::
{% if "quarterly report" in document.latest_version.content|join:" "|lower %}Quarterly reports{% endif %}
Index documents not found in any cabinet
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
{% if document.cabinets.count == 0 %}No Cabinets{% endif %}
Index documents not tagged
^^^^^^^^^^^^^^^^^^^^^^^^^^
::
{% if document.tags.count == 0 %}No Tags{% endif %}
Index documents specifically, by the year of a metadata field otherwise by their uploaded year
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
{% for tag in document.tags.all %}{% if tag.label == "Taxes" %}{% if document.metadata_value_of.tax_year|length_is:"4" %}{{ document.metadata_value_of.tax_year }}{% else %}{{ document.date_added|date:"Y" }}{% endif %}{% endif %}{% endfor %}

View File

@@ -1,36 +0,0 @@
*********
Languages
*********
The list of languages choices in the language dropdown used for documents is
based on the current ISO 639 list. This list can be quite extensive. To reduce
the number of languages available use the setting ``DOCUMENTS_LANGUAGE_CODES``,
and set it to a nested list of abbreviations. This setting can be found in the
:menuselection:`System --> Setup --> Settings --> Common` menu.
For example, to reduce the list to just English and Spanish use
::
DOCUMENTS_LANGUAGE_CODES = ('eng', 'spa')
The default language to appear on the dropdown can also be configured using::
DOCUMENTS_LANGUAGE = 'spa'
Use the correct ISO 639-3 language abbreviation (https://en.wikipedia.org/wiki/ISO_639)
as this code is used in several subsystems in Mayan EDMS such as the OCR app
to determine how to interpret the document.
If using the Docker image, these settings can also be passed to the container
as environment variables by prepending the ``MAYAN_`` suffix.
Example::
-e MAYAN_DOCUMENTS_LANGUAGE_CODES='["eng", "spa"]'
For more information check out the
:ref:`environment variables <environment_variables>` chapter of the
:doc:`../topics/settings` topic.

View File

@@ -1,22 +0,0 @@
*****************
Mailing documents
*****************
Sending emails in Mayan EDMS is controlled by two different system depending on
the type of email being sent. These are administrative emails like password
reset emails and user emails sent from the application. To configure
administrative email for things like password reset check the topic:
:doc:`../topics/administration`
Application emails
==================
To allow users to send emails or documents from within the web interface,
Mayan EDMS provides its our own email system called Mailing Profiles.
Mailing Profiles support access control per user role and can use different
email backends. Mailing Profiles are created from the
:menuselection:`System --> Setup` menu.
Once created mailing profiles allow users to send email messages from
within the user interface containing either an URL link to the document or
the actual document as an attachment.

View File

@@ -1,99 +0,0 @@
********
Metadata
********
Metadata is the name of the attribute of a document. The concept of metadata is
divided in two: **metadata types** (size, color, distance) and **metadata values** for
those types. Metadata types are defined in the setup menu and associated with
document types. Then when a document is uploaded, a value for that metadata
can be entered. There are two kinds of metadata type to document type relations:
optional and required. When a metadata type is optional for a document type,
it can be left blank for a document being uploaded and the upload will still
be successful. On the other hand required metadata type must be given a value
or it will not be possible to upload the document at hand.
Examples of metadata type: Invoice number, color, employee id.
The data entry of metadata types can be set to allow any value to be provided
(the default) or a list of possible values can be entered in the ``Lookup``
configuration option and users will be presented with a drop down list of options
instead of the default text entry box.
If metadata types are setup to allow any value to be entered a ``validation``
option can be chosen to block the entry of invalid data. Metadata types also
provide ``parsers`` which will not block the entry of data but are able to
interpret and modify the value provided by the user to a conform to a specific
format. An example of a provided parser is the date parser which will interpret
and correct dates provided by users regardless of the format in which they are
entered.
Creating metadata types
=======================
.. admonition:: Permissions required
:class: warning
The "Create new metadata types" permission is required for this action.
#. Go to the :menuselection:`System --> Setup --> Metadata types` menu.
#. From the :guilabel:`Actions` dropdown select :guilabel:`Create new`.
#. Provide a name to reference this metadata type in other parts of the system.
#. Enter a label to be shown to users when using this metadata type.
#. Optional: Enter a default value for the metadata type.
#. Optional: Provide a comma separated list of options to restrict the data entry
when using this metadata type.
#. Optional: Select a validator and a parser to validate and cleanup the data
entry when not using a predetermined list of values.
#. Press :guilabel:`Submit`.
Assigning a metadata type to a document type
============================================
.. admonition:: Permissions required
:class: warning
- The "Edit metadata types" permission is required for this action, globally or
via an ACL for a metadata type.
- Also the "Edit document type" permission
is required, globally or via an ACL for a document type.
This action can be performed in two ways.
Option 1: Via the metadata type view
------------------------------------
#. Go to the :menuselection:`System --> Setup --> Metadata types` menu.
#. Click on the button :guilabel:`Document types` of the metadata type you which
to associate.
#. From the list of existing document types press either:
- :guilabel:`None` if this metadata type will not be available for documents
of the type.
- :guilabel:`Optional` if this metadata type will be available and is
optional to provide a value for documents of the type.
- :guilabel:`Required` if this metadata type will be available and is
required to provide a value for documents of the type.
#. Press :guilabel:`Save`.
Option 2: Via the document type view
------------------------------------
#. Go to the :menuselection:`System --> Setup --> Document types` menu.
#. Click on the button :guilabel:`Metadata types` of the metadata type you which
to associate.
#. From the list of existing metadata types press either:
- :guilabel:`None` if this metadata type will not be available for documents
of the type.
- :guilabel:`Optional` if this metadata type will be available and is
optional to provide a value for documents of the type.
- :guilabel:`Required` if this metadata type will be available and is
required to provide a value for documents of the type.
#. Press :guilabel:`Save`.

View File

@@ -1,31 +0,0 @@
**************
Object storage
**************
It is possible to use object storage instead of the default filesystem based
storage. One such object storage system is Amazon S3 (Simple Storage Service)
API compatible object storage. The following steps will configure Mayan EDMS
to use a S3 style storage for documents.
1. Install the django-storages and boto3 Python libraries.
* For the direct deployment method of installation use::
pip install django-storages boto3
* or if using the Docker image, add the following the command line that runs the container::
-e MAYAN_PIP_INSTALLS='django-storages boto3'
2. From the web interface navigate to the :menuselection:`System --> Setup --> Setting --> Documents` menu.
3. Locate the **DOCUMENTS_STORAGE_BACKEND** setting, press **Edit** and enter::
storages.backends.s3boto3.S3Boto3Storage
4. Save and locate the setting **DOCUMENTS_STORAGE_BACKEND_ARGUMENTS**, press **Edit** and enter::
'{access_key: <your S3 access key>, secret_key: <your S3 secret key>, bucket_name: <S3 bucket name>}'
5. Save and restart your Mayan EDMS installation for the setting to take effect.

View File

@@ -1,38 +0,0 @@
**************
Password reset
**************
To use the password reset feature, administrative emails need to be configured.
These are sent by the system itself and not by the users. Their usage and
configuration is different than the
:doc:`email system used to share documents via email<../chapters/mailing>`.
Sending administrative emails
=============================
To be able to send password reset emails configure the Django email settings
via the :ref:`configuration file <configuration_file>`.
Example::
EMAIL_BACKEND: django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST: '<your smtp ip address or hostname>'
EMAIL_HOST_PASSWORD: '<your smtp password>'
EMAIL_HOST_USER: '<your smtp username>'
EMAIL_PORT: 25 # or 587 or your server's SMTP port
EMAIL_TIMEOUT:
EMAIL_USE_SSL: true
EMAIL_USE_TLS: false
To change the reference URL in the password reset emails on in the
default document mailing template modify the ``COMMON_PROJECT_URL`` setting.
For information on the different ways to change a setting check the
:doc:`../topics/settings` topic.
To test the email settings use the management command ``sendtestemail``.
Example::
mayan-edms.py sendtestemail myself@example.com

View File

@@ -1,70 +0,0 @@
************
Quick labels
************
Quick labels are predetermined filenames that allow the quick renaming of
documents as they are uploaded or after they have been uploaded.
Quick labels are added and associated to a document type.
Example of quick label: Invoice, Receipt from X store, Purchase order.
It is possible to preserve the file extension when using quick labels.
Extensions are required for some operating system to be able to detect the
correct file type to access the content.
For example if a document file is named "file0001.pdf" and the quick label
"Receipt from X store" is applied, the resulting document label will be
"Receipt from X store.pdf".
Creating quick labels
=====================
.. admonition:: Permissions required
:class: warning
The "Edit document types" permission is required for this action, either
globally or via an ACL for a document type.
Since quick labels are associated with document types, creating quick labels
must be done from the document type view.
#. Go to the :menuselection:`System --> Setup --> Document types` menu.
#. In the document type list, click on the :guilabel:`Quick labels` button of
the document type for which you wish to create a quick label.
#. In the view titled "Quick labels for document type: <your document type>",
from the :guilabel:`Actions` dropdown select :guilabel:`Add quick label to document type`.
#. At the quick label creation form enter the desired label and press :guilabel:`Save`.
Using quick labels during upload
================================
#. Use the new document upload wizard from :menuselection:`Documents --> New document`.
#. Select a document type and navigate to the penultimate step, where you have
the option to drag and drop files to upload.
#. Select a an option from the :guilabel:`Quick document rename` dropdown.
#. Optionally select the :guilabel:`Preserve extension` checkbox to keep the file
extension.
#. Upload your documents.
Using quick labels for existing documents
=========================================
.. admonition:: Permissions required
:class: warning
The "Edit document properties" permission is required for this action, either
globally or via an ACL for a document or document type.
#. Navigate to the document preview view of the document to rename. Make sure
quick labels for the document type of the document select have been created.
#. From the :guilabel:`Actions` dropdown select :guilabel:`Edit Properties`.
#. Select a an option from the :guilabel:`Quick document rename` dropdown.
#. Optionally select the :guilabel:`Preserve extension` checkbox to keep the file
extension.
#. Press :guilabel:`Save` to rename the document.

View File

@@ -1,155 +0,0 @@
**********
Scaling up
**********
The default installation method fits most use cases. If you use case requires
more speed or capacity here are some suggestion that can help you improve the
performance of your installation.
Change the database manager
===========================
Use PostgreSQL or MySQL as the database manager.
Tweak the memory setting of the database manager to increase memory allocation.
More PostgreSQL specific examples are available in their wiki page:
https://wiki.postgresql.org/wiki/Performance_Optimization
Increase the number of Gunicorn workers
=======================================
The Gunicorn workers process HTTP requests and affect the speed at which the
website responds.
If you are using the Docker image, change the value of the
``MAYAN_GUNICORN_WORKERS`` environment variable (check the Docker image chapter:
:ref:`docker_environment_variables`). Normally this variable defaults to 2.
Increase this number to match the number of CPU cores + 1.
If you are using the direct deployment methods, change the line that reads::
command = /opt/mayan-edms/bin/gunicorn -w 2 mayan.wsgi --max-requests 500 --max-requests-jitter 50 --worker-class gevent --bind 0.0.0.0:8000 --timeout 120
And increase the value of the ``-w 2`` argument. This line is found in the
``[program:mayan-gunicorn]`` section of the supervisor configuration file.
Background task processing
==========================
The Celery workers are system processes that take care of the background
tasks requested by the frontend interactions like document image rendering
and periodic tasks like OCR. There are several dozen tasks defined in the code.
These tasks are divided into queues based on the app of the relationship
between the tasks. The queues by default are divided into three groups
based on the speed at which they need to be processed. The document page
image rendering for example is categorized as a high volume, short duration
task. The OCR is a high volume, long duration task. Email checking is a
low volume, medium duration tasks. It is not advisable to have the same
worker processing OCR to process image rendering too. If the worker is
processing several OCR tasks it will not be able to provide fast images
when an user is browsing the user interface. This is why by default the
queues are split into 3 workers: fast, medium, and slow. Each worker will handle
queues based on the latency required by each queue group.
Optimizations
-------------
* Increase the number of workers and redistribute the queues among them
(only possible with direct deployments).
* Launch more workers to service a queue. For example for faster document
image generation launch 2 workers to process the converter queue only
possible with direct deployments).
* By default each worker process uses 1 thread. You can increase the thread
count of each worker process with the Docker environment options:
* ``MAYAN_WORKER_FAST_CONCURRENCY``
* ``MAYAN_WORKER_MEDIUM_CONCURRENCY``
* ``MAYAN_WORKER_SLOW_CONCURRENCY``
* If using direct deployment, increase the value of the ``--concurrency=1``
argument of each worker in the supervisor file. You can also remove this
argument and let the Celery algorithm choose the number of threads to
launch. Usually this defaults to the number of CPU cores + 1.
Change the message broker
=========================
Messages are the method of communication between front end interactive code
and background tasks. In this regard messages can be thought as homologous
to tasks requests. Improving how many messages can be sent, stored and
sorted will impact the number of tasks the system can handle. To save on
memory, the basic deployment method and the Docker image default to using
Redis as a message broker. To increase capacity and reduce volatility of
messages (pending tasks are not lost during shutdown) use RabbitMQ to
shuffle messages.
For direct installs refer to the :ref:`deployment_advanced` documentation
section for the required changes.
For the Docker image, launch a separate RabbitMQ container
(https://hub.docker.com/_/rabbitmq/)::
docker run -d --name mayan-edms-rabbitmq -e RABBITMQ_DEFAULT_USER=mayan -e RABBITMQ_DEFAULT_PASS=mayanrabbitmqpassword -e RABBITMQ_DEFAULT_VHOST=mayan rabbitmq:3
Pass the MAYAN_BROKER_URL environment variable (https://kombu.readthedocs.io/en/latest/userguide/connections.html#connection-urls)
to the Mayan EDMS container so that it uses the RabbitMQ container the
message broker::
-e MAYAN_BROKER_URL="amqp://mayan:mayanrabbitmqpassword@localhost:5672/mayan",
When tasks finish, they leave behind a return status or the result of a
calculation, these are stored for a while so that whoever requested the
background task, is able retrieve the result. These results are stored in the
result storage. By default a Redis server is launched inside the Mayan EDMS
container. You can launch a separate Docker Redis container and tell the Mayan
EDMS container to use this via the ``MAYAN_CELERY_RESULT_BACKEND`` environment
variable. The format of this variable is explained here: http://docs.celeryproject.org/en/3.1/configuration.html#celery-result-backend
Deployment type
===============
Docker provides a faster deployment and the overhead is not high on modern
systems. It is however memory and CPU limited by default and you need to
increase this limits. The settings to change the container resource limits
are here: https://docs.docker.com/config/containers/resource_constraints/#limit-a-containers-access-to-memory
For the best performance possible use the advanced deployment method on a
host dedicated to serving only Mayan EDMS.
Storage
=======
For best input and output speed use a block based local filesystem on an
SSD drive for the ``/media`` sub folder. The location of the ``/media`` folder
will be specified by the ``MEDIA_ROOT`` setting.
If capacity is your bottom line, switch to an
:doc:`object storage <../chapters/object_storage>` system.
Use additional hosts
====================
When one host is not enough you can use multiple hosts and share the load.
Make sure that all hosts share the ``/media`` folder as specified by the
``MEDIA_ROOT`` setting, also the database, the broker, and the result storage.
One setting that needs to be changed in this configuration is the lock
manager backend.
Resource locking is a technique to avoid two processes or tasks to modify
the same resource at the same time causing a race condition. Mayan EDMS uses
its own lock manager. By default the lock manager with use a simple file
based lock backend ideal for single host installations. For multiple hosts
installation the database backend must be used in other to coordinate the
resource locks between the different hosts over a share data medium. This is
accomplished by modifying the environment variable ``LOCK_MANAGER_BACKEND`` in
both the direct deployment or the Docker image. Use the value
``lock_manager.backends.model_lock.ModelLock`` to switch to the database
resource lock backend. If you can also write your own lock manager backend
for other data sharing mediums with better performance than a relational
database like Redis, Memcached, Zoo Keeper.

View File

@@ -1,113 +0,0 @@
********
Settings
********
Mayan EDMS can be configure via environment variables or by setting files.
.. _environment_variables:
Via environment variables
=========================
To use environment variables, lookup the name of the setting you want to
override in the "Settings" menu. The "Settings" menu is located inside the
"Setup" main menu. To pass a value via an environment variable append
``"MAYAN_"`` to the name of the settings option. For example, to change
the number of documents displayed per page (COMMON_PAGINATE_BY, by default 40),
use::
export MAYAN_COMMON_PAGINATE_BY=10
Restart Mayan EDMS and the new value will take effect. The "Settings" menu
can be used to verify if the overridden setting value is being interpreted
correctly.
.. _configuration_file:
Via YAML configuration file
===========================
.. versionadded:: 3.1
It is possible to modify the different settings by creating or editing the
``media/config.yml`` file. This file is formatted in the YAML markup language (
http://yaml.org/). Here is an example of what the looks like::
DOCUMENT_PARSING_AUTO_PARSING: true
DOCUMENT_PARSING_PDFTOTEXT_PATH: /usr/bin/pdftotext
EMAIL_BACKEND: django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST: localhost
EMAIL_HOST_PASSWORD: ''
EMAIL_HOST_USER: ''
EMAIL_PORT: 25
EMAIL_TIMEOUT: null
EMAIL_USE_SSL: false
EMAIL_USE_TLS: false
FILE_UPLOAD_MAX_MEMORY_SIZE: 2621440
HOME_VIEW: common:home
Every time Mayan EDMS is able to start correctly it will copy the ``config.yml``
and create a backup copy in the same directory named ``config_backup.yml``.
This file is used to revert to the last know configuration file known
to be valid. You can revert manually by copy the file or by using the
``revertsettings`` management command from the command line.
Via Python settings files
=========================
Another way to configure Mayan EDMS is via Python-style, settings files.
If Mayan EDMS was installed using the Python package a ``mayan_settings``
folder will created for this purpose. If you installed Mayan EDMS
according to the :doc:`../chapters/deploying` instructions provided in this
documentation your ``mayan_settings`` folder should be located in the directory:
``/usr/share/mayan-edms/mayan/media/mayan_settings``.
If Mayan EDMS was installed using Docker, the ``mayan_settings`` folder
will be found inside the install Docker volume. If you installed Mayan EDMS
according to the :doc:`../chapters/docker` instructions provided in this
documentation your ``mayan_settings`` folder should be located in the directory:
``/docker-volumes/mayan/mayan_settings``.
Create a file with any valid name and a ``.py`` extension in the
``mayan_settings`` folder. The file must starts with a global import of
``mayan.settings.production``. In the form::
from mayan.settings.production import *
Now add the corresponding lines to override the default settings.
In the settings file, it is not necessary to prepend the string ``MAYAN_`` to
the setting option. For example, to change the number of documents displayed
per page (COMMON_PAGINATE_BY, by default 40),
use::
COMMON_PAGINATE_BY=10
versus::
export MAYAN_COMMON_PAGINATE_BY=10
when using the environment variable method.
For this example let's assume the file was saved with the name ``mysettings.py``.
The way used to tell Mayan EDMS to import this file will vary based on the
installation method.
For the :doc:`../chapters/deploying` method, the full import path will be
``mayan.media.mayan_settings.mysettings`` and can be passed via the
``--settings`` command line argument like this::
python manage.py runserver --settings=mayan.media.mayan_settings.mysettings
or via the ``DJANGO_SETTINGS_MODULE`` environment variable like this::
export DJANGO_SETTINGS_MODULE=mayan.media.mayan_settings.mysettings
For the :doc:`../chapters/docker` installation method, the full import path will be
``mayan_settings.mysettings`` and can only be passed via the
``MAYAN_SETTINGS_MODULE`` environment variable like this::
docker run <...> -e MAYAN_SETTINGS_MODULE=mayan_settings.mysettings

View File

@@ -1,80 +0,0 @@
Sources
=======
Document sources define places from which documents can be uploaded or gathered.
The current document sources supported are:
- Web - ``HTML`` forms with a ``Browse`` button that will open the file dialog
when clicked to allow selection of files in the user's computer to be
uploaded as documents.
- POP3 email - Provide the email, server and credential of a ``POP3`` based
email to be scanned periodically for email. The body of the email is uploaded
as a document and the attachments of the email are uploaded as separate
documents.
- IMAP email - Same as the ``POP3`` email source but for email accounts using
the ``IMAP`` protocol.
- Watch folder - A filesystem folder that is scanned periodically for files.
Any file in the watch folder is automatically uploaded. When the upload for a
file is completed, the file is removed from source folder.
- Staging folder - Folder where networked attached scanned can save image
files. The files in these staging folders are scanned and a preview is
generated to help the process of upload. Staging folders and Watch folders
work in a similar way with the main difference being that Staging folders are
interactive while Watch folders are automatic; documents in a Watch folder
are uploaded periodically and documents in a Staging folder remain indefinitely
there until an user uploads them. A preview for files in a Staging folder is
also provided. An example of Staging folder use is when multiple people
are scanning documents but only one person must be allowed to upload those
documents. This one person examines the scans quality and decides what to
upload and what to reject and have re-scanned. Watch folders can be used
when the quality of the scans is irrelevant or when they will be known
to be of good quality, such as when receiving e-faxes as PDFs.
.. blockdiag::
blockdiag {
mayan [shape = "roundedbox", label = "Mayan EDMS" ];
email_pop3 [shape = "mail", label = "e-mail (POP3)"];
email_imap [shape = "mail", label = "e-mail (IMAP)"];
staging [shape = "flowchart.database", label = "Staging folder" ];
watch [shape = "flowchart.database", label = "Watch folder" ];
automatic [shape = "box", label = "Automatic\n(via schedule)" ];
manual [shape = "actor", height=60, label = "Manual\n(user interaction)" ];
web [shape = "note", label = "Webform upload" ];
automatic -> mayan;
email_pop3 -> automatic;
email_imap -> automatic;
watch -> automatic;
manual -> mayan;
staging -> manual;
web -> manual;
}
Document sources can be configure to allow document bundles to uploaded as
compressed files which are decompressed and their content uploaded as separate
documents. This feature is useful when migrating from another document
manager system.
.. note::
If you deployed a Mayan EDMS Docker container and want to use watched folders
or staging folder, refer to the Docker chapter :ref:`docker-accessing-outside-data`.
Creating new sources
====================
.. admonition:: Permissions required
:class: warning
The "Create new document sources" permission is required for this action.
#. Go to the :menuselection:`System --> Setup --> Sources` menu.
#. From the :guilabel:`Actions` dropdown select the new type of source to create.
#. Each source type will have different fields to customize its behavior. Enter
the required information in each field based on the help text provided.
#. Press :guilabel:`Save`.

View File

@@ -1,46 +0,0 @@
Tags
====
Tags are color coded properties that can be attached or removed from documents.
Tags allow giving documents a binary property. Documents can also be tagged
with more than one tag.
Once tagged, documents can be searched by their tags. It is also possible to
show all the documents tagged with a particular
tag via the **Documents** link of each tag.
To view, add, or remove tags from a specific document, go to the document view
and click on the **Tags** tab. This view will show the current tags of a
document. The **Actions** menu will now show two new options: one to attach
more tags to the document and another to remove tags from the document.
It is also possible to tag documents in bulk by selecting several documents
from any view that displays a list documents and selecting the **Attach tag**
or **Remove tags** from the dropdown menu.
Creating tags
=============
.. admonition:: Permissions required
:class: warning
The "Create new tags" permission is required for this action.
#. Go to the :menuselection:`Tags --> Create` menu.
#. Enter a label to identify the tag.
#. Select a color for the tag.
#. Press :guilabel:`Submit`.
View all tags
=============
.. admonition:: Permissions required
:class: warning
The "View tags" permission is required for this action, globally or via an
ACL for a tag.
#. Go to the :menuselection:`Tags --> All` menu.

View File

@@ -1,80 +0,0 @@
*******************
Document versioning
*******************
Mayan EDMS has the ability to store different versions of the same
document. A comment field is provided to allow users to summarize the new
version changes in comparison with the previous one. If a new version was
uploaded by mistake or such new version is no longer necessary the option to
revert to a previous version of the document is provided.
.. blockdiag::
blockdiag {
default_shape = roundedbox
orientation = portrait
node_width = 200;
version_1 [ label = "Version 1" ];
version_2 [ label = "Version 2" ];
document_1 [ label = "payroll_report.pdf" ];
document_2 [ label = "payroll_report_fixed.pdf" ];
upload_1 [ label = "payroll_report.pdf" ];
upload_2 [ label = "payroll_report_fixed.pdf" ];
upload_1 -> version_1 -> document_1;
upload_2 -> version_2 -> document_2;
document_1 -> document_2;
}
Only the interactive document sources (:doc:`../chapters/sources`)
(``Web`` and ``Staging folders``) are available to upload new document versions.
There is no limit to the number of versions a document can have.
.. blockdiag::
blockdiag {
default_shape = roundedbox
orientation = portrait
node_width = 200;
document [ label = "payroll_report.pdf" ];
versions [ label = "Versions", stacked ];
document -> versions;
}
By default, the last version will be showed when working with the document
but any of the versions can be inspected and viewed.
View a document version list
============================
.. admonition:: Permissions required
:class: warning
The "View documents' versions list" permission is required for this action,
either globally or via an ACL for a document or document type.
#. Navigate to the select document's preview view.
#. Click on the sibebar's :guilabel:`Versions` button.
Uploading a new document version
================================
.. admonition:: Permissions required
:class: warning
The "Create new document versions" permission is required for this action,
either globally or via an ACL for a document or document type.
#. Navigate to the select document's versions list view.
#. From the :guilabel:`Actions` dropdown select :guilabel:`Upload new version`.
#. Optionally type a comment explaining the changes in the new version.
#. Press the :guilabel:`Browse` button and select a new file.
#. Press :guilabel:`Save` upload the new version.

View File

@@ -1,113 +0,0 @@
*********
Workflows
*********
Introduction
============
Workflows provide a structured method for storing a sequence of states over
which the a document will progress. Workflows keep track how a document has
been processed so far.
Workflows work by storing a series of states to help you know the "status"
of a document. To move a workflow from one state to another, transitions are
used.
Transitions connect two different states and help provide context to know
which state is possible to transition to, from a previous state. Transitions
provide and order for the sequence of possible states changes.
Transitions can be executed manually by users if they have the required access
level as configure by the system administrator.
.. blockdiag::
:caption: Example workflow. Circles represent states, rectangles represent transitions.
span_width = 30;
submitted [shape = circle, width = 60, height = 60];
approved [shape = circle, width = 60, height = 60];
rejected [shape = circle, width = 60, height = 60];
archived [shape = circle, width = 60, height = 60];
approve [label = approve];
reject [label = reject];
reopen [label = "re-open"];
submitted -> approve -> approved;
approved -> archived;
submitted -> reject -> rejected;
rejected -> archived;
archived -> reopen -> submitted;
Workflows in Mayan EDMS are implemented as finite state machines
(https://en.wikipedia.org/wiki/Finite-state_machine).
Workflows are mainly used to represent business processes. But they can also be
used an automation system to customized Mayan EDMS and have it perform some
tasks automatically.
Automation
==========
Besides being able to be executed manually by users, transitions can also be
programmed execute automatically based on system events. This is called in
Mayan EDMS transition triggering and is one of the tools available to
automate business processes.
For example:
* Move a document from a "scanned" state to a "billed" state
when a tag is attached to the document.
* Move a document from a "uploaded" state to a "OCR ready" state
when the OCR engine finishes processing the document.
The other tool provided for process automation is being able to execute an
action when a workflow state is reached or leaved. These are called state
events.
Some examples of state actions currently provided are:
* Attach a tag to a document
* Remove a tag from a document
* Do an HTTP POST request to an external IP address
* Edit the label or the description of a document.
Other time more state actions are being added. Some state actions like the one
that creates an HTTP POST request allow Mayan EDMS to trigger processes in
external systems based on the state of a document. One example of this is
triggering the billing process of an accounting system when an invoice is
scanned in Mayan EDMS.
Workflow state actions and transitions triggers are new features and are still
evolving.
Workflows allow translating business logic into a series of states. With the
addition of state actions and transition triggers, the workflows in Mayan EDMS
are no longer just informative but can be part of your actual business
automation process.
Implementation
==============
Internally, workflows are implemented as a finite state machines
(https://en.wikipedia.org/wiki/Finite-state_machine). To make them simpler to
use, workflow have been designed so that only one state can be the current
active state for a workflow being executed. Another design decision is that
every workflow needs at least one state marked as the initial state.
Visualizations
==============
The graphical representation of a workflow is similar to a flowchart. The
states are represented with circles. The transitions are represented with
arrows. Circle with a double border represent the initial state of the workflow.
To view the graphical representations of workflow use **Preview** button of
the workflow in the setup view.

View File

@@ -22,9 +22,7 @@ import mayan
# If extensions (or modules to document with autodoc) are in another directory, # If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the # add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here. # documentation root, use os.path.abspath to make it absolute, like shown here.
sys.path.append( sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "_ext")))
os.path.abspath(os.path.join(os.path.dirname(__file__), '_ext'))
)
# -- General configuration ----------------------------------------------------- # -- General configuration -----------------------------------------------------
@@ -35,14 +33,11 @@ sys.path.append(
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
#extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode'] #extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode']
#extensions = ["djangodocs", "sphinx.ext.intersphinx"] #extensions = ["djangodocs", "sphinx.ext.intersphinx"]
extensions = [ extensions = ['sphinxcontrib.blockdiag']
'sphinx.ext.extlinks', 'sphinxcontrib.blockdiag',
'sphinxcontrib.spelling'
]
blockdiag_antialias = True blockdiag_antialias = True
blockdiag_html_image_format = 'SVG' blockdiag_html_image_format = "SVG"
blockdiag_latex_image_format = 'PDF' blockdiag_latex_image_format = "PDF"
# Add any paths that contain templates here, relative to this directory. # Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates'] templates_path = ['_templates']
@@ -109,14 +104,12 @@ pygments_style = 'sphinx'
# The theme to use for HTML and HTML Help pages. See the documentation for # The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes. # a list of builtin themes.
html_theme = 'sphinx_rtd_theme' html_theme = 'classic'
# Theme options are theme-specific and customize the look and feel of a theme # Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the # further. For a list of options available for each theme, see the
# documentation. # documentation.
html_theme_options = { #html_theme_options = {}
'analytics_id': 'UA-52965619-6',
}
# Add any paths that contain custom themes here, relative to this directory. # Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = [] #html_theme_path = []
@@ -144,7 +137,7 @@ html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format. # using the given strftime format.
html_last_updated_fmt = '%b %d, %Y' #html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to # If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities. # typographically correct entities.
@@ -167,7 +160,7 @@ html_last_updated_fmt = '%b %d, %Y'
#html_split_index = False #html_split_index = False
# If true, links to the reST sources are added to the pages. # If true, links to the reST sources are added to the pages.
html_show_sourcelink = False #html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. # If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True #html_show_sphinx = True
@@ -186,6 +179,8 @@ html_show_sourcelink = False
# Output file base name for HTML help builder. # Output file base name for HTML help builder.
htmlhelp_basename = 'MayanEDMSdoc' htmlhelp_basename = 'MayanEDMSdoc'
html_show_sourcelink = False
html_show_sphinx = False html_show_sphinx = False
# -- Options for LaTeX output -------------------------------------------------- # -- Options for LaTeX output --------------------------------------------------
@@ -236,24 +231,4 @@ man_pages = [
[mayan.__author__], 1) [mayan.__author__], 1)
] ]
# -- External links -- html_theme = 'sphinx_rtd_theme'
extlinks = {
'django-docs': (
'https://docs.djangoproject.com/en/{}/%s'.format(
mayan.__django_version__
), 'Django documentation section: '
),
'forum-topic': (
'https://forum.mayan-edms.com/viewtopic.php?t=%s', 'Forum topic #'
),
'github-issue': (
'https://github.com/mayan-edms/mayan-edms/issues/%s', 'GitHub issue #'
),
'gitlab-issue': (
'https://gitlab.com/mayan-edms/mayan-edms/issues/%s', 'GitLab issue #'
)
}
def setup(app):
app.add_stylesheet('css/custom.css')

View File

@@ -17,25 +17,45 @@ repository for electronic documents.
.. toctree:: .. toctree::
:hidden: :hidden:
topics/features Installation <topics/installation>
topics/installation Features <topics/features>
releases/index Release notes and upgrading <releases/index>
topics/getting_started
topics/adding_documents ACLs <topics/acls>
topics/access_control Backups <topics/backups>
topics/categorization Checkouts <topics/checkouts>
topics/collaboration Document types <topics/document_types>
topics/settings File storage <topics/file_storage>
topics/storage Document indexes <topics/indexes>
topics/integration Document languages <topics/languages>
topics/docker Document signatures <topics/signatures>
topics/advanced Mailing <topics/mailing>
topics/administration Metadata <topics/metadata>
topics/troubleshooting OCR <topics/ocr_backend>
topics/development Permissions <topics/permissions>
topics/faq Settings <topics/settings>
topics/license Sources <topics/sources>
topics/contact Smart links <topics/smart_links>
Tags <topics/tags>
Transformations <topics/transformations>
Upload wizard <topics/upload_wizard>
Versioning <topics/versioning>
Docker image <topics/docker>
Advanced deployment <topics/deploying>
Development <topics/development>
App creation <topics/app_creation>
Pending work <topics/pending_work>
Code statistics <topics/code_statistics>
Translations <topics/translations>
Licensing <topics/license>
FAQ <topics/faq>
Contact <topics/contact>
MERCs <mercs/index>
Pending work <topics/pending_work>
Individual Contributor Assignment Agreement <topics/caa_individual>
Entity Contributor Assignment Agreement <topics/caa_entity>
.. _Docker: https://www.docker.com/ .. _Docker: https://www.docker.com/
.. _Django: http://www.djangoproject.com/ .. _Django: http://www.djangoproject.com/

View File

@@ -1,5 +1,6 @@
==============================
MERC 1: Purpose and Guidelines MERC 1: Purpose and Guidelines
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ==============================
:MERC: 1 :MERC: 1
:Author: Michael Price :Author: Michael Price
@@ -31,9 +32,9 @@ for Mayan EDMS. Most MERCs will be Feature MERCs.
2. An **Informational** MERC describes a Mayan EDMS design issue, or 2. An **Informational** MERC describes a Mayan EDMS design issue, or
provides general guidelines or information to the Mayan EDMS community, provides general guidelines or information to the Mayan EDMS community,
but does not propose a new feature. Informational MERCs do not but does not propose a new feature. Informational MERCs do not
necessarily represent a community consensus or recommendation, so users necessarily represent a community consensus or
and implementers are free to ignore Informational MERCs or follow their recommendation, so users and implementers are free to ignore
advice. Informational MERCs or follow their advice.
3. A **Process** MERC describes a process surrounding Mayan EDMS, or 3. A **Process** MERC describes a process surrounding Mayan EDMS, or
proposes a change to (or an event in) a process. Process MERCs are proposes a change to (or an event in) a process. Process MERCs are

View File

@@ -1,6 +1,6 @@
==================== =====================
MERC 2: Test writing MERC 2: Test writing
==================== =====================
:MERC: 2 :MERC: 2
:Author: Michael Price :Author: Michael Price

View File

@@ -1,5 +1,5 @@
================================== ==================================
MERC 3: Using JavaScript libraries MERC 3: Using javascript libraries
================================== ==================================
:MERC: 3 :MERC: 3
@@ -17,13 +17,13 @@ MERC 3: Using JavaScript libraries
Abstract Abstract
======== ========
This MERC proposes a standard way to use JavaScript libraries. This MERC proposes a standard way to use javascript libraries.
Rationale Rationale
========= =========
Mayan EDMS uses several JavaScript libraries for user interface features. Mayan EDMS uses several javascript libraries for user interface features.
Currently, the libraries are not installed using any JavaScript package Currently, the libraries are not installed using any javascript package
manager but copied uncompressed. Installing the libraries in this manner manager but copied uncompressed. Installing the libraries in this manner
carries some disadvantages. carries some disadvantages.
@@ -32,7 +32,7 @@ Motivation
The inclusion of the libraries in source form is required by many licenses The inclusion of the libraries in source form is required by many licenses
if the library is not installed by a package manager in distributable form. if the library is not installed by a package manager in distributable form.
There are several disadvantages with the current approach: There are several disavantages with the current approach:
1. Having the library in source form means that the entire weight of the 1. Having the library in source form means that the entire weight of the
library's size carries over the overall size of the Mayan EDMS distribution files. library's size carries over the overall size of the Mayan EDMS distribution files.
@@ -42,7 +42,7 @@ There are several disadvantages with the current approach:
installed in the project and manually searching, downloading, compressing installed in the project and manually searching, downloading, compressing
and adding the files to the repository. and adding the files to the repository.
3. The source form of the libraries includes normal and minified versions 3. The source form of the libraries includes normal and minified versions
of the code and the accompanying CSS files. There is no define preference of the code and the accompaning CSS files. There is no define preference
and through the project both versions of the libraries are loaded and through the project both versions of the libraries are loaded
interchangeably. Using a packager manager the minified version would be interchangeably. Using a packager manager the minified version would be
used of a pipeline to minify the installed libraries should be added. used of a pipeline to minify the installed libraries should be added.
@@ -58,10 +58,10 @@ Specification
Changes needed: Changes needed:
1. Python based JavaScript package manager. Alternatively a Python wrapper 1. Python based javascript package manager. Alternatively a Python wrapper
for a JavaScript package manager could be used. for a javascript package manager could be used.
2. Package manifest for the JavaScript libraries used. 2. Package manifest for the javascript libraries used.
3. Installation pipeline to install the JavaScript libraries during the 3. Installation pipeline to install the javascript libraries during the
installation and setup of the project. installation and setup of the project.
References: References:

View File

@@ -1,46 +0,0 @@
=====================
MERC 4: Support forum
=====================
:MERC: 4
:Author: Michael Price
:Status: Accepted
:Type: Process
:Created: 2018-02-27
:Last-Modified: 2018-09-04
.. contents:: Table of Contents
:depth: 3
:local:
Abstract
========
This MERC proposes the move of the official community meeting place
from Google Group to a self hosted forum platform.
Motivation
==========
Google Groups is not a proper forum platform and as such is lacking many
features that would increase participation. Google Groups has not had any
significant update in years and the age of the platform is visible. There
are no official mobile apps for Google Groups, no responsible template
is not provided. There are not integration options. These factors
contribute to the problems of knowledge dilution and one time
participation being experienced in the Mayan EDMS community.
Other concerns for moving the community to a self hosted forum solution
are that Google Groups presents a single point of failure by relying on
a free product hosted by a commercial company with no continuation plan
for the product. Google Groups doesn't provide archiving features and
the current archive solution relies on other third party services, one
of which (GMANE) has stopped working. Recent user privacy and censorship
issues regarding Google, reinforce the need for a self hosted solution.
Specification
=============
Platform chosen was phpBB. Factors were: written in PHP, ease of installation,
compatible with several database managers, mature, extensive development history.

View File

@@ -1,149 +0,0 @@
==========================
MERC 5: Explicit arguments
==========================
:MERC: 5
:Author: Roberto Rosario
:Status: Accepted
:Type: Feature
:Created: 2018-12-30
:Last-Modified: 2018-12-31
.. contents:: Table of Contents
:depth: 3
:local:
Abstract
========
This MERC proposes the adoption of a new methodology when performing calls.
It seeks to reduce the use of positional arguments in favor of keyword
arguments in as many places as possible.
Motivation
==========
As the project grows, legibility of code becomes more important. Keyword
argument help document the use of services, classes and functions. Refactors
that affect the interface of services are also easier to find and update and
fix. Positional argument can cause a call to continue working as long as the
datatype of the argument remains the same. Usage of keyword arguments will
automatically raise and error that will prevent such situations. Keyword
argument further eliminate the relevance of position or the arguments, and
the arguments can be sorted alphabetically for easier visual scanning or by
semantic significance improving code readability.
Specification
=============
Adoption of this MERC will require an audit of existing calls and the use
of the method proposed for new calls. Every call regardless of the type or
origin of the source callable will name each argument used. By type it is
meant: classes, functions, methods. Origin means: local from the project,
from the framework, third party libraries or the standard library.
Backwards Compatibility
=======================
No backwards compatibility issues are expected. New errors arising from the use
if keyword arguments could be interpreted as existing latent issues that
have not been uncovered.
Reference Implementation
========================
Example:
Before:
.. code-block:: python
from mayan.apps.common.classes import Template
Template(
'menu_main', 'appearance/menu_main.html'
)
After:
.. code-block:: python
from mayan.apps.common.classes import Template
Template(
name='menu_main', template_name='appearance/menu_main.html'
)
When calls use a mixture or positional and keyword arguments, the keywords
arguments can only be found after the positional arguments. Complete use
of keyword arguments allow the reposition of arguments for semantic
purposes.
Example:
Before:
.. code-block:: python
from django.conf.urls import url
from .views import AboutView, HomeView, RootView
urlpatterns = [
url(r'^$', RootView.as_view(), name='root'),
url(r'^home/$', HomeView.as_view(), name='home'),
url(r'^about/$', AboutView.as_view(), name='about_view'),
]
After:
.. code-block:: python
from django.conf.urls import url
from .views import AboutView, HomeView, RootView
urlpatterns = [
url(regex=r'^$', name='root', view=RootView.as_view()),
url(regex=r'^home/$', name='home', view=HomeView.as_view()),
url(regex=r'^about/$', name='about_view', view=AboutView.as_view()),
]
Keyword arguments should also be used for callables that pass those to others
down the line like Django's ``reverse`` function. Any change to the name of
the ``pk`` URL parameter will raise an exception in this code alerting to
any possible incompatible use.
Example:
.. code-block:: python
def get_absolute_url(self):
return reverse(
viewname='documents:document_preview', kwargs={'pk': self.pk}
)
This becomes even more important when multiple URL parameters are used. Since
the API documentation is auto generated from the code itself, it would make
sense to rename the first URL parameter from ``pk`` to ``document_pk``. Such
change will cause all address to view resolutions to break forcing their
update and allowing all consumers' interface usage to remain synchronized to the
callable's interface.
.. code-block:: python
url(
regex=r'^documents/(?P<pk>[0-9]+)/versions/(?P<document_version_pk>[0-9]+)/pages/(?P<document_page_pk>[0-9]+)/image/$',
name='documentpage-image', view=APIDocumentPageImageView.as_view()
),

View File

@@ -1,81 +0,0 @@
==================================
MERC 6: Lower information disclose
==================================
:MERC: 6
:Author: Michael Price
:Status: Accepted
:Type: Feature
:Created: 2018-12-30
:Last-Modified: 2018-12-31
.. contents:: Table of Contents
:depth: 3
:local:
Abstract
========
This MERC proposes the use of errors that don't disclose the existence of a
resource in the event that the requester doesn't have the required credentials.
Motivation
==========
When an user tries to perform an action like opening a view to a document for
which the required permission is missing, a permission required or access
denied error is presented. This is semantically correct, but from the stand
point of security it is still failing because it is letting the user know
that such document exists in the first place. This MERC proposes changing the
error message for existing resource to one that doesn't divulge any information
to unauthorized parties, like "Not Found".
Specification
=============
Out of the 4 basic CRUD operations, Read, Update and Delete should return an
HTTP 404 error instead of an HTTP 403 error. Only the Create operation will
continue returning the current HTTP 403 error, unless it is creating a
new resource that is related to an existing resource.
Since most view use the internal custom CRUD classes making a change to the
``ObjectPermissionCheckMixin`` class to raise an HTTP 404 on object access
failure will fulfill the proposal of this MERC.
Adding the ``object_permission_raise_404`` class attribute and setting it
to default to False will allow fulfilling the goal of this MERC while
keeping the existing functionality intact.
Example:
.. code-block:: python
class ObjectPermissionCheckMixin(object):
"""
If object_permission_raise_404 is True an HTTP 404 error will be raised
instead of the normal 403.
"""
object_permission = None
object_permission_raise_404 = False
def get_permission_object(self):
return self.get_object()
def dispatch(self, request, *args, **kwargs):
if self.object_permission:
try:
AccessControlList.objects.check_access(
permissions=self.object_permission, user=request.user,
obj=self.get_permission_object(),
related=getattr(self, 'object_permission_related', None)
)
except PermissionDenied:
if self.object_permission_raise_404:
raise Http404
else:
raise
return super(
ObjectPermissionCheckMixin, self
).dispatch(request, *args, **kwargs)

View File

@@ -1,6 +1,6 @@
***** =====
MECRs MECRs
***** =====
Mayan EDMS Request For Comment documents index. Mayan EDMS Request For Comment documents index.
@@ -17,11 +17,9 @@ Accepted
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
../mercs/0001-merc-process 0001-merc-process
../mercs/0002-test-writing 0002-test-writing
../mercs/0003-using-javascript-libraries 0003-using-javascript-libraries
../mercs/0005-explicit-arguments
../mercs/0006-lower-information-disclose
Draft Draft
----- -----
@@ -29,7 +27,8 @@ Draft
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
../mercs/merging-roles-and-groups merging-roles-and-groups
support-forum
Type Type
@@ -40,8 +39,7 @@ Process
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
../mercs/0001-merc-process 0001-merc-process
../mercs/0004-support-forum
Feature Feature
@@ -49,7 +47,5 @@ Feature
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
../mercs/0002-test-writing 0002-test-writing
../mercs/0003-using-javascript-libraries 0003-using-javascript-libraries
../mercs/0005-explicit-arguments
../mercs/0006-lower-information-disclose

View File

@@ -30,7 +30,7 @@ overheads without providing advantages in the day to day operations.
In reality there is almost a 1 to 1 correlation between Roles and Groups. In reality there is almost a 1 to 1 correlation between Roles and Groups.
Other permissions systems already use Groups as permission units without Other permissions systems already use Groups as permission units without
disadvantages. An example of this is LDAP and its commercial counterpart disavantages. An example of this is LDAP and its commercial counterpart
Active Directory. Active Directory.
Motivation Motivation
@@ -43,7 +43,7 @@ favor of using a native Django model for the same task.
Merging the Role and Group models will also provide a speed boost in every Merging the Role and Group models will also provide a speed boost in every
permission check and queryset filtering. These checks are nested in nature. permission check and queryset filtering. These checks are nested in nature.
Since the access checks are performed for every view and for every link Since the access checks are performed for every view and for every link
in the view the performance gain should be substantial. in the view the performace gain should be substantial.
Backwards Compatibility Backwards Compatibility
======================= =======================
@@ -63,5 +63,5 @@ Changes needed:
the Role model's permissions many to many field. the Role model's permissions many to many field.
4. Update the ``AccessControlList`` models roles field to point to the group 4. Update the ``AccessControlList`` models roles field to point to the group
models. models.
5. Update the role checks in the ``check_access`` and ``restrict_queryset`` 5. Update the role checks in the ``check_access`` and ``filter_by_access``
``AccessControlList`` model manager methods. ``AccessControlList`` model manager methods.

View File

@@ -0,0 +1,48 @@
======================
MERC XX: Support forum
======================
:MERC: XX
:Author: Michael Price
:Status: Draft
:Type: Process
:Created: 2018-02-27
:Last-Modified: 2018-02-27
.. contents:: Table of Contents
:depth: 3
:local:
Abstract
========
This MERC proposes the move of the official community meeting place
from Google Group to a self hosted forum platform.
Motivation
==========
Google Groups is not a proper forum platform and as such is lacking many
features that would increase participation. Google Groups has not had any
significant update in years and the age of the platform is visible. There
are no official mobile apps for Google Groups, no responsible template
is not provided. There are not integration options. These factors
contribute to the problems of knowledge dilution and one time
participation being experienced in the Mayan EDMS community.
Other concerns for moving the community to a self hosted forum solution
are that Google Groups presents a single point of failure by relying on
a free product hosted by a commercial company with no continuation plan
for the product. Google Groups doesn't provide archiving features and
the current archive solution relies on other third party services, one
of which (GMANE) has stopped working. Recent user privacy and censorship
issues regarding Google, reinforce the need for a self hosted solution.
Specification
=============
The proposed solution is to use the bbPress (https://wordpress.org/plugins/bbpress/)
forum plugin for Wordpress. After 14 years, Wordpress dominance continues
unrivaled. The wealth of material, themes, templates and professional avaialbe make
it a safe option.

View File

@@ -16,36 +16,36 @@ Version 0.10
* LibreOffice (https://www.libreoffice.org/) * LibreOffice (https://www.libreoffice.org/)
* unoconv [version 0.5] (https://github.com/dagwieers/unoconv) * unoconv [version 0.5] (https://github.com/dagwieers/unoconv)
* The new office documents converter won't convert files with the extension * The new office documents converter won't convert files with the extension
.docx because these files are recognized as zip files instead. This .docx because these files are recognized as zip files instead. This
is an issue of the libmagic library. is an issue of the libmagic library.
* New configuration option added ``CONVERTER_UNOCONV_USE_PIPE`` that controls * New configuration option added ``CONVERTER_UNOCONV_USE_PIPE`` that controls
how unoconv handles the communication with LibreOffice. The default of how unoconv handles the communication with LibreOffice. The default of
``True`` causes unoconv to use **pipes**, this approach is slower than using ``True`` causes unoconv to use **pipes**, this approach is slower than using
**TCP/IP** ports but it is more stable. **TCP/IP** ports but it is more stable.
* Initial `REST` `API` that exposes documents properties and one method, this * Initial `REST` `API` that exposes documents properties and one method, this
new `API` is used by the new smart document widget and requires the new `API` is used by the new smart document widget and requires the
package ``djangorestframework``, users must issue a:: package ``djangorestframework``, users must issue a::
$ pip install -r requirements/production.txt $ pip install -r requirements/production.txt
to install this new requirement. to install this new requirement.
* MIME type detection and caching performance updates. * MIME type detection and caching performance updates.
* Updated the included version of ``jQuery`` to 1.7 * Updated the included version of ``jQuery`` to 1.7
* Updated the included version of ``JqueryAsynchImageLoader`` to 0.9.7 * Updated the included version of ``JqueryAsynchImageLoader`` to 0.9.7
* Document image serving response now specifies a MIME type for increased * Document image serving response now specifies a MIME type for increased
browser compatibility. browser compatibility.
* Small change in the scheduler that increases stability. * Small change in the scheduler that increases stability.
* Russian translation updates Sergey Glita * Russian translation updates Sergey Glita
* Improved and generalized the OCR queue locking mechanism, this should * Improved and generalized the OCR queue locking mechanism, this should
eliminate any possibility of race conditions between Mayan EDMS OCR nodes. eliminate any posibility of race conditions between Mayan EDMS OCR nodes.
* Added support for signals to the OCR queue, this results in instant OCR * Added support for signals to the OCR queue, this results in instant OCR
processing upon submittal of a document to the OCR queue, this works in processing upon submittal of a document to the OCR queue, this works in
addition to the current polling processing which eliminates the addition to the current polling processing which eliminates the
possibility of stale documents in the OCR queue. posibility of stale documents in the OCR queue.
* Added multiple document OCR submit link * Added multiple document OCR submit link
* Re enabled Tesseract language specific OCR processing and added a one * Re enabled tesseract language specific OCR processing and added a one
(1) time language neutral retry for failed language specific OCR (1) time language neutral retry for failed language specific OCR

View File

@@ -17,11 +17,11 @@ Version 0.11
* Added a view to delete the document image cache, useful when switching * Added a view to delete the document image cache, useful when switching
converter backends or doing diagnostics. converter backends or doing diagnostics.
* Added South to the requirements. * Added South to the requirements.
* Merged documents' filename and extension database fields into a single * Merged documents' filename and extension database fiels into a single
filename field, filename are store as uploaded not manipulation is done filename field, filename are store as uploaded not manipulation is done
Users with existing data must install South and run the appropriate Users with existing data must install South and run the appropiate
migrate commands:: migrate commands::
$ pip install -r requirements/production.txt $ pip install -r requirements/production.txt
$ ./manager syncdb $ ./manager syncdb
$ ./manage.py migrate documents 0001 --fake $ ./manage.py migrate documents 0001 --fake
@@ -30,5 +30,5 @@ Version 0.11
* Added new office document mimetype * Added new office document mimetype
* application/vnd.ms-office * application/vnd.ms-office
* Fixed documents not saving the file encoding * Fixed documents not saving the file encoding
* Removed extra slash in ajax-loader.gif URL fixes #15, thanks to * Removed extra slash in ajax-loader.gif URL fixes #15, thanks to
IHLeanne for finding this one IHLeanne for finding this one

View File

@@ -1,12 +1,13 @@
Version 0.12.1 ================================
============== Mayan EDMS v0.12.1 release notes
================================
*May 2012* *May 2012*
This is the first maintenance release of the 0.12 series. This is the first maintenance release of the 0.12 series.
Overview Overview
-------- ========
While bug fixes and minor feature were the focus for this release, some While bug fixes and minor feature were the focus for this release, some
bigger changes were included because of their importance. The parsing of bigger changes were included because of their importance. The parsing of
@@ -18,12 +19,11 @@ environments where users don't have the ability to install OS level
binaries. binaries.
Changes What's new in Mayan EDMS v0.12.1
------- ================================
Fabric file (fabfile) Fabric file (fabfile)
^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~
A Fabric file is included to help users not very familiar with Ubuntu, A Fabric file is included to help users not very familiar with Ubuntu,
Python and Django install Mayan EDMS, or for system administrators Python and Django install Mayan EDMS, or for system administrators
looking to automate the install whether in local or remote systems. looking to automate the install whether in local or remote systems.
@@ -33,66 +33,54 @@ Feel free to submit your configuration settings and files for different database
webserver or Linux distribution. More configurations will be added to webserver or Linux distribution. More configurations will be added to
the fabfile as more are tested. the fabfile as more are tested.
Documentation update Documentation update
^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~
The installation instructions were updated to include the installation of The installation instructions were updated to include the installation of
the libpng-dev and libjpeg-dev libraries as well as the installation of the libpng-dev and libjpeg-dev libraries as well as the installation of
the ``poppler-utils`` package. An additional step to help users test their the poppler-utils package. An additional step to help users test their
new installation of Mayan EDMS was also added. new installation of Mayan EDMS was also added.
Translations Translations
^^^^^^^^^^^^ ~~~~~~~~~~~~
The Italian translation has been synchronized with the source files at The Italian translation has been synchronized with the source files at
Transifex and finished to %100 completion. Transifex and finished to %100 completion.
Usability improvements Usability improvements
^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~
The index instance view now feature the same multi document action The index instance view now feature the same multi document action
buttons (Submit to OCR, delete, download, etc) as the mail and recent buttons (Submit to OCR, delete, download, etc) as the mail and recent
document views. document views.
Better office document conversion Better office document conversion
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A new method of converting office documents has been implemented, this A new method of converting office documents has been implemented, this
new method doesn't require the use of the command line utility ``UNOCONV``. new method doesn't require the use of the command line utility ``UNOCONV``.
If this new method proves to work better than previous solutions the use If this new method proves to work better than previous solutions the use
of ``UNOCONV`` may be deprecated in the future. The conversion method of ``UNOCONV`` may be deprecated in the future. The conversion method
adds just one new configuration option: ``CONVERTER_LIBREOFFICE_PATH`` adds just one new configuration option: `CONVERTER_LIBREOFFICE_PATH`
which defaults to ``/usr/bin/libreoffice``. which defaults to '/usr/bin/libreoffice'.
Better PDF text parsing Better PDF text parsing
^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~
Brian E. submitted a patch to use the Poppler package pdftotext utility to Brian E. submitted a patch to use the Poppler package pdftotext utility to
extract text from PDF files. This is now the default method Mayan EDMS extract text from PDF files. This is now the default method Mayan EDMS
will execute to try to extract text from a PDF and failing that will will execute to try to extract text from a PDF and failing that will
fallback to the previous method. This change add a new configuration fallback to the previous method. This change add a new configuration
option: ``OCR_PDFTOTEXT_PATH`` to specify the location of the ``pdftotext`` option: `OCR_PDFTOTEXT_PATH` to specify the location of the ``pdftotext``
executable, it defaults to ``/usr/bin/pdftotext``. Be sure to install the executable, it defaults to '/usr/bin/pdftotext'. Be sure to install the
``poppler-utils`` os package to take advantage of this new parser. ``poppler-utils`` os package to take advantage of this new parser.
Changed defaults Changed defaults
^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~
The OCR queue is now active by default when first created during the The OCR queue is now active by default when first created during the
``syncdb`` phase and the ``OCR_AUTOMATIC_OCR`` option now defaults ``syncdb`` phase and the `OCR_AUTOMATIC_OCR` option now defaults
to ``True``. These two changes are made to reduce the steps required for to ``True``. These two changes are made to reduce the steps required for
new users to start enjoying the benefits of automatic text extraction from new users to start enjoying the benefits of automatic text extraction from
uploaded documents without having to read the documentation and have a more uploaded documents without having to read the documentation and have a more
functional default install. functional default install.
Upgrading from a previous version Upgrading from a previous version
--------------------------------- =================================
Start off by adding the new requirements:: Start off by adding the new requirements::
@@ -116,17 +104,13 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed Bugs fixed
---------- ==========
:github-issue:`25` "Office document conversion error" * Issue #25 "Office document conversion error"
Removals
--------
Stuff removed
=============
* None * None

View File

@@ -1,12 +1,14 @@
Version 0.12.2 ================================
============== Mayan EDMS v0.12.2 release notes
================================
*June 2012* *June 2012*
This is the second maintenance release of the 0.12 series. This is the second maintenance release of the 0.12 series.
Overview Overview
-------- ========
As with the previous release bug fixes and minor feature were the focus As with the previous release bug fixes and minor feature were the focus
for this release too. `issue #24`_ has been fixed and document for this release too. `issue #24`_ has been fixed and document
@@ -17,28 +19,24 @@ the diagnosis of installation of runtime error a simple view showing the
number of internal interval jobs being used by Mayan EDMS as well as a number of internal interval jobs being used by Mayan EDMS as well as a
new app which shows a detail of the current installation enviroment were added. new app which shows a detail of the current installation enviroment were added.
What's new in Mayan EDMS v0.12.2
Changes ================================
-------
Smarter auto admin creation Smarter auto admin creation
^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
Mayan EDMS creates a administrator user during the Mayan EDMS creates a administrator user during the
database creation phase to reduce the amount of steps required for a database creation phase to reduce the amount of steps required for a
functional install. The creation of this account is controlled by the configuration functional install. The creation of this account is controlled by the configuration
option ``COMMON_AUTO_CREATE_ADMIN``, the username of the account is option `COMMON_AUTO_CREATE_ADMIN`, the username of the account is
specified with the configuration option ``COMMON_AUTO_ADMIN_USERNAME`` specified with the configuration option `COMMON_AUTO_ADMIN_USERNAME`
and the password of this account by the option ``COMMON_AUTO_ADMIN_PASSWORD``. and the password of this account by the option `COMMON_AUTO_ADMIN_PASSWORD`.
Previously the ``COMMON_AUTO_ADMIN_PASSWORD`` defaulted to 'admin' which Previously the `COMMON_AUTO_ADMIN_PASSWORD` defaulted to 'admin' which
created an administrator account of username 'admin' with a password of created an administrator account of username 'admin' with a password of
'admin'. The new default is to randomize an initial password and show this password 'admin'. The new default is to randomize an initial password and show this password
at the login screen until the administrator password is changed. at the login screen until the administrator password is changed.
Document check outs Document check outs
^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~
As per the feature request filed under `issue #26`_, a new document As per the feature request filed under `issue #26`_, a new document
check out and check in functionality has been added. Users can now check out and check in functionality has been added. Users can now
check out a document and lock new version of it from being uploaded to avoid check out a document and lock new version of it from being uploaded to avoid
@@ -49,10 +47,8 @@ new versions of it or check the document back in before the expiration period,
unless being granted the ``Allow overriding check out restrictions`` or unless being granted the ``Allow overriding check out restrictions`` or
``Forcefully check in documents`` permission respectively. ``Forcefully check in documents`` permission respectively.
Installation environment app Installation environment app
^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Diagnosting remote installations of web based applications without access to the Diagnosting remote installations of web based applications without access to the
command line can be a bit hard, to alleviate this situation a new installation command line can be a bit hard, to alleviate this situation a new installation
environment details app has been added. The purpose of this app is to provide environment details app has been added. The purpose of this app is to provide
@@ -60,25 +56,19 @@ support staff information about the physical environment where Mayan EDMS has
been installed. To avoid possible security compromises only administrators been installed. To avoid possible security compromises only administrators
can access this app. can access this app.
Editable compressed documents filename Editable compressed documents filename
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Previously when downloading more than one document in a compressed manner, Previously when downloading more than one document in a compressed manner,
Mayan EDMS would produce a file with the name ``document_bundle.zip`` for Mayan EDMS would produce a file with the name ``document_bundle.zip`` for
download. A different filename can now be specified at the same download dialog. download. A different filename can now be specified at the same download dialog.
German translation German translation
^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~
A German language translation has been added thanks to Tetja Rediske A German language translation has been added thanks to Tetja Rediske
and Tilmann Sittig. and Tilmann Sittig.
Statistics gathering Statistics gathering
^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~
Previous attempts at gathering usage statistics have been met with deficient results. Previous attempts at gathering usage statistics have been met with deficient results.
User participation in surveys as well as the quality of the data entered by users User participation in surveys as well as the quality of the data entered by users
was disappointing. That is why this version of Mayan EDMS features an was disappointing. That is why this version of Mayan EDMS features an
@@ -86,7 +76,7 @@ anonymous statistics gathering functionality.
Upgrading from a previous version Upgrading from a previous version
--------------------------------- =================================
Start off by adding the new requirements:: Start off by adding the new requirements::
@@ -107,22 +97,19 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed Bugs fixed
---------- ==========
* `issue #24`_ "Duplicated filename extension when uploading a new version of a document"
:github-issue:`24 "Duplicated filename extension when uploading a new version of a document" * `issue #26`_ "checkout feature request"
:github-issue:`26` "checkout feature request"
Removals
--------
Stuff removed
=============
* Feedback app * Feedback app
.. _issue #24: https://github.com/rosarior/mayan/issues/24 .. _issue #24: https://github.com/rosarior/mayan/issues/24
.. _issue #26: https://github.com/rosarior/mayan/issues/26 .. _issue #26: https://github.com/rosarior/mayan/issues/26

View File

@@ -1,12 +1,15 @@
Version 0.12 ==============================
============ Mayan EDMS v0.12 release notes
==============================
*February 2012* *February 2012*
Welcome to Mayan EDMS v0.12!
This release commemorates Mayan EDMS first aniversary! This release commemorates Mayan EDMS first aniversary!
Overview Overview
-------- ========
Aside from new features, the focus of this release of Mayan EDMS also Aside from new features, the focus of this release of Mayan EDMS also
been about improving the code and documentation quality standard been about improving the code and documentation quality standard
@@ -23,7 +26,7 @@ releases:
* All app permissions have been move to a separate permissions.py file * All app permissions have been move to a separate permissions.py file
per app per app
* Complete permission system refactor. * Complete permission system refactor.
* Document signing code moved to it's own app * Document signining code move to it's own app
* Initial unit tests * Initial unit tests
* A lot of logging used throught the entire project. * A lot of logging used throught the entire project.
* Much functionality moved to model managers. * Much functionality moved to model managers.
@@ -35,17 +38,16 @@ releases:
* Removal of remarked code. * Removal of remarked code.
Changes What's new in Mayan EDMS v0.12
------- ==============================
ACL support ACL support
^^^^^^^^^^^ ~~~~~~~~~~~
* Object level access control is now in place for documents, folders, * Object level access control is now in place for documents, folders,
tags and smart links. What this means is that administrators can now tags and smart links. What this means is that administrators can now
grant permissions to users, groups or roles on for specific objects. 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 A more in-depth explanation of how this new ACL system can be found in
the :doc:`3 tier access control <../chapters/permissions>` section of the the :doc:`3 tier access control <../topics/permissions>` section of the
permissions chapter. permissions chapter.
* Default class ACL support. Administrators can setup the access control * Default class ACL support. Administrators can setup the access control
@@ -55,72 +57,57 @@ ACL support
allow the access control list that the actual creator of an object will allow the access control list that the actual creator of an object will
inherit. inherit.
Anonymous user support Anonymous user support
^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~
Anonymous user support is a two tier function, first is the addition of Anonymous user support is a two tier function, first is the addition of
the ``COMMON_ALLOW_ANONYMOUS_ACCESS`` configuration option that the `COMMON_ALLOW_ANONYMOUS_ACCESS` configuration option that
allows non authenticated user to browse all the pages of a Mayan EDMS allows non authenticated user to browse all the pages of a Mayan EDMS installation.
installation. The second part of this support is the ability to assign The second part of this support is the ability to assign permissions
permissions or individual access to objects to anonymous users. or individual access to objects to anonymous users.
Translations Translations
^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~
A new Italian translation is available, provided by SeeOpen.IT A new Italian translation is available, provided by SeeOpen.IT
(www.seeopen.it, info@seeopen.it) as well as complete Russian translation (www.seeopen.it, info@seeopen.it) as well as complete Russian translation
update by Sergei Glita. Included in this release also the initial translation update by Sergei Glita. Included in this release also the initial translation
to Polish by mic. to Polish by mic.
Usability improvements Usability improvements
^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~
* Detached signature behavior improved, uploading a new detached signature * Detached signature behavior improved, uploading a new detached signature
erases the previous one. erases the previous one.
* Usability improvement in the role member's add/removal form, by using * Usability improvement in the role member's add/removal form, by using
HTML's option groups tag property HTML's option groups tag property
2 Step download process 2 Step download process
^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~
The code for downloading single and multiple document and document versions The code for downloading single and multiple document and document versions
has been merged with compression support also added. This allows for the has been merged with compression support also added. This allows for the
download of documents in their original format or compressed and well as download of documents in their original format or compressed and well as
the download of several documents in a single compressed file. the download of several documents in a single compressed file.
Customizable GPG home directory Customizable GPG home directory
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Addition of the `SIGNATURES_GPG_HOME` configuration option to let
Addition of the ``SIGNATURES_GPG_HOME`` configuration option to let
administrators set Mayan EDMS's GPG instance home directory, used to administrators set Mayan EDMS's GPG instance home directory, used to
store keyrings and other GPG configuration files. store keyrings and other GPG configuration files.
Out of process bulk uploading Out of process bulk uploading
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A management command has been added to help upload a large number of documents 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 from a compressed file. For information about this new feature check the Initial data loading chapter.
Initial data loading chapter.
Out of process user import Out of process user import
^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~
A management command has been added to import a large number users 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 from a CSV file. More information about this new feature can also be found
in the Initial data loading chapter. in the Initial data loading chapter.
Refactored document indexing Refactored document indexing
^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:doc:`The document indexing <../topics/indexes>` functionality has been
:doc:`The document indexing <../chapters/indexes>` functionality has been
improved and moved from experimental improved and moved from experimental
stage to beta stage. Index configuration menus are now available on the stage to beta stage. Index configuration menus are now available on the
``Setup`` menu and allows administrators to create skeleton trees that will ``Setup`` menu and allows administrators to create skeleton trees that will
@@ -129,14 +116,12 @@ These populated trees can also be mirrored on the physical filesystem and shared
using Samba or another filesharing server giving users a structured view using Samba or another filesharing server giving users a structured view
of the documents contained within Mayan EDMS from the ``Indexes`` tab of the documents contained within Mayan EDMS from the ``Indexes`` tab
or from a mirrored index shared via the network. A new configuration option or from a mirrored index shared via the network. A new configuration option
has been added, ``DOCUMENT_INDEXING_FILESYSTEM_SERVING``, which maps has been added, `DOCUMENT_INDEXING_FILESYSTEM_SERVING`, which maps
the index internal name with the physical directory where such index will be the index internal name with the physical directory where such index will be
mirrored on disk. mirrored on disk.
Help shape Mayan EDMS's future Help shape Mayan EDMS's future
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Included in this version is a small feedback application, found under the Included in this version is a small feedback application, found under the
``About`` main menu, where users by just answering some questions can ``About`` main menu, where users by just answering some questions can
help determine the priority of the next planned features on the pipeline, help determine the priority of the next planned features on the pipeline,
@@ -144,10 +129,8 @@ 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 are optional but answering as many as possible will help greatly understand
the need of the Mayan EDMS user base. the need of the Mayan EDMS user base.
Staging file previews Staging file previews
^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~
The staging file previews now show the filename for easier The staging file previews now show the filename for easier
identification and speedier upload selection. The staging files previews identification and speedier upload selection. The staging files previews
are now treated as a gallery which means that users can preview an entire are now treated as a gallery which means that users can preview an entire
@@ -155,23 +138,8 @@ page of staging files without having to click and close each one
individually. 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 Upgrading from a previous version
--------------------------------- =================================
Start off by adding the new requirements:: Start off by adding the new requirements::
@@ -233,20 +201,31 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
The permission system has been completely reworked so sadly this is a The permission system has been completely reworked so sadly this is a
place where even data migration can't help and the permissions assigned 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 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, and roles will be preserved only permissions need to be assigned again,
so write down your role permission setup before upgrading. so write down your role permission setup before upgrading.
Bugs fixed Bugs fixed
---------- ==========
* Issue #17, special thanks to Dave Herring for all the help including
* :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
access to a machine suffering with the issue, and to Sergei Glita for his research and eventual find of the core cause.
his research and eventual find of the core cause.
* Statistics fixes. * Statistics fixes.
* Fixed get_image_cache_name regression in the OCR app. * Fixed get_image_cache_name regression in the OCR app.
Stuff removed
=============
* 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`

View File

@@ -1,132 +1,110 @@
Version 0.13 ================================
============ Mayan EDMS v0.13 release notes
================================
*December 2012* *December 2012*
Welcome to Mayan EDMS v0.13!
Overview Overview
-------- ========
Initially this version was meant as a the third maintenance release of Initially this version was meant as a the third maintenance release of
the 0.12 series, but with the amount of changes and updates that were included the 0.12 series, but with the amount of changes and updates that were included
it was obvious this was not just a bug fix version anymore hence the version it was obvious this was not just a bug fix version anymore hence the version
jump to 0.13 instead of 0.12.3 jump to 0.13 instead of 0.12.3
Changes
------- What's new in Mayan EDMS v0.13
================================
Django 1.3.5 Django 1.3.5
^^^^^^^^^^^^ ~~~~~~~~~~~~
This release updates the required version of Django to 1.3.5 to take advantage This release updates the required version of Django to 1.3.5 to take advantage
of the security fixes added to that version of the framework. of the security fixes added to that version of the framework.
Bulk document tagging and untagging Bulk document tagging and untagging
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
As requested by issue `issue #31`_ this feature has been implemented and enabled in this version.
As requested by issue `issue #31`_ this feature has been implemented and Attaching or removing tags from a large number of documents is now much easier.
enabled in this version. Attaching or removing tags from a large number of
documents is now much easier.
Registration Registration
^^^^^^^^^^^^ ~~~~~~~~~~~~
Based on requests made by the community for greater commercial support and services for
Based on requests made by the community for greater commercial support and Mayan EDMS, a new feature has been added that allows users to register their
services for Mayan EDMS, a new feature has been added that allows users copies of Mayan EDMS and better help users with commercial support packages.
register their copies of Mayan EDMS and better help users with commercial Registration for non commercial users is voluntary and optional, and in no way
support packages. Registration for non commercial users is voluntary and affects the functionality of Mayan EDMS. However even for non commercial users
optional, and in no way affects the functionality of Mayan EDMS. However registration offers the advantage of automatically branding the user's copy
even for non commercial users registration offers the advantage of of Mayan EDMS with their name or the company name in the title area.
automatically branding the user's copy of Mayan EDMS with their name or the
company name in the title area.
Per document type indexing Per document type indexing
^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~
Index can now be restricted to update only on specific document types, this Index can now be restricted to update only on specific document types, this
greatly increases the usefulness of indexes, and prevents unwanted index greatly increases the usefulness of indexes, and prevents unwanted index
updates. updates.
Bootstrap Bootstrap
^^^^^^^^^ ~~~~~~~~~
Setting up Mayan EDMS after installation has been indetified by users as the Setting up Mayan EDMS after installation has been indetified by users as the
main difficulty when knowledge about Mayan EDMS is relatively low. To main difficulty when knowledge about Mayan EDMS is relatively low. To
address this situation a new feature that provides preconfigured setups has been address this situation a new feature that provides preconfigured setups has been
added. These preconfigured setups are published in the Mayan EDMS website and added. These preconfigured setups are published in the Mayan EDMS website and
upon synchonization are available to users, this gives users access and integrators upon synchonization are available to users, this gives users access and integrators
access to new setups without having to wait for new versions of Mayan EDMS. access to new setups without having to wait for new versions of Mayan EDMS.
Aside from including preconfigured setups, the new bootstrap app Aside from including preconfigured setups, the new bootstrap app
has the ability of dumping an user's current setup into a serialized text file has the ability of dumping an user's current setup into a serialized text file
which can be tweaked by hand and sent via email to other users. The possibilities which can be tweaked by hand and sent via email to other users. The possibilities
enabled by this range from company wide defaults setups to consultants providing enabled by this range from company wide defaults setups to consultants providing
their clients with customized setups without having to access their clients' their clients with customized setups without having to access their clients'
Mayan EDMS instances. ``JSON``, ``YAML`` and a custom ``YAML`` format Mayan EDMS instances. ``JSON``, ``YAML`` and a custom ``YAML`` format
(http://djangosnippets.org/snippets/2461/) are supported by this new app. (http://djangosnippets.org/snippets/2461/) are supported by this new app.
Add documents to folders in bulk Add documents to folders in bulk
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
As requested, the ability to add more than one document at a time to a selected As requested, the ability to add more than one document at a time to a selected
folder has been added. folder has been added.
Translation updates Translation updates
^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~
The translation for all the current languages were synchronized to the The translation for all the current languages were synchronized to the
latest transifex project sources. latest transifex project sources.
Model updates Model updates
^^^^^^^^^^^^^ ~~~~~~~~~~~~~
Several small fixes to the behavior of some model were added, namely that Several small fixes to the behavior of some model were added, namely that
the names of some models should be unique. The document type name as well the names of some models should be unique. The document type name as well
as the metadata set name were two models that were updated to behave this way. as the metadata set name were two models that were updated to behave this way.
Navigation updates Navigation updates
^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~
There were some additions and changes to the navigation to make it more intuitive There were some additions and changes to the navigation to make it more intuitive
or to add an alternate way to access the same information better. The bulk or to add an alternate way to access the same information better. The bulk
attachment of tags was one of these. Previously users were added or removed attachment of tags was one of these. Previously users were added or removed from groups,
from groups, now users can be assigned to groups without leaving the user view. now users can be assigned to groups without leaving the user view. The name of an
The name of an existing metadata set can now be edited and what was previously existing metadata set can now be edited and what was previously called metadata set edit
called metadata set edit is now more aptly named metadata members which adds is now more aptly named metadata members which adds or removes metadata types into a
or removes metadata types into a single organizational unit. An error that single organizational unit. An error that caused a duplicate menu link in the
caused a duplicate menu link in the document type filename view was also fixed. document type filename view was also fixed.
Support for UNOCONV dropped Support for UNOCONV dropped
^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
Support for converting office documents by calling LibreOffice via UNOCONV
Support for converting office documents by calling LibreOffice via ``UNOCONV``
has been disabled for a while ever since LibreOffice start including has been disabled for a while ever since LibreOffice start including
document conversion support from the command line. This version completly document conversion support from the command line. This version completly
removes any traces of code and configuration options related to ``UNOCONV``. removes any traces of code and configuration options related to UNOCONV.
Optimizations Optimizations
^^^^^^^^^^^^^ ~~~~~~~~~~~~~
Inspired by the idea of getting Mayan EDMS running effectively on low power hardware such as
Inspired by the idea of getting Mayan EDMS running effectively on low power the Raspberry Pi, several rounds or profiling and optimization were done.
hardware such as the Raspberry Pi, several rounds or profiling and
optimization were done.
Some caching optimization were introduced to the permission model, resulting in Some caching optimization were introduced to the permission model, resulting in
a speed increase of 33% in rendering time on views with heavy permission checking a speed increase of 33% in rendering time on views with heavy permission checking
and a 18% query reduction on cache hits. and a 18% query reduction on cache hits.
Upgrading from a previous version Upgrading from a previous version
--------------------------------- =================================
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
$ git reset --hard HEAD $ git reset --hard HEAD
@@ -155,24 +133,21 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* `issue #28`_ "Document indexing based on filesystem problem"
* :github-issue:`28` "Document indexing based on filesystem problem" * `issue #29`_ Default ACL documentation
* :github-issue:`29` Default ACL documentation * `issue #30`_ "Ubuntu 12.0.4 LTS complaining about mising 'fabfile/templates/settings_local.py' (master branch)"
* :github-issue:`30` "Ubuntu 12.0.4 LTS complaining about mising 'fabfile/templates/settings_local.py' (master branch)" * `issue #31`_ "Bulk add tags Feature request"
* :github-issue:`31` "Bulk add tags Feature request" * `issue #32`_ "Error run $python manage.py syncdb"
* :github-issue:`32` "Error run $python manage.py syncdb" * `issue #33`_ "Fetches translations from Transifex. "
* :github-issue:`33` "Fetches translations from Transifex. " * `issue #34`_ "Initial syncdb fails because of import time database access"
* :github-issue:`34` "Initial syncdb fails because of import time database access" * `issue #35`_ "Fix first install syncdb on Postgres"
* :github-issue:`35` "Fix first install syncdb on Postgres" * `issue #37`_ "When 19 >= &document_type_id >= 10 in url, error page not found"
* :github-issue:`37` "When 19 >= &document_type_id >= 10 in url, error page not found" * `issue #39`_ Feature request "Bulk move folders"
* :github-issue:`39` * `issue #39`_ Feature request "Bulk move folders"
.. _issue #28: https://github.com/rosarior/mayan/issues/28 .. _issue #28: https://github.com/rosarior/mayan/issues/28

View File

@@ -1,10 +1,13 @@
Version 1.0 =============================
=========== Mayan EDMS v1.0 release notes
=============================
*August 26, 2014* *August 26, 2014*
Welcome to Mayan EDMS v1.0!
Overview Overview
-------- ========
After a year of low activity the focus of this release was to get the code After a year of low activity the focus of this release was to get the code
updated to work with the most recent version of Django and the most recent updated to work with the most recent version of Django and the most recent
version of the dependencies Mayan EDMS uses. The goal was to have a strong version of the dependencies Mayan EDMS uses. The goal was to have a strong
@@ -13,30 +16,25 @@ fixes were the primary focus of this cycle. Because of this not much
emphasis was placed on adding new features, or at least new features emphasis was placed on adding new features, or at least new features
that could have the potential to break things. that could have the potential to break things.
Changes What's new in Mayan EDMS v1.0
------- =============================
New home New home
^^^^^^^^ ~~~~~~~~
The growth and reach of the project has necessitaded for a while the move The growth and reach of the project has necessitaded for a while the move
of the project to its own organization in Github. This move has finally been of the project to its own organization in Github. This move has finally been
done, the new URL of the project is: https://github.com/mayan-edms/mayan-edms done, the new URL of the project is: https://github.com/mayan-edms/mayan-edms
Django 1.6 Django 1.6
^^^^^^^^^^ ~~~~~~~~~~
This release updates the required version of Django to 1.6, bringing with it This release updates the required version of Django to 1.6, bringing with it
not only new features, but also a lot of security updates, a new project not only new features, but also a lot of security updates, a new project
directory structure and new deployment methods. directory structure and new deployment methods.
Translation updates Translation updates
^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~
The translation for all languages were synchronized to the latest transifex project sources.
The translation for all languages were synchronized to the latest transifex Translation completion as reported by Transifex:
project sources. Translation completion as reported by Transifex:
* English - 100% * English - 100%
* Spanish - 100% * Spanish - 100%
@@ -61,127 +59,96 @@ project sources. Translation completion as reported by Transifex:
* Croatian - 3% * Croatian - 3%
* Turkish - 3% * Turkish - 3%
Model updates Model updates
^^^^^^^^^^^^^ ~~~~~~~~~~~~~
There were some convenience properties created to allow quick access to There were some convenience properties created to allow quick access to
a document's version and pages. These custom properties were removed and a document's version and pages. These custom properties were removed and
an official method to access these properties as provided by Django is now an official method to access these properties as provided by Django is now
used. used.
Source code improvements Source code improvements
^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~
A circular import of metadata and document_index apps code from the documents app A circular import of metadata and document_index apps code from the documents app
was removed. Document index updates are now handled via signals, not called was removed. Document index updates are now handled via signals, not called
directly as before. Hundreds of PEP8 style fixes, unused import removals, directly as before. Hundreds of PEP8 style fixes, unused import removals,
unused variables removals and removal of remarked or unused code. Removal of the unused variables removals and removal of remarked or unused code. Removal of the
``DEVELOPMENT`` flag (was used to trigger static media serving during development), DEVELOPMENT flag (was used to trigger static media serving during development),
this is now handled by the ``DEBUG`` flag. The ``DEBUG`` flag is now set to ``True`` by this is now handled by the DEBUG flag. The DEBUG flag is now set to `True` by
default as per Django 1.6 defaults. Removed usage of Django's JSON libraries default as per Django 1.6 defaults. Removed usage of Django's JSON libraries
using Python's JSON library instead. Update of time and date use to use Django's using Python's JSON library instead. Update of time and date use to use Django's
new timezone aware data and time handling. Removal of custom code in favor of using new timezone aware data and time handling. Removal of custom code in favor of using
modules provided by Django or by existing 3rd party libraries. Unification of code modules provided by Django or by existing 3rd party libraries. Unification of code
used for equal or similar purpose in various modules. used for equal or similar purpose in various modules.
Removal of included 3rd party modules Removal of included 3rd party modules
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
One last 3rd party module was included with the source code of Mayan EDMS. One last 3rd party module was included with the source code of Mayan EDMS.
This module is now available on PyPI and fetched during the installation instead This module is now available on PyPI and fetched during the installation instead
of being included. of being included.
Automatic testing and code coverage check Automatic testing and code coverage check
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Some initial tests were added, which will help with the detection of Some initial tests were added, which will help with the detection of
regressions or bugs when adding new features. More tests are needed, but regressions or bugs when adding new features. More tests are needed, but
the initial work has being started. the initial work has being started.
Update of required modules and libraries versions Update of required modules and libraries versions
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Many of the required modules and libraries have been updated to a more Many of the required modules and libraries have been updated to a more
recent version if not to their most recent released version. recent version if not to their most recent released version.
Database connection leaks Database connection leaks
^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~
Stale database connection being left open by scheduler tasks are now explictly Stale database connection being left open by scheduler tasks are now explictly
closed. This avoids consumption of the pool of database connections, increases closed. This avoids consumption of the pool of database connections, increases
stability and reduces memory usage. stability and reduces memory usage.
Deletion of detached signatures Deletion of detached signatures
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Detached signatures can now be deleted, if accidentally added to the wrong document.
Detached signatures can now be deleted, if accidentally added to the wrong
document.
Removal of fabric based installations Removal of fabric based installations
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
These files are now part of their own project and located at https://github.com/mayan-edms/mayan-fabric These files are now part of their own project and located at https://github.com/mayan-edms/mayan-fabric
Pluggable OCR backends Pluggable OCR backends
^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~
A commonly requested feature, it is now possible to write backends drivers A commonly requested feature, it is now possible to write backends drivers
to do document OCR using software or services other than Tesseract. to do document OCR using software or services other than Tesseract.
OCR improvements OCR improvements
^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~
OCR queue state is now reset when reloading Mayan EMDS, avoiding the OCR queue OCR queue state is now reset when reloading Mayan EMDS, avoiding the OCR queue
to remain locked. `unpaper` binary is now an optional pre OCR requirement, the OCR to remain locked. `unpaper` binary is now an optional pre OCR requirement, the OCR
queue will now continue working is ``unpaper`` is not installed. Addition of post queue will now continue working is `unpaper` is not installed. Addition of post
OCR processing support for French and German. OCR processing support for French and German.
License change License change
^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~
Mayan EDMS is now licensed under the Apache 2.0 license. This means many Mayan EDMS is now licensed under the Apache 2.0 license. This means many
things but the main change is that inclusion of Mayan EDMS into things but the main change is that inclusion of Mayan EDMS into
commercial products is now explicitly allowed. commercial products is now explicitly allowed.
PyPI package PyPI package
^^^^^^^^^^^^ ~~~~~~~~~~~~
Mayan EDMS has been packaged and submitted to the PyPI_ Python Package Index Mayan EDMS has been packaged and submitted to the PyPI_ Python Package Index
making it even easier to install and use. making it even easier to install and use.
New REST API New REST API
^^^^^^^^^^^^ ~~~~~~~~~~~~
This release feature a completely new REST API and automatic API documentation. This release feature a completely new REST API and automatic API documentation.
This new API is also used internally by Mayan EDMS itself. This new API is also used internally by *Mayan EDMS* itself.
Other changes Other changes
^^^^^^^^^^^^^ ~~~~~~~~~~~~~
More office document types are now recognized and supported. More file types are now More office document types are now recognized and supported. More file types are now
supported as text files and properly previewed and parsed. Removal of the legacy supported as text files and properly previewed and parsed. Removal of the legacy
runserver.sh and runserver_plus.sh scripts. New document preview generation and runserver.sh and runserver_plus.sh scripts. New document preview generation and
display pipeline, faster, simpler. Inclusion of a proof of concept compressed storage display pipeline, faster, simpler. Inclusion of a proof of concept compressed storage
backend. backend.
Upgrading from a previous version Upgrading from a previous version
--------------------------------- =================================
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
$ git reset --hard HEAD $ git reset --hard HEAD
@@ -208,8 +175,7 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* If using the SQLite3 database option, rename the file named `mayan.sqlite` file to `db.sqlite3` and * If using the SQLite3 database option, rename the file named `mayan.sqlite` file to `db.sqlite3` and
move it to the new `media` provided folder. move it to the new `media` provided folder.
* Also move to the `media` folder any `gpg_home`, `document_storage` and `image_cache` folders * Also move to the `media` folder any `gpg_home`, `document_storage` and `image_cache` folders
@@ -217,8 +183,7 @@ Backward incompatible changes
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* None * None

View File

@@ -1,19 +1,18 @@
Version 1.1.1 ===============================
============= Mayan EDMS v1.1.1 release notes
===============================
Released: May 21, 2015 Released: May 21, 2015
Changes What's new
------- ==========
Update to Django 1.6.11 Update to Django 1.6.11
^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~
The required version of Django has been updated to version 1.6.11_. The required version of Django has been updated to version 1.6.11_.
Minor changes Minor changes
^^^^^^^^^^^^^ ~~~~~~~~~~~~~
- Fix make_dist.sh script - Fix make_dist.sh script
- Add test for issue #163 - Add test for issue #163
- Activate tests for the sources app - Activate tests for the sources app
@@ -26,12 +25,11 @@ Minor changes
- Increase size of the lock name field - Increase size of the lock name field
- New style documentation - New style documentation
Upgrading from a previous version Upgrading from a previous version
--------------------------------- =================================
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -39,9 +37,8 @@ Type in the console::
the requirements will also be updated. the requirements will also be updated.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -54,9 +51,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Add new static media:: Add new static media::
@@ -66,14 +62,11 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
None
* None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
None
* None
.. _1.6.11: https://docs.djangoproject.com/en/1.8/releases/1.6.11/ .. _1.6.11: https://docs.djangoproject.com/en/1.8/releases/1.6.11/

View File

@@ -1,14 +1,17 @@
Version 1.1 =============================
=========== Mayan EDMS v1.1 release notes
=============================
Released: February 10, 2015 Released: February 10, 2015
Changes Welcome to Mayan EDMS v1.1
-------
What's new in Mayan EDMS v1.1
=============================
Celery Celery
^^^^^^ ~~~~~~
All background tasks processing has been converted to use Celery_. By default All background tasks processing has been converted to use Celery_. By default
Mayan EDMS runs in "Eager" until a broker and result backend are configured Mayan EDMS runs in "Eager" until a broker and result backend are configured
as per `Celery's documentation`_. This change made the built-in scheduler and as per `Celery's documentation`_. This change made the built-in scheduler and
@@ -16,83 +19,72 @@ job_processing apps obsolete, both were removed.
Views namespaces Views namespaces
^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~
All views are namespaced_ with the name of the app which defines them. If you have All views are namespaced_ with the name of the app which defines them. If you have
developed 3rd party apps for Mayan EDMS be sure to update any reference to a view developed 3rd party apps for Mayan EDMS be sure to update any reference to a view
by prepending the app name to the view name. by prepending the app name to the view name.
Removal of the splash screen Removal of the splash screen
^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The static image home screen has been replaced with a quick links view, showing The static image home screen has been replaced with a quick links view, showing
the most used actions: Uploading documents, viewing recent documents, viewing the most used actions: Uploading documents, viewing recent documents, viewing
all documents and searching documents. all documents and searching documents.
Sending and receiving documents via email Sending and receiving documents via email
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A link or entire documents can be sent as attachments via email. Documents can A link or entire documents can be sent as attachments via email. Documents can
also be received via email with the addition of two document sources named IMAP also be received via email with the addition of two document sources named IMAP and POP3
and POP3 which correspond to the mail protocol used to fetch the documents. which correspond to the mail protocol used to fetch the documents. Read Django's
Read Django's `email configuration settings documentation`_ for more details `email configuration settings documentation`_ for more details on how to set up
on how to set up mail serving. mail serving.
Update to Django 1.6.8 Update to Django 1.6.8
^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~
Mayan EDMS has been updated to use Django 1.6.8. Mayan EDMS has been updated to use Django 1.6.8.
Events app Events app
^^^^^^^^^^ ~~~~~~~~~~
The built-in history app has been removed in favor of a new events wrapper app The built-in history app has been removed in favor of a new events wrapper app
for `Django activity stream`_ for `Django activity stream`_
Watch folders Watch folders
^^^^^^^^^^^^^ ~~~~~~~~~~~~~
Filesystem folders can be monitored for change and their files automatically Filesystem folders can be monitored for change and their files automatically
uploaded as documents in Mayan EDMS. uploaded as documents in Mayan EDMS.
Vagrant file included Vagrant file included
^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~
A vagrant file is now included to allow developers to provision a virtual machine A vagrant file is now included to allow developers to provision a virtual machine
with the latest development version of Mayan EDMS. with the latest development version of Mayan EDMS.
User locale profile (language and timezone) User locale profile (language and timezone)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Interface language and locale setting can now be setup for each user and are not Interface language and locale setting can now be setup for each user and are not
installation wide as before. Date and times offsets are automatically ajusted to installation wide as before. Date and times offsets are automatically ajusted to
each user's timezone settings. each user's timezone settings.
Document states Document states
^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~
A new simple workflow app that can represent document states has been included. A new simple workflow app that can represent document states has been included.
Explicit document types needed per index Explicit document types needed per index
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Indexes can now be tied to document types, eliminating the need to update Indexes can now be tied to document types, eliminating the need to update
indexes for every document update. Indexes will only update when a document of indexes for every document update. Indexes will only update when a document of
the type to which they are associated is updated. the type to which they are associated is updated.
Optional and required metadata types Optional and required metadata types
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Metadata types can now be assigned in two ways to documents types, as optional or Metadata types can now be assigned in two ways to documents types, as optional or
required. Values for required metadata types as the name implies, must be entered required. Values for required metadata types as the name implies, must be entered
for documents to be able to be uploaded. Optional metadata types on the other hand for documents to be able to be uploaded. Optional metadata types on the other hand
@@ -100,16 +92,14 @@ can be left blank by the user.
Bulk document type change Bulk document type change
^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~
It is now possible to change the document type of previously uploaded documents. It is now possible to change the document type of previously uploaded documents.
When the document type of a document is changed the metadata values are reset and When the document type of a document is changed the metadata values are reset and
the metadata types of the new document type are automatically assigned. the metadata types of the new document type are automatically assigned.
New release cycle New release cycle
^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~
Starting with this version a new release cycle methodology will come into effect. Starting with this version a new release cycle methodology will come into effect.
The goal of this release cycle is to allow two series of versions of Mayan EDMS to be The goal of this release cycle is to allow two series of versions of Mayan EDMS to be
active at a given time: A new major version with new functionality and a minor version active at a given time: A new major version with new functionality and a minor version
@@ -120,36 +110,29 @@ maintenance mode.
Deprecation of Python 2.6 Deprecation of Python 2.6
^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~
Series 1.0 of Mayan EDMS will be the last series supporting Python 2.6. Series Series 1.0 of Mayan EDMS will be the last series supporting Python 2.6. Series
2.0 will be using Django 1.7.x which itself requires Python 2.7 or later. 2.0 will be using Django 1.7.x which itself requires Python 2.7 or later.
Improved testings Improved testings
^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~
Mayan EDMS is now automatically tested against SQLite, MySQL and PostgreSQL. Mayan EDMS is now automatically tested against SQLite, MySQL and PostgreSQL.
API updates API updates
^^^^^^^^^^^ ~~~~~~~~~~~
Many new API endpoints have been added exposing the majority of Mayan EDMS functionality.
Many new API endpoints have been added exposing the majority of Mayan EDMS
functionality.
Messages contextual improvements Messages contextual improvements
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Many updates and simplifications were made to the source text messages to reduce the
Many updates and simplifications were made to the source text messages to difficulty of translating Mayan EDMS and maintaing the contextual meaning of the
reduce the difficulty of translating Mayan EDMS and maintaing the contextual text messages.
meaning of the text messages.
Improved method for custom settings Improved method for custom settings
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Custom settings now use a string based value, it is longer needed to import Custom settings now use a string based value, it is longer needed to import
classes when customizing a setting:: classes when customizing a setting::
@@ -162,71 +145,64 @@ Instead the fully qualified name of the class must be passed as the setting valu
Removal of the OCR config setting Removal of the OCR config setting
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OCR behavior is now a document type property meaning that it can be turned OCR behavior is now a document type property meaning that it can be turned
on or off for specific document types. on or off for specific document types.
Per document language setting Per document language setting
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Previously the document language used for OCR was specified for the entire Previously the document language used for OCR was specified for the entire
installation. If documents in multiple languages were uploaded some suffered installation. If documents in multiple languages were uploaded some suffered
lower success rates. Now the language of each document can be specified. lower success rates. Now the language of each document can be specified.
Metadata validation and parsing support Metadata validation and parsing support
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
It is now possible to create functions to validate metadata value input or It is now possible to create functions to validate metadata value input or
parse and store corrected values. Three sample metadata validations functions parse and store corrected values. Three sample metadata validations functions
are included: ``Parse date and time``, ``Parse date`` and ``Parse time``. are included: ``Parse date and time``, ``Parse date`` and ``Parse time``.
Removal of 960 grid system in favor Pure CSS's grid system Removal of 960 grid system in favor Pure CSS's grid system
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
By using Pure CSS's columns based grid system, the move towards a By using Pure CSS's columns based grid system, the move towards a
Bootstrap UI migration has advanced greatly. Bootstrap UI migration has advanced greatly.
Simplified UI Simplified UI
^^^^^^^^^^^^^ ~~~~~~~~~~~~~
All user actions as well as the logout button are now under the user functions All user actions as well as the logout button are now under the user functions
section. section.
Stable PDF previews generation Stable PDF previews generation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The way PDF were being generated has been improved greatly eliminating The way PDF were being generated has been improved greatly eliminating
spurious segmentation faults at the expense of a small speed penalty. spurious segmentation faults at the expense of a small speed penalty.
More technical documentation More technical documentation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Many new sub topics were added to the development section of the documentation Many new sub topics were added to the development section of the documentation
to allow developers to better understand the inner workings and philosophies to allow developers to better understand the inner workings and philosophies
of Mayan EDMS. of Mayan EDMS.
Other changes Other changes
^^^^^^^^^^^^^ ~~~~~~~~~~~~~
* Removal of the ``MAIN_SIDE_BAR_SEARCH`` setting * Removal of the MAIN_SIDE_BAR_SEARCH setting
* Removal of ``THEMES`` setting and themes support * Removal of THEMES and themes support
* Removal of ``VERBOSE_LOGIN`` setting * Removal of VERBOSE_LOGIN setting
* Removal of graphics backend supported file format list view * Removal of graphics backend supported file format list view
* Removal of the ``MAIN_DISABLE_ICONS`` setting * Removal of the MAIN_DISABLE_ICONS setting
* Removal of specialized Sentry support * Removal of specialized Sentry support
* Removal of the ``MAIN_ENABLE_SCROLL_JS`` setting * Removal of the MAIN_ENABLE_SCROLL_JS setting
* Remove hardcoded root (/) redirections * Remove hardcoded root (/) redirections
* Removal of ``APSCheduler`` as a requirement * Removal of APSCheduler as a requirement
* Removal of the scheduled jobs view * Removal of the scheduled jobs view
* Removal of the ``web_theme`` app * Removal of the web_theme app
* Removal of the sources icon selection support * Removal of the sources icon selection support
* Removal of the in-app help panels * Removal of the in-app help panels
* Removal of the duplicate document search feature * Removal of the duplicate document search feature
@@ -236,8 +212,7 @@ Other changes
Upgrading from a previous version Upgrading from a previous version
--------------------------------- =================================
IMPORTANT! Before running the upgrade make sure none of your documents have IMPORTANT! Before running the upgrade make sure none of your documents have
duplicated metadata types, meaning that the same metadata type must not appear duplicated metadata types, meaning that the same metadata type must not appear
twice for any given document. twice for any given document.
@@ -265,7 +240,7 @@ Migrate existing database schema with::
During the migration several messages of stale content types can occur: During the migration several messages of stale content types can occur:
:: .. code-block:: bash
The following content types are stale and need to be deleted: The following content types are stale and need to be deleted:
@@ -303,7 +278,7 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* You will have to redefine your document sources due to the new extended models * You will have to redefine your document sources due to the new extended models
for this app. for this app.
@@ -312,80 +287,80 @@ Backward incompatible changes
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* :github-issue:`30` Document workflows * `issue #30 <https://github.com/mayan-edms/mayan-edms/issues/30>`_ Document workflows
* :github-issue:`32` Watched folders * `issue #32 <https://github.com/mayan-edms/mayan-edms/issues/32>`_ Watched folders
* :github-issue:`34` Postprocessing document queue * `issue #34 <https://github.com/mayan-edms/mayan-edms/issues/34>`_ Postprocessing document queue
* :github-issue:`35` Metadata validation * `issue #35 <https://github.com/mayan-edms/mayan-edms/issues/35>`_ Metadata validation
* :github-issue:`37` Add from __future__ import unicode_literals * `issue #37 <https://github.com/mayan-edms/mayan-edms/issues/37>`_ Add from __future__ import unicode_literals
* :github-issue:`39` Capitalization of messages * `issue #39 <https://github.com/mayan-edms/mayan-edms/issues/39>`_ Capitalization of messages
* :github-issue:`40` Update references to root ('/') path * `issue #40 <https://github.com/mayan-edms/mayan-edms/issues/40>`_ Update references to root ('/') path
* :github-issue:`46` Advanced search past 1st page * `issue #46 <https://github.com/mayan-edms/mayan-edms/issues/46>`_ Advanced search past 1st page
* :github-issue:`49` Problems with large pdf files * `issue #49 <https://github.com/mayan-edms/mayan-edms/issues/49>`_ Problems with large pdf files
* :github-issue:`50` raise CommandNotFound(path) * `issue #50 <https://github.com/mayan-edms/mayan-edms/issues/50>`_ raise CommandNotFound(path)
* :github-issue:`51` Search with ANONYMOUS error * `issue #51 <https://github.com/mayan-edms/mayan-edms/issues/51>`_ Search with ANONYMOUS error
* :github-issue:`55` Document approval cicle? * `issue #55 <https://github.com/mayan-edms/mayan-edms/issues/55>`_ Document approval cicle?
* :github-issue:`56` Removal of non essential features, views, models * `issue #56 <https://github.com/mayan-edms/mayan-edms/issues/56>`_ Removal of non essential features, views, models
* :github-issue:`57` Migrate to Celery for task query and periodic tasks * `issue #57 <https://github.com/mayan-edms/mayan-edms/issues/57>`_ Migrate to Celery for task query and periodic tasks
* :github-issue:`64` Pluralize messages properly * `issue #64 <https://github.com/mayan-edms/mayan-edms/issues/64>`_ Pluralize messages properly
* :github-issue:`65` Backport the ability to receive documents via email * `issue #65 <https://github.com/mayan-edms/mayan-edms/issues/65>`_ Backport the ability to receive documents via email
* :github-issue:`66` Python 3 compatibility: Add from __future__ import unicode_literals and remove all u'' * `issue #66 <https://github.com/mayan-edms/mayan-edms/issues/66>`_ Python 3 compatibility: Add from __future__ import unicode_literals and remove all u''
* :github-issue:`68` Revise and update the use gettext vs. gettext_lazy * `issue #68 <https://github.com/mayan-edms/mayan-edms/issues/68>`_ Revise and update the use gettext vs. gettext_lazy
* :github-issue:`69` Feature removal: remove "Unregistered" message from the title bar * `issue #69 <https://github.com/mayan-edms/mayan-edms/issues/69>`_ Feature removal: remove "Unregistered" message from the title bar
* :github-issue:`71` Add retry support to the converter task * `issue #71 <https://github.com/mayan-edms/mayan-edms/issues/71>`_ Add retry support to the converter task
* :github-issue:`72` Delete unused static icons * `issue #72 <https://github.com/mayan-edms/mayan-edms/issues/72>`_ Delete unused static icons
* :github-issue:`74` Cache a document's first document version * `issue #74 <https://github.com/mayan-edms/mayan-edms/issues/74>`_ Cache a document's first document version
* :github-issue:`75` Move automatic OCR queueing from a configuration settings to a property of Document Type model * `issue #75 <https://github.com/mayan-edms/mayan-edms/issues/75>`_ Move automatic OCR queueing from a configuration settings to a property of Document Type model
* :github-issue:`77` Add document view permission support to the search app * `issue #77 <https://github.com/mayan-edms/mayan-edms/issues/77>`_ Add document view permission support to the search app
* :github-issue:`78` COMMON_TEMPORARY_DIRECTORY seems not to be used everywhere * `issue #78 <https://github.com/mayan-edms/mayan-edms/issues/78>`_ COMMON_TEMPORARY_DIRECTORY seems not to be used everywhere
* :github-issue:`79` Error installing * `issue #79 <https://github.com/mayan-edms/mayan-edms/issues/79>`_ Error installing
* :github-issue:`82` Make document type a required field * `issue #82 <https://github.com/mayan-edms/mayan-edms/issues/82>`_ Make document type a required field
* :github-issue:`83` Simplify source app views and navigation * `issue #83 <https://github.com/mayan-edms/mayan-edms/issues/83>`_ Simplify source app views and navigation
* :github-issue:`84` Remove template context variable 'object_name' to improve translations * `issue #84 <https://github.com/mayan-edms/mayan-edms/issues/84>`_ Remove template context variable 'object_name' to improve translations
* :github-issue:`85` Reset page count for a single document * `issue #85 <https://github.com/mayan-edms/mayan-edms/issues/85>`_ Reset page count for a single document
* :github-issue:`86` Move migrations to new 'south_migrations' folders * `issue #86 <https://github.com/mayan-edms/mayan-edms/issues/86>`_ Move migrations to new 'south_migrations' folders
* :github-issue:`87` Per document language selection * `issue #87 <https://github.com/mayan-edms/mayan-edms/issues/87>`_ Per document language selection
* :github-issue:`88` Remove metadata type selection from the upload wizard * `issue #88 <https://github.com/mayan-edms/mayan-edms/issues/88>`_ Remove metadata type selection from the upload wizard
* :github-issue:`89` Allow metadata types to be required for specific document types * `issue #89 <https://github.com/mayan-edms/mayan-edms/issues/89>`_ Allow metadata types to be required for specific document types
* :github-issue:`90` Remove the app_registry app * `issue #90 <https://github.com/mayan-edms/mayan-edms/issues/90>`_ Remove the app_registry app
* :github-issue:`91` Don't preserve the ?page= URL query string value when switching sources during document upload * `issue #91 <https://github.com/mayan-edms/mayan-edms/issues/91>`_ Don't preserve the ?page= URL query string value when switching sources during document upload
* :github-issue:`92` Make register_multi_item_links class aware * `issue #92 <https://github.com/mayan-edms/mayan-edms/issues/92>`_ Make register_multi_item_links class aware
* :github-issue:`95` Installation error on Mac OSX; OSError: [Errno 2] No such file or directory * `issue #95 <https://github.com/mayan-edms/mayan-edms/issues/95>`_ Installation error on Mac OSX; OSError: [Errno 2] No such file or directory
* :github-issue:`96` Remove hard code User model references * `issue #96 <https://github.com/mayan-edms/mayan-edms/issues/96>`_ Remove hard code User model references
* :github-issue:`97` Make multi item links a drop down list * `issue #97 <https://github.com/mayan-edms/mayan-edms/issues/97>`_ Make multi item links a drop down list
* :github-issue:`104` Finish polishing metadata validation patch * `issue #104 <https://github.com/mayan-edms/mayan-edms/issues/104>`_ Finish polishing metadata validation patch
* :github-issue:`105` Tie smart links setups to document types * `issue #105 <https://github.com/mayan-edms/mayan-edms/issues/105>`_ Tie smart links setups to document types
* :github-issue:`106` Convert document indexing app actions to Celery * `issue #106 <https://github.com/mayan-edms/mayan-edms/issues/106>`_ Convert document indexing app actions to Celery
* :github-issue:`107` Restrict document metadata addition and removal * `issue #107 <https://github.com/mayan-edms/mayan-edms/issues/107>`_ Restrict document metadata addition and removal
* :github-issue:`108` New home screen * `issue #108 <https://github.com/mayan-edms/mayan-edms/issues/108>`_ New home screen
* :github-issue:`109` Add Roles API endpoints * `issue #109 <https://github.com/mayan-edms/mayan-edms/issues/109>`_ Add Roles API endpoints
* :github-issue:`111` Add Checkouts API endpoints * `issue #111 <https://github.com/mayan-edms/mayan-edms/issues/111>`_ Add Checkouts API endpoints
* :github-issue:`112` Add OCR API endpoints * `issue #112 <https://github.com/mayan-edms/mayan-edms/issues/112>`_ Add OCR API endpoints
* :github-issue:`114` Implement UI language as user preference * `issue #114 <https://github.com/mayan-edms/mayan-edms/issues/114>`_ Implement UI language as user preference
* :github-issue:`116` Add documentation topic explicitly noting the binary requirements * `issue #116 <https://github.com/mayan-edms/mayan-edms/issues/116>`_ Add documentation topic explicitly noting the binary requirements
* :github-issue:`118` When a metadata type is removed from a document type, remove it from all the documents of that type * `issue #118 <https://github.com/mayan-edms/mayan-edms/issues/118>`_ When a metadata type is removed from a document type, remove it from all the documents of that type
* :github-issue:`119` When a required metadata type is added to a document type, add it to all documents of that type * `issue #119 <https://github.com/mayan-edms/mayan-edms/issues/119>`_ When a required metadata type is added to a document type, add it to all documents of that type
* :github-issue:`126` Failing migration with SQLite * `issue #126 <https://github.com/mayan-edms/mayan-edms/issues/126>`_ Failing migration with SQLite
* :github-issue:`127` Failing migration with Postgres * `issue #127 <https://github.com/mayan-edms/mayan-edms/issues/127>`_ Failing migration with Postgres
* :github-issue:`128` Add Indexes API endpoints * `issue #128 <https://github.com/mayan-edms/mayan-edms/issues/128>`_ Add Indexes API endpoints
* :github-issue:`129` Search api shouldn't memorize requested page as part of the query * `issue #129 <https://github.com/mayan-edms/mayan-edms/issues/129>`_ Search api shouldn't memorize requested page as part of the query
* :github-issue:`130` Users API is not working correctly * `issue #130 <https://github.com/mayan-edms/mayan-edms/issues/130>`_ Users API is not working correctly
* :github-issue:`131` Is there an API to update a user's password? * `issue #131 <https://github.com/mayan-edms/mayan-edms/issues/131>`_ Is there an API to update a user's password?
* :github-issue:`137` Enhancement of language selection * `issue #137 <https://github.com/mayan-edms/mayan-edms/issues/137>`_ Enhancement of language selection
* :github-issue:`138` Possibility to keep zoom factor * `issue #138 <https://github.com/mayan-edms/mayan-edms/issues/138>`_ Possibility to keep zoom factor
* :github-issue:`139` Translatability of language selection * `issue #139 <https://github.com/mayan-edms/mayan-edms/issues/139>`_ Translatability of language selection
* :github-issue:`140` Thumbnail creation for ods crashing * `issue #140 <https://github.com/mayan-edms/mayan-edms/issues/140>`_ Thumbnail creation for ods crashing
* :github-issue:`143` Exception Value: 'exceptions.ValueError' object has no attribute 'messages' * `issue #143 <https://github.com/mayan-edms/mayan-edms/issues/143>`_ Exception Value: 'exceptions.ValueError' object has no attribute 'messages'
* :github-issue:`144` Behavior of 'Edit metadata' (Recent Documents) * `issue #144 <https://github.com/mayan-edms/mayan-edms/issues/144>`_ Behavior of 'Edit metadata' (Recent Documents)
* :github-issue:`146` Periodic task not initiated for mail boxes and watch folders * `issue #146 <https://github.com/mayan-edms/mayan-edms/issues/146>`_ Periodic task not initiated for mail boxes and watch folders
* :github-issue:`149` Attribute error in document download * `issue #149 <https://github.com/mayan-edms/mayan-edms/issues/149>`_ Attribute error in document download
* :github-issue:`150` Double second menu entry * `issue #150 <https://github.com/mayan-edms/mayan-edms/issues/150>`_ Double second menu entry
* :github-issue:`152` Document content empty * `issue #152 <https://github.com/mayan-edms/mayan-edms/issues/152>`_ Document content empty
* :github-issue:`153` south migration with postgres: documents: 031_remove_orphan_documents * `issue #153 <https://github.com/mayan-edms/mayan-edms/issues/153>`_ south migration with postgres: documents: 031_remove_orphan_documents
* :github-issue:`154` south migration with postgres: tags: 0002_auto__add_tag__chg_field_tagproperties_tag * `issue #154 <https://github.com/mayan-edms/mayan-edms/issues/154>`_ south migration with postgres: tags: 0002_auto__add_tag__chg_field_tagproperties_tag
* :github-issue:`157` upload new version of a document not working * `issue #157 <https://github.com/mayan-edms/mayan-edms/issues/157>`_ upload new version of a document not working
* :github-issue:`158` Plural form not matching singular form in ocr app bug i18n * `issue #158 <https://github.com/mayan-edms/mayan-edms/issues/158>`_ Plural form not matching singular form in ocr app bug i18n
.. _Celery: http://www.celeryproject.org/ .. _Celery: http://www.celeryproject.org/

View File

@@ -1,34 +1,31 @@
Version 2.0.1 ===============================
============= Mayan EDMS v2.0.1 release notes
===============================
Released: January 22, 2016 Released: January 22, 2016
Changes Welcome to Mayan EDMS v2.0.1
-------
What's new in Mayan EDMS v2.0.1
===============================
Required metadata was not enforce correctly Required metadata was not enforce correctly
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -------------------------------------------
Fixed a situation where documents having required metadata could still be Fixed a situation where documents having required metadata could still be
uploaded without entering a value for the required metadata. uploaded without entering a value for the required metadata.
Fix multiple document metadata adding Fix multiple document metadata adding
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -------------------------------------
Fixed a bug when adding metadata to multiple documents. Fixed a bug when adding metadata to multiple documents.
Fix multiple document metadata editing Fix multiple document metadata editing
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ --------------------------------------
Fixed a bug that made it impossible to edit multiple documents' metadata values Fixed a bug that made it impossible to edit multiple documents' metadata values
if one of the documents had no previous value for it's metadata. if one of the documents had no previous value for it's metadata.
Updated Vagrant file Updated Vagrant file
^^^^^^^^^^^^^^^^^^^^ --------------------
The included Vagrant file now provide 2 boxes: development and production. The included Vagrant file now provide 2 boxes: development and production.
Selection which kind of box to provision is as easy as executing:: Selection which kind of box to provision is as easy as executing::
@@ -40,22 +37,18 @@ or
Other changes Other changes
^^^^^^^^^^^^^ -------------
* None * None
Removals Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -63,9 +56,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -79,9 +71,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -95,15 +86,14 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* :gitlab-issue:`243` System allows a user to skip entering values for a required metadata field while uploading a new document * `GitLab issue #243 <https://gitlab.com/mayan-edms/mayan-edms/issues/243>`_ System allows a user to skip entering values for a required metadata field while uploading a new document
* :gitlab-issue:`245` Add multiple metadata not possible * `GitLab issue #245 <https://gitlab.com/mayan-edms/mayan-edms/issues/245>`_ Add multiple metadata not possible
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ .. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,39 +1,34 @@
Version 2.0.2 ===============================
============= Mayan EDMS v2.0.2 release notes
===============================
Released: February 15, 2016 Released: February 15, 2016
Changes Welcome to Mayan EDMS v2.0.2
-------
What's new
==========
Fine tune "Update" checkbox from the metadata entry form Fine tune "Update" checkbox from the metadata entry form
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ --------------------------------------------------------
Previously the update checkbox was ignored during the metadata step of the Previously the update checkbox was ignored during the metadata step of the
document upload wizard with the wizard always creating a metadata entry for the document upload wizard with the wizard always creating a metadata entry for the
new document even if the entry was left blank. The checkbox now controls whether new document even if the entry was left blank. The checkbox now controls whether
or not the wizard will store try to create the metadata entry. or not the wizard will store try to create the metadata entry.
Fix empty optional lookup metadata fields behavior Fix empty optional lookup metadata fields behavior
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ --------------------------------------------------
An edge case was fixed that caused validation to be executed for empty metadata An edge case was fixed that caused validation to be executed for empty metadata
fields that had a value lookup list. fields that had a value lookup list.
Remove Docker files Remove Docker files
^^^^^^^^^^^^^^^^^^^ -------------------
Included Docker and Docker Compose files were removed since the Mayan EDMS Docker Included Docker and Docker Compose files were removed since the Mayan EDMS Docker
(https://gitlab.com/mayan-edms/mayan-edms-docker) repository is stable. (https://gitlab.com/mayan-edms/mayan-edms-docker) repository is stable.
Other changes Other changes
^^^^^^^^^^^^^ -------------
- Only extract validation error messages from ValidationError exception instances.
- Only extract validation error messages from ``ValidationError`` exception
instances.
- Add 2 second delay to document version tests to workaround MySQL not storing - Add 2 second delay to document version tests to workaround MySQL not storing
the millisecond part of the document version's timestamp. the millisecond part of the document version's timestamp.
- Install testing dependencies when installing development dependencies. - Install testing dependencies when installing development dependencies.
@@ -41,18 +36,15 @@ Other changes
- Move metadata form value validation to .clean() method. - Move metadata form value validation to .clean() method.
- Add HTML tags stripping to the browser title generation template. - Add HTML tags stripping to the browser title generation template.
Removals Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -60,9 +52,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -76,9 +67,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -92,14 +82,13 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* :gitlab-issue:`250` Empty optional lookup metadata trigger validation error. * `GitLab issue #250 <https://gitlab.com/mayan-edms/mayan-edms/issues/250>`_ Empty optional lookup metadata trigger validation error.
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ .. _PyPI: https://pypi.python.org/pypi/mayan-edms/

File diff suppressed because it is too large Load Diff

View File

@@ -1,46 +1,41 @@
Version 2.1.1 ===============================
============= Mayan EDMS v2.1.1 release notes
===============================
Released: May 17, 2016 Released: May 17, 2016
What's new
==========
This is a bugfix release and all users are encouraged to upgrade. This is a bugfix release and all users are encouraged to upgrade.
Changes
-------
Fix object column resolution issue in navigation app Fix object column resolution issue in navigation app
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ----------------------------------------------------
Version 2.1 includes a navigation feature that allows model instances from a Version 2.1 includes a navigation feature that allows model instances from a
queryset generated using the .defer() or .only() Django filter optimization queryset generated using the .defer() or .only() Django filter optimization
features to resolve to their parent class transparently. This optimization features to resolve to their parent class transparently. This optimization
caused problems with the sources app which uses a caused problems with the sources app which uses a
Missing Tesseract language files Missing Tesseract language files
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ --------------------------------
The Tesseract OCR backend now reports if the tesseract language file is missing The Tesseract OCR backend now reports if the tesseract language file is missing
for the requested document's language. for the requested document's language.
Other changes Other changes
^^^^^^^^^^^^^ -------------
- Ensure the automatic default index is created after the default document type. - Ensure the automatic default index is created after the default document type.
Removals Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -48,9 +43,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -64,9 +58,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -80,16 +73,15 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* :gitlab-issue:`288` Can't add sources in mayan-edms 2.1. * `GitLab issue #288 <https://gitlab.com/mayan-edms/mayan-edms/issues/288>`_ Can't add sources in mayan-edms 2.1.
* :gitlab-issue:`289` OCR fails with Exception. * `GitLab issue #289 <https://gitlab.com/mayan-edms/mayan-edms/issues/289>`_ OCR fails with Exception.
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ .. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,30 +1,31 @@
Version 2.1.10 ================================
============== Mayan EDMS v2.1.10 release notes
================================
Released: February 13, 2017 Released: February 13, 2017
What's new
==========
This is a micro release equal to the previews version from the user's point of view. This is a micro release equal to the previews version from the user's point of view.
The version number was increase to workaround some issues with the Python The version number was increase to workaround some issues with the Python
Package Index not allowing re-uploads. Package Index not allowing re-uploads.
Changes Changes
------- -------------
- Update Makefile to use twine for releases. - Update Makefile to use twine for releases.
- Add Makefile target to make test releases. - Add Makefile target to make test releases.
Removals Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -32,9 +33,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -48,9 +48,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -64,13 +63,12 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* None * None

View File

@@ -1,13 +1,17 @@
Version 2.1.11 ================================
============== Mayan EDMS v2.1.11 release notes
================================
Released: March 14, 2017 Released: March 14, 2017
What's new
==========
This is a bug-fix release and all users are encouraged to upgrade. The focus This is a bug-fix release and all users are encouraged to upgrade. The focus
of this micro release was REST API improvement. of this micro release was REST API improvement.
Changes Changes
------- -------------
- Added a quick rename serializer to the document type API serializer. - Added a quick rename serializer to the document type API serializer.
- Added per document type, workflow list API view. The URL for this endpoint is - Added per document type, workflow list API view. The URL for this endpoint is
@@ -20,7 +24,7 @@ Changes
- Implemented document workflows transition ACLs. GitLab issue #321. - Implemented document workflows transition ACLs. GitLab issue #321.
- Add document comments API endpoints. GitHub issue #249. - Add document comments API endpoints. GitHub issue #249.
- Add support for overriding the Celery class. The setting is named - Add support for overriding the Celery class. The setting is named
``MAYAN_CELERY_CLASS`` and expects a dotted python path to the class to use. MAYAN_CELERY_CLASS and expects a dotted python path to the class to use.
- Changed the document upload view in source app to not use the HTTP referer - Changed the document upload view in source app to not use the HTTP referer
URL blindly, but instead recompose the URL using known view name. Needed URL blindly, but instead recompose the URL using known view name. Needed
when integrating Mayan EDMS into other app via using iframes. when integrating Mayan EDMS into other app via using iframes.
@@ -30,18 +34,15 @@ Changes
- Added support for adding or editing document types to smart links via the - Added support for adding or editing document types to smart links via the
API. API.
Removals Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -49,9 +50,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -65,9 +65,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -81,16 +80,15 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* :github-issue:`355` Add document comments API [$50 US] * `Github issue #249 <https://github.com/mayan-edms/mayan-edms/issues/249>`_ Add document comments API [$50 US]
* :gitlab-issue:`321` Transition ACLS * `GitLab issue #321 <https://gitlab.com/mayan-edms/mayan-edms/issues/321>`_ Transition ACLS
* :gitlab-issue:`357` It should be possible to retrieve all workflows for a given DocumentType from the API * `GitLab issue #357 <https://gitlab.com/mayan-edms/mayan-edms/issues/357>`_ It should be possible to retrieve all workflows for a given DocumentType from the API
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ .. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,45 +1,40 @@
Version 2.1.2 ===============================
============= Mayan EDMS v2.1.2 release notes
===============================
Released: May 20, 2016 Released: May 20, 2016
What's new
==========
This is a bugfix release and all users are encouraged to upgrade. This is a bugfix release and all users are encouraged to upgrade.
Changes
-------
Language list sorting Language list sorting
^^^^^^^^^^^^^^^^^^^^^ ---------------------
The document language list and the user locale profile language list are now The document language list and the user locale profile language list are now
sorted to make it easier to find the desired language. sorted to make it easier to find the desired language.
Fixed the metadata lookup options: {{ users }} and {{ groups }} Fixed the metadata lookup options: {{ users }} and {{ groups }}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ---------------------------------------------------------------
When configuring metadata type lookup options the {{ users }} and {{ groups }} When configuring metadata type lookup options the {{ users }} and {{ groups }}
special options can be used to display a list of users or a list of groups. special options can be used to display a list of users or a list of groups.
These options where producing a list in the wrong format and were updated. These options where producing a list in the wrong format and were updated.
Other changes Other changes
^^^^^^^^^^^^^ -------------
- Add Makefile for common development tasks - Add Makefile for common development tasks
Removals Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -47,9 +42,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -63,9 +57,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -79,15 +72,15 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* `GitLab issue #290 <https://gitlab.com/mayan-edms/mayan-edms/issues/290>`_ Unicode characters not supported as metadata values
* `GitLab issue #292 <https://gitlab.com/mayan-edms/mayan-edms/issues/292>`_ Sort languages by name not by abbreviation
* :gitlab-issue:`290` Unicode characters not supported as metadata values
* :gitlab-issue:`292` Sort languages by name not by abbreviation
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ .. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,26 +1,24 @@
Version 2.1.3 ===============================
============= Mayan EDMS v2.1.3 release notes
===============================
Released: June 29, 2016 Released: June 29, 2016
What's new
==========
This is a bug-fix release and all users are encouraged to upgrade. This is a bug-fix release and all users are encouraged to upgrade.
Changes
-------
Temporary files cleanup Temporary files cleanup
^^^^^^^^^^^^^^^^^^^^^^^ -----------------------
When uploading PDF files that had been OCRed by previous software, the text When uploading PDF files that had been OCRed by previous software, the text
parser backend that uses Poppler, would leave behind some temporary files in parser backend that uses Poppler, would leave behind some temporary files in
the /tmp folder. The issue has been resolved and from the fix a test mixin the /tmp folder. The issue has been resolved and from the fix a test mixin
system check has been devised that will identify places in the codebase with system check has been devised that will identify places in the codebase with
similar behaviors, reducing the recurrence of similar issues in the future. similar behaviors, reducing the recurrence of similar issues in the future.
Other changes Other changes
^^^^^^^^^^^^^ -------------
- Add help message when initialsetup migration phase fails. Relates to GitLab issue #296 - Add help message when initialsetup migration phase fails. Relates to GitLab issue #296
- Start using self.setdout instead of print as per documentation. - Start using self.setdout instead of print as per documentation.
- Fix GitLab issue #295, "When editing a user the top bar jumps to the name of the user". - Fix GitLab issue #295, "When editing a user the top bar jumps to the name of the user".
@@ -29,18 +27,15 @@ Other changes
- Add missing temporary file cleanup for office documents. - Add missing temporary file cleanup for office documents.
- Fix file descriptor leak in the document signature download test. - Fix file descriptor leak in the document signature download test.
Removals Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -48,9 +43,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -64,9 +58,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -80,16 +73,15 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* :gitlab-issue:`295` When editing a user the top bar jumps to the name of the user * `GitLab issue #295 <https://gitlab.com/mayan-edms/mayan-edms/issues/295>`_ When editing a user the top bar jumps to the name of the user
* :gitlab-issue:`309` Temp files quickly filling-up my /tmp (1GB tmpfs) * `GitLab issue #309 <https://gitlab.com/mayan-edms/mayan-edms/issues/309>`_ Temp files quickly filling-up my /tmp (1GB tmpfs)
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ .. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,13 +1,16 @@
Version 2.1.4 ===============================
============= Mayan EDMS v2.1.4 release notes
===============================
Released: October 28, 2016 Released: October 28, 2016
What's new
==========
This is a bug-fix release and all users are encouraged to upgrade. This is a bug-fix release and all users are encouraged to upgrade.
Changes Other changes
------- -------------
- Fix statistics namespace list display view - Fix statistics namespace list display view
- Fix events list display view - Fix events list display view
- Update required Django version to 1.8.15 - Update required Django version to 1.8.15
@@ -18,18 +21,15 @@ Changes
- New GPG backend system - New GPG backend system
- Minor documentation updates - Minor documentation updates
Removals Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -37,9 +37,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -53,9 +52,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -69,16 +67,15 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* :gitlab-issue:`311` acl page return ContentType:Document * `GitLab issue #311 <https://gitlab.com/mayan-edms/mayan-edms/issues/311>`_ acl page return ContentType:Document
* :gitlab-issue:`316` Error when trying to access the statistics * `GitLab issue #316 <https://gitlab.com/mayan-edms/mayan-edms/issues/316>`_ Error when trying to access the statistics
* :gitlab-issue:`324` Document signature tests fail in Ubuntu 16.10 * `GitLab issue #324 <https://gitlab.com/mayan-edms/mayan-edms/issues/324>`_ Document signature tests fail in Ubuntu 16.10
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ .. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,12 +1,16 @@
Version 2.1.5 ===============================
============= Mayan EDMS v2.1.5 release notes
===============================
Released: November 8, 2016 Released: November 8, 2016
What's new
==========
This is a bug-fix release and all users are encouraged to upgrade. This is a bug-fix release and all users are encouraged to upgrade.
Changes Other changes
------- -------------
- Backport resize transformation math operation fix (GitLab #319). - Backport resize transformation math operation fix (GitLab #319).
- Update Pillow to 3.1.2 - Update Pillow to 3.1.2
@@ -20,18 +24,15 @@ Changes
- Fix ACL create view HTML response type. (GitLab #335). - Fix ACL create view HTML response type. (GitLab #335).
- Expland staging folder and watch folder explanation. - Expland staging folder and watch folder explanation.
Removals Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -39,9 +40,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -55,9 +55,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -71,18 +70,18 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* `GitLab issue #319 <https://gitlab.com/mayan-edms/mayan-edms/issues/319>`_ TransformationResize issue with very "long" image
* `GitLab issue #331 <https://gitlab.com/mayan-edms/mayan-edms/issues/331>`_ Trash List View: Items actions should be limited
* `GitLab issue #333 <https://gitlab.com/mayan-edms/mayan-edms/issues/333>`_ "Unable to run gpg - it may not be available."
* `GitLab issue #334 <https://gitlab.com/mayan-edms/mayan-edms/issues/334>`_ Perfomance improvment: prevent unnecessary image.resize in TransformationZoom
* `GitLab issue #335 <https://gitlab.com/mayan-edms/mayan-edms/issues/335>`_ Wrong HTML Content-Type in ACL->NEW
* :gitlab-issue:`319` TransformationResize issue with very "long" image
* :gitlab-issue:`331` Trash List View: Items actions should be limited
* :gitlab-issue:`333` "Unable to run gpg - it may not be available."
* :gitlab-issue:`334` Perfomance improvment: prevent unnecessary image.resize in TransformationZoom
* :gitlab-issue:`335` Wrong HTML Content-Type in ACL->NEW
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ .. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,28 +1,29 @@
Version 2.1.6 ===============================
============= Mayan EDMS v2.1.6 release notes
===============================
Released: November 23, 2016 Released: November 23, 2016
What's new
==========
This is a bug-fix release and all users are encouraged to upgrade. This is a bug-fix release and all users are encouraged to upgrade.
Changes Changes
------- -------------
- Fix variable name typo in the rotation transformation class. - Fix variable name typo in the rotation transformation class.
- Update translations - Update translations
Removals Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -30,9 +31,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -46,9 +46,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -62,13 +61,12 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* None * None

View File

@@ -1,13 +1,17 @@
Version 2.1.7 ===============================
============= Mayan EDMS v2.1.7 release notes
===============================
Released: February 2, 2017 Released: February 2, 2017
What's new
==========
This is a bug-fix release and all users are encouraged to upgrade. The focus This is a bug-fix release and all users are encouraged to upgrade. The focus
of this micro release was REST API improvement. of this micro release was REST API improvement.
Changes Changes
------- -------------
- Improved user management API endpoints (initial work by @lokeshmanmode): - Improved user management API endpoints (initial work by @lokeshmanmode):
@@ -40,18 +44,15 @@ Changes
- The parser and validation fields of the metadata type model have been enable - The parser and validation fields of the metadata type model have been enable
in the metadata type API serializer. in the metadata type API serializer.
Removals Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -59,9 +60,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -75,9 +75,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -91,13 +90,12 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* None * None

View File

@@ -1,13 +1,17 @@
Version 2.1.8 ===============================
============= Mayan EDMS v2.1.8 release notes
===============================
Released: February 12, 2017 Released: February 12, 2017
What's new
==========
This is a bug-fix release and all users are encouraged to upgrade. The focus This is a bug-fix release and all users are encouraged to upgrade. The focus
of this micro release was REST API improvement. of this micro release was REST API improvement.
Changes Changes
------- -------------
- Fixes in the trashed document API endpoints. - Fixes in the trashed document API endpoints.
- Improved tags API PUT and PATCH endpoints. - Improved tags API PUT and PATCH endpoints.
@@ -19,18 +23,15 @@ Changes
- Add Smart link API endpoints. - Add Smart link API endpoints.
- Add writable versions of the Document and Document Type serializers (GitLab issues #348 and #349). - Add writable versions of the Document and Document Type serializers (GitLab issues #348 and #349).
Removals Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -38,9 +39,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -54,9 +54,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -70,16 +69,15 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* :gitlab-issue:`310` Metadata's lookup with chinese messages when new document * `GitLab issue #310 <https://gitlab.com/mayan-edms/mayan-edms/issues/310>`_ Metadata's lookup with chinese messages when new document
* :gitlab-issue:`348` REST API: Document version comments are not getting updated * `GitLab issue #348 <https://gitlab.com/mayan-edms/mayan-edms/issues/348>`_ REST API: Document version comments are not getting updated
* :gitlab-issue:`349` REST API: Document Label, Description are not able to update * `GitLab issue #349 <https://gitlab.com/mayan-edms/mayan-edms/issues/349>`_ REST API: Document Label, Description are not able to update
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ .. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,30 +1,30 @@
Version 2.1.9 ===============================
============= Mayan EDMS v2.1.9 release notes
===============================
Released: February 13, 2017 Released: February 13, 2017
What's new
==========
This is a micro release equal to the previews version from the user's point of view. This is a micro release equal to the previews version from the user's point of view.
The version number was increase to workaround some issues with the Python The version number was increase to workaround some issues with the Python
Package Index not allowing re-uploads. Package Index not allowing re-uploads.
Changes Changes
------- -------------
- Update make file to Workaround long standing pypa wheel bug #99 - Update make file to Workaround long standing pypa wheel bug #99
Removals Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -32,9 +32,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -48,9 +47,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -64,13 +62,12 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* None * None

View File

@@ -1,14 +1,14 @@
Version 2.1 =============================
=========== Mayan EDMS v2.1 release notes
=============================
Released: May 14, 2016 Released: May 14, 2016
Changes What's new
------- ==========
Upgrade to use Django 1.8.13 Upgrade to use Django 1.8.13
^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ----------------------------
With the end of life support for Django 1.7, moving to the next Mayan EDMS 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 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 1.8 as it is very compatible with 1.7 and required minimal changes. Django 1.8
@@ -16,35 +16,28 @@ 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 new Django version is required, the project can stay in Django 1.8 for a good
amount of time with no downsides. amount of time with no downsides.
Remove remaining references to Django's User model Remove remaining references to Django's User model
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ --------------------------------------------------
The few remaining hard code references to Django's User model that were missed 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 in a previous release have been removed. Using a custom User model with Mayan
should present very little if any obstacles. should present very little if any obstacles.
Remove included login required middleware Remove included login required middleware
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -----------------------------------------
The custom middleware include with Mayan EDMS that forces user to be 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 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 a dedicated 3rd party Django app for that purpose. The app chosen was
django-stronghold (http://mikegrouchy.com/django-stronghold/). django-stronghold (http://mikegrouchy.com/django-stronghold/).
Improve generation of success and error messages for class based views 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 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 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 messages with be more explicit in describing what the view has or was trying
to manipulate. to manipulate.
Remove ownership concept from folders Remove ownership concept from folders
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -------------------------------------
Currently Folders in Mayan EDMS have a field that stores a reference to the 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 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 that there should never be any explicit ownership of any object. Ownership
@@ -52,10 +45,8 @@ 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 removal of the user field from the Folders model brings this app in line with
the defined behavior. the defined behavior.
Replacement of strip_spaces middleware with the spaceless template tag Replacement of strip_spaces middleware with the spaceless template tag
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ----------------------------------------------------------------------
As a size optimization technique HTML content was dynamically stripped of spaces 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 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 the content being served and if found to be of text/HTML type spaces between
@@ -66,64 +57,50 @@ 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 minimal but since it happened at every response a small increase in speed
is expected for all deployment scenarios. is expected for all deployment scenarios.
Deselect the update checkbox for optional metadata by default Deselect the update checkbox for optional metadata by default
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -------------------------------------------------------------
During the last releases the behavior of the of metadata edit checkbox has seen 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 several tune ups. Thanks to community feedback one small change has been
introduced. The edit checkbox will be deselected by default for all optional introduced. The edit checkbox will be deselected by default for all optional
document type metadata entries. document type metadata entries.
Implement per document type document creation permission Implement per document type document creation permission
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ --------------------------------------------------------
If is now possible to grant the document creation permission to a role for a 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 document type. Previously document creation was a "blanket" permission. Having
the permission meant that user could create any type of document. With this 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 change it is now possible to restrict which types of document users of a
specific role can create. specific role can create.
Make document type delete time period optional Make document type delete time period optional
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ----------------------------------------------
The entries that defined after how long a document in the trash would be 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 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 type has this option blank, the corresponding document of this type would never
be deleted from the trash can. be deleted from the trash can.
Fixed date locale handling in document properties, checkout and user detail views 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. 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 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 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. this timezone adjustment was not happening, this has been fully fixed.
Default index Default index
^^^^^^^^^^^^^ -------------
During new installations a default index that organizes document by year/month 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 when they were uploaded will be created to help users better understand the
concept of indexes in Mayan EDMS. concept of indexes in Mayan EDMS.
HTML5 upload widget HTML5 upload widget
^^^^^^^^^^^^^^^^^^^ -------------------
A common request is the ability to just drap and drop documents from other 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 windows into Mayan EDMS's document upload wizard. This release includes that
capability and will also show a completion bar for the upload. Document capability and will also show a completion bar for the upload. Document
uploading is sped up dramatically with this change. uploading is sped up dramatically with this change.
Message of the Day app Message of the Day app
^^^^^^^^^^^^^^^^^^^^^^ ----------------------
Administrators wanting to display announcements has no other way to do so 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 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 that allows for the creation of messages to be shown at the user login
@@ -131,10 +108,8 @@ screen. These messages can have an activation and an expiration date and
time. These messages are useful for display company access policies, time. These messages are useful for display company access policies,
maintenance announcement, etc. maintenance announcement, etc.
Document signing Document signing
^^^^^^^^^^^^^^^^ ----------------
The biggest change for this release if the addition of document signing from 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 within the UI. Enterprise users request this feature very often as in those
environments cryptographic signatures are a basic requirement. Previously environments cryptographic signatures are a basic requirement. Previously
@@ -154,10 +129,8 @@ 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 they are accessed, this provides a very sizable speed improvement in document
access and availability. access and availability.
Other changes Other changes
^^^^^^^^^^^^^ =============
- Upgrade Python requirements to recent versions. - Upgrade Python requirements to recent versions.
- Rename 'Content' search box to 'OCR'. - Rename 'Content' search box to 'OCR'.
- Silence all Django 1.8 model import warnings. - Silence all Django 1.8 model import warnings.
@@ -188,12 +161,11 @@ Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -201,9 +173,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -217,9 +188,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -233,37 +203,36 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* :gitlab-issue:`137` Add app creation chapter to documentation. * `GitLab issue #137 <https://gitlab.com/mayan-edms/mayan-edms/issues/137>`_ Add app creation chapter to documentation.
* :gitlab-issue:`147` Add in app document signing. * `GitLab issue #147 <https://gitlab.com/mayan-edms/mayan-edms/issues/147>`_ Add in app document signing.
* :gitlab-issue:`161` Email backend setup documentation. * `GitLab issue #161 <https://gitlab.com/mayan-edms/mayan-edms/issues/161>`_ Email backend setup documentation.
* :gitlab-issue:`162` Add HTML5 file uploader. * `GitLab issue #162 <https://gitlab.com/mayan-edms/mayan-edms/issues/162>`_ Add HTML5 file uploader.
* :gitlab-issue:`191` Split index contents title into title and path/breadcrumb widget. * `GitLab issue #191 <https://gitlab.com/mayan-edms/mayan-edms/issues/191>`_ Split index contents title into title and path/breadcrumb widget.
* :gitlab-issue:`206` Support for dynamic LOGIN_EXEMPT_URLS. * `GitLab issue #206 <https://gitlab.com/mayan-edms/mayan-edms/issues/206>`_ Support for dynamic LOGIN_EXEMPT_URLS.
* :gitlab-issue:`208` Add tagging step to upload wizard. * `GitLab issue #208 <https://gitlab.com/mayan-edms/mayan-edms/issues/208>`_ Add tagging step to upload wizard.
* :gitlab-issue:`218` Cookie cutter template for Mayan apps. * `GitLab issue #218 <https://gitlab.com/mayan-edms/mayan-edms/issues/218>`_ Cookie cutter template for Mayan apps.
* :gitlab-issue:`222` Add notice board or Message of the Day. * `GitLab issue #222 <https://gitlab.com/mayan-edms/mayan-edms/issues/222>`_ Add notice board or Message of the Day.
* :gitlab-issue:`255` Remove hard coded User model. * `GitLab issue #225 <https://gitlab.com/mayan-edms/mayan-edms/issues/225>`_ Remove hard coded User model.
* :gitlab-issue:`232` "Create documents" is a blanket permission for a user to create a document of any document type. * `GitLab issue #232 <https://gitlab.com/mayan-edms/mayan-edms/issues/232>`_ "Create documents" is a blanket permission for a user to create a document of any document type.
* :gitlab-issue:`246` Upgrade to Django version 1.8 as Django 1.7 is end-of-life. * `GitLab issue #246 <https://gitlab.com/mayan-edms/mayan-edms/issues/246>`_ Upgrade to Django version 1.8 as Django 1.7 is end-of-life.
* :gitlab-issue:`251` Add method to disable metadata edit form "update" checkbox when not needed. * `GitLab issue #251 <https://gitlab.com/mayan-edms/mayan-edms/issues/251>`_ Add method to disable metadata edit form "update" checkbox when not needed.
* :gitlab-issue:`255` UnicodeDecodeError in apps/common/middleware/strip_spaces_widdleware.py. * `GitLab issue #255 <https://gitlab.com/mayan-edms/mayan-edms/issues/255>`_ UnicodeDecodeError in apps/common/middleware/strip_spaces_widdleware.py.
* :gitlab-issue:`256` typo in locale settings (Dutch). * `GitLab issue #256 <https://gitlab.com/mayan-edms/mayan-edms/issues/256>`_ typo in locale settings (Dutch).
* :gitlab-issue:`261` Feature: Document Access Audit Logging. * `GitLab issue #261 <https://gitlab.com/mayan-edms/mayan-edms/issues/261>`_ Feature: Document Access Audit Logging.
* :gitlab-issue:`265` Indexes show list (show indexe only if the user has ACLs on document type). * `GitLab issue #265 <https://gitlab.com/mayan-edms/mayan-edms/issues/265>`_ Indexes show list (show indexe only if the user has ACLs on document type).
* :gitlab-issue:`266` Smart links : Dynamic label with Postgresql. * `GitLab issue #266 <https://gitlab.com/mayan-edms/mayan-edms/issues/266>`_ Smart links : Dynamic label with Postgresql.
* :gitlab-issue:`267` Release 2.1 RC1 : Notes and ideas. * `GitLab issue #267 <https://gitlab.com/mayan-edms/mayan-edms/issues/267>`_ Release 2.1 RC1 : Notes and ideas.
* :gitlab-issue:`268` Release 2.1 RC1 : Bug to access inside an indexes. * `GitLab issue #268 <https://gitlab.com/mayan-edms/mayan-edms/issues/268>`_ Release 2.1 RC1 : Bug to access inside an indexes.
* :gitlab-issue:`270` Release 2.1 RC1 : Bug statistics. * `GitLab issue #270 <https://gitlab.com/mayan-edms/mayan-edms/issues/270>`_ Release 2.1 RC1 : Bug statistics.
* :gitlab-issue:`274` [Release 2.1 RC2] Web Tests. * `GitLab issue #274 <https://gitlab.com/mayan-edms/mayan-edms/issues/274>`_ [Release 2.1 RC2] Web Tests.
* :gitlab-issue:`275` [Release 2.1 RC2] Notes. * `GitLab issue #275 <https://gitlab.com/mayan-edms/mayan-edms/issues/275>`_ [Release 2.1 RC2] Notes.
* :gitlab-issue:`276` [Release 2.1 RC2] API Tests. * `GitLab issue #276 <https://gitlab.com/mayan-edms/mayan-edms/issues/276>`_ [Release 2.1 RC2] API Tests.
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ .. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,14 +1,14 @@
Version 2.2 =============================
=========== Mayan EDMS v2.2 release notes
=============================
Released: April 26, 2017 Released: April 26, 2017
Changes What's new
------- ==========
API changes API changes
^^^^^^^^^^^ -----------
Refactor of the metadata API URLs to use the resource/sub resource paradigm. Refactor of the metadata API URLs to use the resource/sub resource paradigm.
Before: Before:
@@ -66,10 +66,8 @@ resolved to '/api/documents/<pk>/pages/<page_pk>/pages'.
- API endpoint to view or change a role's groups. - API endpoint to view or change a role's groups.
- API endpoint to view or change a role's permissions. - API endpoint to view or change a role's permissions.
Code cleanups Code cleanups
^^^^^^^^^^^^^ -------------
As with every release time was dedicated to improve the organization, size, and As with every release time was dedicated to improve the organization, size, and
readability of code. To this end the licenses of each app were moved to their readability of code. To this end the licenses of each app were moved to their
own module in every app, called licenses.py. As part of the code cleanup the own module in every app, called licenses.py. As part of the code cleanup the
@@ -78,10 +76,8 @@ installed alongside Mayan EDMS for debugging purposes has been removed. The
dependency on django-filetransfer has been removed by using dependency on django-filetransfer has been removed by using
django-downloadviews which allows the creation of class based download views. django-downloadviews which allows the creation of class based download views.
Performance Performance
^^^^^^^^^^^ -----------
The document language list has been moved from the document model to the The document language list has been moved from the document model to the
document form. This change speeds up loading time, document properties views document form. This change speeds up loading time, document properties views
and API documentation views. This version includes the new image caching and API documentation views. This version includes the new image caching
@@ -90,36 +86,28 @@ document's images resulting in an overall display loading speed up. The fonts
used are now loaded from Mayan EDMS itself and not from the web. This change used are now loaded from Mayan EDMS itself and not from the web. This change
also allow Mayan EDMS to work in a completely off-line manner. also allow Mayan EDMS to work in a completely off-line manner.
Searching Searching
^^^^^^^^^ ---------
Support for searching pages as well as documents has been added. This Support for searching pages as well as documents has been added. This
functionality has been exposed in the API too. functionality has been exposed in the API too.
Security Security
^^^^^^^^ --------
This release enables the password validation for the user password validation This release enables the password validation for the user password validation
support provided by Django. This change allows administrator to set password support provided by Django. This change allows administrator to set password
policies limiting the minimum amount of characters needed for example. For policies limiting the minimum amount of characters needed for example. For
more information on how to configure the password validation feature refer more information on how to configure the password validation feature refer
to the :django-docs:`topics/auth/passwords/#enabling-password-validation` to Django's documentation at: https://docs.djangoproject.com/en/1.11/topics/auth/passwords/#enabling-password-validation
Sources Sources
^^^^^^^ -------
To help test the interval sources (POP3 Email, IMAP Email, Watch folders) a To help test the interval sources (POP3 Email, IMAP Email, Watch folders) a
"Check now" button was added that allows users to trigger the source's "Check now" button was added that allows users to trigger the source's
document fetching code instantly. Previously users had to wait until the next document fetching code instantly. Previously users had to wait until the next
scheduled interval to verify if their source's settings were correct. scheduled interval to verify if their source's settings were correct.
Testing Testing
^^^^^^^ -------
The testing process has been simplified by adding a new option '--mayan-apps' The testing process has been simplified by adding a new option '--mayan-apps'
to the test runner that automatically tests all Mayan EDMS apps that report to to the test runner that automatically tests all Mayan EDMS apps that report to
include tests. The app flag that indicates when an app has test was changed include tests. The app flag that indicates when an app has test was changed
@@ -130,13 +118,11 @@ to 81%.
A custom test runner replacing the previous custom management command A custom test runner replacing the previous custom management command
called `runtests`. Testing for orphaned temporary files and orphaned file called `runtests`. Testing for orphaned temporary files and orphaned file
handles is now optional and controlled by the ``COMMON_TEST_FILE_HANDLES`` and handles is now optional and controlled by the COMMON_TEST_FILE_HANDLES and
``COMMON_TEST_FILE_HANDLES`` settings. COMMON_TEST_FILE_HANDLES settings.
User interface User interface
^^^^^^^^^^^^^^ --------------
To avoid warping on long full names or usernames, the user's full name or To avoid warping on long full names or usernames, the user's full name or
username is no longer displayed in the main menu. Instead the word "Profile" username is no longer displayed in the main menu. Instead the word "Profile"
is displayed and the users's full name or username is displayed when the is displayed and the users's full name or username is displayed when the
@@ -155,10 +141,8 @@ A new workflow view that lists documents currently executing a workflow and
documents by their specific current workflow state has been added to the documents by their specific current workflow state has been added to the
main menu. main menu.
Other changes Other changes
^^^^^^^^^^^^^ -------------
- Cabinets app is now integrated as a core app. - Cabinets app is now integrated as a core app.
- Now that the Cabinets app is included, the Folders app has been disabled - Now that the Cabinets app is included, the Folders app has been disabled
by default. To enable the Folders apps add the following line to your by default. To enable the Folders apps add the following line to your
@@ -172,22 +156,17 @@ Other changes
- Add support for attaching multiple tags to single or multiple documents. - Add support for attaching multiple tags to single or multiple documents.
- Refactor the workflow for removing tags from single and multiple documents. - Refactor the workflow for removing tags from single and multiple documents.
- Move new version creation blocking from the documents app to the checkouts app. - Move new version creation blocking from the documents app to the checkouts app.
- ``DEBUG`` now defaults to ``False``. - DEBUG now defaults to False.
- Production settings don't override the ``DEBUG`` variable. ``DEBUG`` can be - Production settings don't override the DEBUG variable. DEBUG can be set to True
set to ``True`` on production install to debug errors live. on production install to debug errors live.
- Refactor add document to folder view to allow adding a documents to multiple - Refactor add document to folder view to allow adding a documents to multiple folders at the same time.
folders at the same time. - Refactor the remove document from folder view to allow removing documents from multiple folders at the same time.
- Refactor the remove document from folder view to allow removing documents - Refactor the document mailing views and add support for sending multiple documents via email at the same time.
from multiple folders at the same time. - Refactor the document metadata views and add support for adding multiple metadata types to a document at the same time.
- Refactor the document mailing views and add support for sending multiple - Addition of a new OCR backend using PyOCR. This backend tries first to do OCR
documents via email at the same time. using libtesseract. If libtesseract is not available the backend defaults to
- Refactor the document metadata views and add support for adding multiple calling the Tesseract executable.
metadata types to a document at the same time. - Make the lock_manager.backends.file_lock.FileLock the new default locking backend.
- Addition of a new OCR backend using ``PyOCR``. This backend tries first to
do OCR using ``libtesseract``. If ``libtesseract`` is not available the
backend defaults to calling the ``tesseract`` executable.
- Make the ``lock_manager.backends.file_lock.FileLock`` the new default
locking backend.
- New transformations added: - New transformations added:
- Rotate 90 degrees - Rotate 90 degrees
@@ -200,22 +179,19 @@ Other changes
- Add tool to launch all workflows. GitLab issue #355 - Add tool to launch all workflows. GitLab issue #355
Removals Removals
-------- --------
- Removal of the OCR_TESSERACT_PATH configuration setting.
- Removal of the ``OCR_TESSERACT_PATH`` configuration setting. - Removal of the Tesseract OCR backend. Replaced with a PyOCR backend.
- Removal of the Tesseract OCR backend. Replaced with a ``PyOCR`` backend.
- Remove usage of pytesseract Python library. - Remove usage of pytesseract Python library.
- Installation app. - Installation app.
- Recent searches feature. - Recent searches feature.
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
If installed via PIP If installed via PIP
^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~
Type in the console:: Type in the console::
@@ -223,9 +199,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
If installed using Git If installed using Git
^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -243,9 +218,8 @@ Remove deprecated requirements::
$ pip uninstall -y -r removals.txt $ pip uninstall -y -r removals.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -259,27 +233,26 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* :gitlab-issue:`185` Add support for nested menus * `GitLab issue #185 <https://gitlab.com/mayan-edms/mayan-edms/issues/185>`_ Add support for nested menus
* :gitlab-issue:`285` Dashboard widgets * `GitLab issue #285 <https://gitlab.com/mayan-edms/mayan-edms/issues/285>`_ Dashboard widgets
* :gitlab-issue:`294` Move new version creation blocking from the documents app to the checkouts app * `GitLab issue #294 <https://gitlab.com/mayan-edms/mayan-edms/issues/294>`_ Move new version creation blocking from the documents app to the checkouts app
* :gitlab-issue:`301` Remove the installation app * `GitLab issue #301 <https://gitlab.com/mayan-edms/mayan-edms/issues/301>`_ Remove the installation app
* :gitlab-issue:`303` Update urlpatterns in urls.py files to be a list of django.conf.urls.url() instances instead. * `GitLab issue #303 <https://gitlab.com/mayan-edms/mayan-edms/issues/303>`_ Update urlpatterns in urls.py files to be a list of django.conf.urls.url() instances instead.
* :gitlab-issue:`304` Remove string view arguments of url() in urls.py files. * `GitLab issue #304 <https://gitlab.com/mayan-edms/mayan-edms/issues/304>`_ Remove string view arguments of url() in urls.py files.
* :gitlab-issue:`307` Enter multiple Tags at once * `GitLab issue #307 <https://gitlab.com/mayan-edms/mayan-edms/issues/307>`_ Enter multiple Tags at once
* :gitlab-issue:`310` Metadata's lookup with chinese messages when new document * `GitLab issue #310 <https://gitlab.com/mayan-edms/mayan-edms/issues/310>`_ Metadata's lookup with chinese messages when new document
* :gitlab-issue:`311` acl page return ContentType:Document * `GitLab issue #311 <https://gitlab.com/mayan-edms/mayan-edms/issues/311>`_ acl page return ContentType:Document
* :gitlab-issue:`319` TransformationResize issue with very "long" image * `GitLab issue #319 <https://gitlab.com/mayan-edms/mayan-edms/issues/319>`_ TransformationResize issue with very "long" image
* :gitlab-issue:`328` Upgrade Warning/Error during performupgrade (v2.1.3 to v2.1.4) * `GitLab issue #328 <https://gitlab.com/mayan-edms/mayan-edms/issues/328>`_ Upgrade Warning/Error during performupgrade (v2.1.3 to v2.1.4)
* :gitlab-issue:`342` Tags should be of unordered / unsorted data type * `GitLab issue #342 <https://gitlab.com/mayan-edms/mayan-edms/issues/342>`_ Tags should be of unordered / unsorted data type
* :gitlab-issue:`343` Bootstrap's dependency on fonts.googleapis.com causes Mayan EDMS web interface load slowly if public internet is unreachable * `GitLab issue #343 <https://gitlab.com/mayan-edms/mayan-edms/issues/343>`_ Bootstrap's dependency on fonts.googleapis.com causes Mayan EDMS web interface load slowly if public internet is unreachable
* :gitlab-issue:`355` Workflow changes only on new added documents * `GitLab issue #355 <https://gitlab.com/mayan-edms/mayan-edms/issues/355>`_ Workflow changes only on new added documents
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ .. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,14 +1,17 @@
Version 2.3 =============================
=========== Mayan EDMS v2.3 release notes
=============================
Released: June 08, 2017 Released: June 08, 2017
What's new
==========
This is a bug-fix and minor feature release and all users are encouraged to This is a bug-fix and minor feature release and all users are encouraged to
upgrade. upgrade.
Changes Changes
------- -------------
- Index node expression template field changed from a 128 character field to an - Index node expression template field changed from a 128 character field to an
unlimited size text field to allow for complex indexing expressions. unlimited size text field to allow for complex indexing expressions.
- When updating the metadata of a document, any input in the value form field - When updating the metadata of a document, any input in the value form field
@@ -37,18 +40,15 @@ Changes
can be accessed using {{ document.workflow.publish_workflow.get_current_state }}. can be accessed using {{ document.workflow.publish_workflow.get_current_state }}.
- Added a new API endpoint to display a list of all the available search models. - Added a new API endpoint to display a list of all the available search models.
Removals Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -56,9 +56,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -72,9 +71,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -88,17 +86,16 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* :gitlab-issue:`371` Auto select checkbox when updating metadata * `GitLab issue #371 <https://gitlab.com/mayan-edms/mayan-edms/issues/371>`_ Auto select checkbox when updating metadata
* :gitlab-issue:`372` (Feature request) Allow 'rebuild index' to rebuild only a selected index * `GitLab issue #372 <https://gitlab.com/mayan-edms/mayan-edms/issues/372>`_ (Feature request) Allow 'rebuild index' to rebuild only a selected index
* :gitlab-issue:`383` Page not found when deployed to sub-uri * `GitLab issue #383 <https://gitlab.com/mayan-edms/mayan-edms/issues/383>`_ Page not found when deployed to sub-uri
* :gitlab-issue:`385` mountindex: how to specify FUSE mount option allow_other? * `GitLab issue #385 <https://gitlab.com/mayan-edms/mayan-edms/issues/385>`_ mountindex: how to specify FUSE mount option allow_other?
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ .. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,14 +1,14 @@
Version 2.4 =============================
=========== Mayan EDMS v2.4 release notes
=============================
Released: June 23, 2017 Released: June 23, 2017
Changes What's new
------- ==========
SANE document source SANE document source
^^^^^^^^^^^^^^^^^^^^ --------------------
A new document source has been added with the ability to retrieve documents from A new document source has been added with the ability to retrieve documents from
scanners directly. This new document source uses the SANE (Scanner Access Now Easy) scanners directly. This new document source uses the SANE (Scanner Access Now Easy)
(https://en.wikipedia.org/wiki/Scanner_Access_Now_Easy) API client to communicate (https://en.wikipedia.org/wiki/Scanner_Access_Now_Easy) API client to communicate
@@ -16,32 +16,26 @@ with USB and network scanners. SANE must be properly installed for this document
source to work. Your scanner must also be supported by the SANE API source to work. Your scanner must also be supported by the SANE API
(http://www.sane-project.org/sane-supported-devices.html). (http://www.sane-project.org/sane-supported-devices.html).
Automatic PDF orientation detection Automatic PDF orientation detection
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -----------------------------------
The orientation of PDF documents is now detected at creation and a rotation The orientation of PDF documents is now detected at creation and a rotation
transformation applied to each of the document's pages to correct the orientation. transformation applied to each of the document's pages to correct the orientation.
Environment variables Environment variables
^^^^^^^^^^^^^^^^^^^^^ ---------------------
Configuration options can now be updated from environment variables. To update Configuration options can now be updated from environment variables. To update
a configuration option, prepend the string ``MAYAN_`` to the name of the configuration a configuration option, prepend the string `MAYAN_` to the name of the configuration
option. For example, to increase the number of documents displayed per search results option. For example, to increase the number of documents displayed per search results
page (from a default of 40) to 50 documents, set the environment variable page (from a default of 40) to 50 documents, set the environment variable
``MAYAN_COMMON_PAGINATE_BY`` to 50 with:: MAYAN_COMMON_PAGINATE_BY to 50 with::
$ export MAYAN_COMMON_PAGINATE_BY=50 $ export MAYAN_COMMON_PAGINATE_BY=50
and restart Mayan EDMS. A list of the configuration options can be found in the and restart Mayan EDMS. A list of the configuration options can be found in the
:menuselection:`Setup --> Settings` menu. `Setup` menu, under `Settings`.
Math filters Math filters
^^^^^^^^^^^^ ------------
The django-mathfilters (https://pypi.python.org/pypi/django-mathfilters) package The django-mathfilters (https://pypi.python.org/pypi/django-mathfilters) package
has been included to provide proper math filters in the indexes. An example of has been included to provide proper math filters in the indexes. An example of
this is indexing documents by quarter:: this is indexing documents by quarter::
@@ -50,46 +44,39 @@ this is indexing documents by quarter::
Expand searchable objects Expand searchable objects
^^^^^^^^^^^^^^^^^^^^^^^^^ -------------------------
Previously, only documents and later on document pages were searchable. This release Previously, only documents and later on document pages were searchable. This release
add support for searching for tags, metadata types and cabinets. This search support add support for searching for tags, metadata types and cabinets. This search support
is available via the dynamic search API. is available via the dynamic search API.
Management command to reset locks Management command to reset locks
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ---------------------------------
During testing or development error occur and locks can remain behind, blocking During testing or development error occur and locks can remain behind, blocking
execution of a process or task until they expire. To help resolve this a execution of a process or task until they expire. To help resolve this a
management command has been added called `purgelocks` that will delete all locks management command has been added called `purgelocks` that will delete all locks
in the system. in the system.
Index by workflow state Index by workflow state
^^^^^^^^^^^^^^^^^^^^^^^ -----------------------
Support was added to update the a document indexes from workflow state changes. Support was added to update the a document indexes from workflow state changes.
To make workflow referencing easier from the index template, a new fields was To make workflow referencing easier from the index template, a new fields was
added to the workflow model called internal_name. For example, for a workflow added to the workflow model called internal_name. For example, for a workflow
called "Publishing Workflow" with an internal name of ``publishing_workflow``, called `Publishing Workflow` with an internal name of `publishing_workflow`,
use the following string to reference the current state in an index:: use the following string to reference the current state in an index::
{{ document.workflow.publishing_workflow.get_current_state }} {{ document.workflow.publishing_workflow.get_current_state }}
Task manager Task manager
^^^^^^^^^^^^ ------------
A new app to monitor the distribution and consumption of background task has been A new app to monitor the distribution and consumption of background task has been
added. This app is call "Task manager" and can be found in the "Tools" menu. added. This app is call `Task manager` and can be found in the `Tools` menu.
Use this new tool to diagnose your background task workers or to determine when Use this new tool to diagnose your background task workers or to determine when
to scale up the number of workers. to scale up the number of workers.
Other Changes Other Changes
^^^^^^^^^^^^^ -------------
- Improve render of documents with no pages. - Improve render of documents with no pages.
- Fix repeated permission list API URL. GitLab issue #389. - Fix repeated permission list API URL. GitLab issue #389.
- Fix role creation API endpoint not returning id. GitLab issue #390. - Fix role creation API endpoint not returning id. GitLab issue #390.
@@ -97,22 +84,19 @@ Other Changes
- Add hardware requirements. GitHub issue #247. - Add hardware requirements. GitHub issue #247.
- Fix URL query string encoding for the document page navigation views. GitLab - Fix URL query string encoding for the document page navigation views. GitLab
issue #383. issue #383.
- Truncate views titles via the ``APPEARANCE_MAXIMUM_TITLE_LENGTH`` setting. - Truncate views titles via the APPEARANCE_MAXIMUM_TITLE_LENGTH setting.
GitLab issue #217. GitLab issue #217.
- Add link to show a document's OCR errors. GitLab issue #291. - Add link to show a document's OCR errors. GitLab issue #291.
Removals Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -120,9 +104,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -136,9 +119,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -152,24 +134,23 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* :github-issue:`247` Hardware requirements * `GitHub issue #247 <https://github.com/mayan-edms/mayan-edms/issues/247>`_ Hardware requirements
* :gitlab-issue:`132` Task queue viewer * `GitLab issue #132 <https://gitlab.com/mayan-edms/mayan-edms/issues/132>`_ Task queue viewer
* :gitlab-issue:`217` [Documents] Truncate document label for avoid double lines in mobile or reduce font * `GitLab issue #217 <https://gitlab.com/mayan-edms/mayan-edms/issues/217>`_ [Documents] Truncate document label for avoid double lines in mobile or reduce font
* :gitlab-issue:`221` Add flush lock management command * `GitLab issue #221 <https://gitlab.com/mayan-edms/mayan-edms/issues/221>`_ Add flush lock management command
* :gitlab-issue:`291` Link to OCR error log from document OCR tab * `GitLab issue #291 <https://gitlab.com/mayan-edms/mayan-edms/issues/291>`_ Link to OCR error log from document OCR tab
* :gitlab-issue:`344` Add support for searching folders, tags, metadata. * `GitLab issue #344 <https://gitlab.com/mayan-edms/mayan-edms/issues/344>`_ Add support for searching folders, tags, metadata.
* :gitlab-issue:`383` Page not found when deployed to sub-uri * `GitLab issue #383 <https://gitlab.com/mayan-edms/mayan-edms/issues/383>`_ Page not found when deployed to sub-uri
* :gitlab-issue:`387` Document Scanning not Functioning on rotated landscape PDF's * `GitLab issue #387 <https://gitlab.com/mayan-edms/mayan-edms/issues/387>`_ Document Scanning not Functioning on rotated landscape PDF's
* :gitlab-issue:`389` How can we map permissions with a particular role using REST API? * `GitLab issue #389 <https://gitlab.com/mayan-edms/mayan-edms/issues/389>`_ How can we map permissions with a particular role using REST API?
* :gitlab-issue:`390` Id is not getting in response * `GitLab issue #390 <https://gitlab.com/mayan-edms/mayan-edms/issues/390>`_ Id is not getting in response
* :gitlab-issue:`391` "Rebuild indexes" does not work in Mayan EDMS 2.3 * `GitLab issue #391 <https://gitlab.com/mayan-edms/mayan-edms/issues/391>`_ "Rebuild indexes" does not work in Mayan EDMS 2.3
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ .. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,26 +1,24 @@
Version 2.5.1 ===============================
============= Mayan EDMS v2.5.1 release notes
===============================
Released: July 07, 2017 Released: July 07, 2017
Changes What's new
------- ==========
This version is identical to version 2.5. It was released to workaround some This version is identical to version 2.5. It was released to workaround some
issues with the recent migration of PyPI (https://mail.python.org/pipermail/distutils-sig/2017-June/030766.html) issues with the recent migration of PyPI (https://mail.python.org/pipermail/distutils-sig/2017-June/030766.html)
Removals Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -28,9 +26,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -44,9 +41,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -60,15 +56,14 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* :gitlab-issue:`378` Add metadata widget changes from @Macrobb * `GitLab issue #378 <https://gitlab.com/mayan-edms/mayan-edms/issues/378>`_ Add metadata widget changes from @Macrobb
* :gitlab-issue:`379` Add new document version list view permission. * `GitLab issue #379 <https://gitlab.com/mayan-edms/mayan-edms/issues/379>`_ Add new document version list view permission.
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ .. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,14 +1,14 @@
Version 2.5.2 ===============================
============= Mayan EDMS v2.5.2 release notes
===============================
Released: July 08, 2017 Released: July 08, 2017
Changes What's new
------- ==========
Improve duplicate document scan Improve duplicate document scan
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -------------------------------
Previously the way document creation code was enclosed in a single database Previously the way document creation code was enclosed in a single database
transactions. This cause the duplicate scan at upload code to received a transactions. This cause the duplicate scan at upload code to received a
document reference to uncommitted database data. The single database document reference to uncommitted database data. The single database
@@ -18,15 +18,13 @@ recevies saved and committed data.
Removals Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -34,9 +32,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -50,9 +47,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -66,13 +62,12 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* None * None

View File

@@ -1,30 +1,26 @@
Version 2.5 =============================
=========== Mayan EDMS v2.5 release notes
=============================
Released: July 07, 2017 Released: July 07, 2017
Changes What's new
------- ==========
OCR text download OCR text download
^^^^^^^^^^^^^^^^^ -----------------
A link and view were added to download the entire OCR text of a document as a A link and view were added to download the entire OCR text of a document as a
separate file. The link can be found under the "Actions" dropdown when the separate file. The link can be found under the "Actions" dropdown when the
"OCR" tab of a document is selected. "OCR" tab of a document is selected.
SANE document source SANE document source
^^^^^^^^^^^^^^^^^^^^ --------------------
A validation error was being raised when the resolution field of the SANE A validation error was being raised when the resolution field of the SANE
document source was left blank. This issue has been fixed and works as expected document source was left blank. This issue has been fixed and works as expected
now. now.
Mailing profiles Mailing profiles
^^^^^^^^^^^^^^^^ ----------------
Previously, the way documents were emailed was controlled by configuration Previously, the way documents were emailed was controlled by configuration
settings that only system administrator could change as the OS level. It is settings that only system administrator could change as the OS level. It is
now possible to create mailing profiles from within the user interface. This now possible to create mailing profiles from within the user interface. This
@@ -40,19 +36,15 @@ which could be taxing email quota limits or triggering spam filters. For
more information on the multi-tenant plugin visit the Mayan app store at: more information on the multi-tenant plugin visit the Mayan app store at:
http://www.mayan-edms.com/store/ http://www.mayan-edms.com/store/
New transformation New transformation
^^^^^^^^^^^^^^^^^^ ------------------
A lineart transformation was added to reduce the amount of colors in a A lineart transformation was added to reduce the amount of colors in a
document's image to just 2. This is useful to increase the OCR accuracy on document's image to just 2. This is useful to increase the OCR accuracy on
some kind of documents whose color or layout may confuse the OCR engine some kind of documents whose color or layout may confuse the OCR engine
and lower the accuracy of the text recognition. and lower the accuracy of the text recognition.
UI reorganization UI reorganization
^^^^^^^^^^^^^^^^^ -----------------
The main menu was been reorganization for clarity of function. The "About" menu The main menu was been reorganization for clarity of function. The "About" menu
has been renamed to "System" to signify that the items in this menu relate has been renamed to "System" to signify that the items in this menu relate
to system configuration topics. The "Tools" and "Setup" sub-menus, were moved to system configuration topics. The "Tools" and "Setup" sub-menus, were moved
@@ -61,28 +53,22 @@ renamed to "User". Additionally, the "User" menu is now part of the main menu
instead of floating right on the layout. This change along with others instead of floating right on the layout. This change along with others
improve the usability on small devices like tablets and smartphones. improve the usability on small devices like tablets and smartphones.
PDF compatibility updates PDF compatibility updates
^^^^^^^^^^^^^^^^^^^^^^^^^ -------------------------
Support for non-compliant, "broken", and PDFs encrypted with no passwords has Support for non-compliant, "broken", and PDFs encrypted with no passwords has
been added. Previously no effort was made to process the images for these been added. Previously no effort was made to process the images for these
files. The code for detecting the number of pages in a PDF has also been files. The code for detecting the number of pages in a PDF has also been
improved to retry several methods when failing on non-compliant PDF documents. improved to retry several methods when failing on non-compliant PDF documents.
Office documents compatibility updates Office documents compatibility updates
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ --------------------------------------
Improvements to the Libre Office conversion code were added, including a Improvements to the Libre Office conversion code were added, including a
workaround for Libre Office bug #37531 (https://bugs.documentfoundation.org/show_bug.cgi?id=37531) workaround for Libre Office bug #37531 (https://bugs.documentfoundation.org/show_bug.cgi?id=37531)
which sometimes manifested when uploading multiple office documents which sometimes manifested when uploading multiple office documents
sequentially. sequentially.
Metadata setup UI improvements Metadata setup UI improvements
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ------------------------------
A new widget to define the document type to metadata type relationship has been A new widget to define the document type to metadata type relationship has been
added. The new widget provides a method to switch between required metadata added. The new widget provides a method to switch between required metadata
and optional metadata for a document type. This new method is not only faster and optional metadata for a document type. This new method is not only faster
@@ -93,10 +79,8 @@ type view but also from the metadata type view eliminating travel between these
two views when creating new metadata types and assigning them to document two views when creating new metadata types and assigning them to document
types. types.
Duplicated document scanning Duplicated document scanning
^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ----------------------------
Support to scan and list duplicated document scanning was added in the form of Support to scan and list duplicated document scanning was added in the form of
a new document list link under the "Documents" main menu. Every time a document a new document list link under the "Documents" main menu. Every time a document
is uploaded, a document scan will be triggered to determine if the new document is uploaded, a document scan will be triggered to determine if the new document
@@ -110,31 +94,27 @@ addition of being able to search documents by their checksum. This was done by
indexing the checksum database field and by adding the checksum as a search indexing the checksum database field and by adding the checksum as a search
field in the advanced document search view and via the API. field in the advanced document search view and via the API.
Login session control Login session control
^^^^^^^^^^^^^^^^^^^^^ ---------------------
Support was added to control the length of time a log in session lasts. First Support was added to control the length of time a log in session lasts. First
from the user interface side of things a "Remember me" checkbox was added to from the user interface side of things a "Remember me" checkbox was added to
the log in form that will cause the session to persist after the browser is the log in form that will cause the session to persist after the browser is
closed. If this checkbox is left blank the session will be destroyed when the closed. If this checkbox is left blank the session will be destroyed when the
browser closes and the user will need to log in again when accessing any of the browser closes and the user will need to log in again when accessing any of the
URLs. The second part of this feature is for administrators. The configuration URLs. The second part of this feature is for administrators. The configuration
setting ``AUTHENTICATION_MAXIMUM_SESSION_LENGTH`` was added to control the setting AUTHENTICATION_MAXIMUM_SESSION_LENGTH was added to control the maximum
maximum time a logged in session will persist when users click the "Remember me" time a logged in session will persist when users click the "Remember me"
checkbox. The default of this setting is 30 days. checkbox. The default of this setting is 30 days.
Document image cache disabling Document image cache disabling
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ------------------------------
It is now possible to disable the document page image caching. The document It is now possible to disable the document page image caching. The document
image cache works on two level and hence two setting options were added. image cache works on two level and hence two setting options were added.
The first is the ``DOCUMENTS_DISABLE_BASE_IMAGE_CACHE`` option which disables the The first is the DOCUMENTS_DISABLE_BASE_IMAGE_CACHE option which disables the
first layer of caching, the generation of a master image file for each document first layer of caching, the generation of a master image file for each document
page. This means that subsequent request for a page's image will trigger the page. This means that subsequent request for a page's image will trigger the
conversion of the document from its original uploaded file. The second option, conversion of the document from its original uploaded file. The second option,
``DOCUMENTS_DISABLE_TRANSFORMED_IMAGE_CACHE``, disables just the caching of the DOCUMENTS_DISABLE_TRANSFORMED_IMAGE_CACHE, disables just the caching of the
transformed (rotated, resized, zoomed) images of document pages. The settings transformed (rotated, resized, zoomed) images of document pages. The settings
can be used together or separately depending on how much disk space saving is can be used together or separately depending on how much disk space saving is
desired. These settings give control over the trade-off between disk space desired. These settings give control over the trade-off between disk space
@@ -142,24 +122,19 @@ savings and higher CPU utilization. These settings are ideal for installations
with a lot of documents, that want to conserve disk space, and have CPU capacity with a lot of documents, that want to conserve disk space, and have CPU capacity
to spare. Multi-tenant installations can also benefit from these new settings. to spare. Multi-tenant installations can also benefit from these new settings.
Document filter by workflow state Document filter by workflow state
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ---------------------------------
A few versions over, a main menu item was added to list documents by their A few versions over, a main menu item was added to list documents by their
workflow and/or their current workflow state. Support for filtering by the workflow and/or their current workflow state. Support for filtering by the
initial workflow state has been added to this feature. initial workflow state has been added to this feature.
Support for restoring forgotten password Support for restoring forgotten password
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ----------------------------------------
Views and templates were added to enable the typical "Forgotten Views and templates were added to enable the typical "Forgotten
password" worflow using a signed token via email. password" worflow using a signed token via email.
Other Changes Other Changes
^^^^^^^^^^^^^ -------------
- Add missing OCR migration. - Add missing OCR migration.
- Improve error output of the performupgrade command to debug upgrade errors - Improve error output of the performupgrade command to debug upgrade errors
that could stop an upgrade (missing document files, etc). that could stop an upgrade (missing document files, etc).
@@ -178,14 +153,14 @@ Other Changes
- Make sure lookup selection widgets also trigger the metadata update - Make sure lookup selection widgets also trigger the metadata update
checkbox on change. checkbox on change.
- Usability improvements on small displays. - Usability improvements on small displays.
- Removal of the ``CONVERTER_LIBREOFFICE_PATH`` and ``CONVERTER_PDFTOPPM_PATH`` - Removal of the CONVERTER_LIBREOFFICE_PATH and CONVERTER_PDFTOPPM_PATH
settings. These setting have been consolidated into settings. These setting have been consolidated into
``CONVERTER_GRAPHICS_BACKEND_CONFIG``. CONVERTER_GRAPHICS_BACKEND_CONFIG.
- Improve the documentation of the document creation API endpoint. - Improve the documentation of the document creation API endpoint.
GitHub issue #255. Thanks to @lcerliani opening the issue. GitHub issue #255. Thanks to @lcerliani opening the issue.
- Libre Office conversion improvements. Give every libreoffice instance - Libre Office conversion improvements. Give every libreoffice instance
its own separate ``$HOME`` directory. Additionally give every libreoffice its own separate $HOME directory. Additionally give every libreoffice
its own UserInstallation file in the ``$HOME`` directory. Works around its own UserInstallation file in the $HOME directory. Works around
Libre Office issue: https://bugs.documentfoundation.org/show_bug.cgi?id=37531 Libre Office issue: https://bugs.documentfoundation.org/show_bug.cgi?id=37531
Solves or affects GitLab issues #393 #258 #198 #175 Solves or affects GitLab issues #393 #258 #198 #175
- The trashed document deletion action is now a background task. This - The trashed document deletion action is now a background task. This
@@ -206,18 +181,15 @@ Other Changes
- Unicode handling improvements. - Unicode handling improvements.
- Update required versions of Pillow and django-suit. - Update required versions of Pillow and django-suit.
Removals Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -225,9 +197,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -241,9 +212,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -257,18 +227,17 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* :github-issue:`255` Uploading a local file via api * `GitHub issue #255 <https://github.com/mayan-edms/mayan-edms/issues/255>`_ Uploading a local file via api
* :gitlab-issue:`215` Download text contents * `GitLab issue #215 <https://gitlab.com/mayan-edms/mayan-edms/issues/215>`_ Download text contents
* :gitlab-issue:`286` User configurable mailer * `GitLab issue #286 <https://gitlab.com/mayan-edms/mayan-edms/issues/286>`_ User configurable mailer
* :gitlab-issue:`337` Better way to switch Optional to Required Metadata * `GitLab issue #337 <https://gitlab.com/mayan-edms/mayan-edms/issues/337>`_ Better way to switch Optional to Required Metadata
* :gitlab-issue:`373` (feature request) Allow selecting document types for metadata * `GitLab issue #373 <https://gitlab.com/mayan-edms/mayan-edms/issues/373>`_ (feature request) Allow selecting document types for metadata
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ .. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,25 +1,25 @@
Version 2.6 =============================
=========== Mayan EDMS v2.6 release notes
=============================
Released: July 18, 2017 Released: July 18, 2017
Changes What's new
------- ==========
Other Changes
-------------
- Fix issue when editing or removing metadata from multiple documents. - Fix issue when editing or removing metadata from multiple documents.
Removals Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -27,9 +27,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -43,9 +42,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -59,15 +57,13 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* None * None
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ .. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,13 +1,16 @@
Version 2.6.2 ===============================
============= Mayan EDMS v2.6.2 release notes
===============================
Released: July 22, 2017 Released: July 22, 2017
What's new
==========
This is a bug fix release and users are encouraged to upgrade. This is a bug fix release and users are encouraged to upgrade.
Changes Other Changes
------- -------------
- Fix deprecation warning to prepare upgrade to Django 1.11 and 2.0. - Fix deprecation warning to prepare upgrade to Django 1.11 and 2.0.
- Fix zoom feature in document page view. - Fix zoom feature in document page view.
- Add support to run tests against a MySQL or Postgres container. - Add support to run tests against a MySQL or Postgres container.
@@ -17,18 +20,15 @@ Changes
- Allow total page number instrospection of encrypted PDF with non ASCII - Allow total page number instrospection of encrypted PDF with non ASCII
user properties. GitLab issue #411. user properties. GitLab issue #411.
Removals Removals
-------- --------
* None * None
Upgrading from a previous version Upgrading from a previous version
--------------------------------- ---------------------------------
Using PIP Using PIP
^^^^^^^^^ ~~~~~~~~~
Type in the console:: Type in the console::
@@ -36,9 +36,8 @@ Type in the console::
the requirements will also be updated automatically. the requirements will also be updated automatically.
Using Git Using Git
^^^^^^^^^ ~~~~~~~~~
If you installed Mayan EDMS by cloning the Git repository issue the commands:: If you installed Mayan EDMS by cloning the Git repository issue the commands::
@@ -52,9 +51,8 @@ Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt $ pip install --upgrade -r requirements.txt
Common steps Common steps
^^^^^^^^^^^^ ~~~~~~~~~~~~
Migrate existing database schema with:: Migrate existing database schema with::
@@ -68,15 +66,13 @@ The upgrade procedure is now complete.
Backward incompatible changes Backward incompatible changes
----------------------------- =============================
* None * None
Bugs fixed or issues closed Bugs fixed or issues closed
--------------------------- ===========================
* None * None
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ .. _PyPI: https://pypi.python.org/pypi/mayan-edms/

Some files were not shown because too many files have changed in this diff Show More