Compare commits

..

4 Commits

Author SHA1 Message Date
Roberto Rosario
757cf3d869 Update forms app
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2019-05-30 23:38:23 -04:00
Roberto Rosario
5ea0b02964 Put deletion policies units before periods
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2019-05-25 15:07:54 -04:00
Roberto Rosario
3346a88f81 Update use of collectstatic to preparestatic
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2019-05-24 23:16:37 -04:00
Roberto Rosario
56c8e2741b Intial commit of the forms manager app
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2019-05-22 03:37:14 -04:00
2046 changed files with 38915 additions and 54109 deletions

2
.gitignore vendored
View File

@@ -30,6 +30,4 @@ static_collected/
/venv/
/venv3/
/whoosh_index/
google_fonts/
node_modules/
docs/build/

View File

@@ -17,9 +17,9 @@ job_docker_build:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script:
- docker build --pull -t "$CI_REGISTRY_IMAGE" -f docker/Dockerfile .
- VERSION=`cat docker/rootfs/version`
- VERSION=`cat docker/version`
- docker tag "$CI_REGISTRY_IMAGE" "$CI_REGISTRY_IMAGE:$VERSION"
- docker run --rm "$CI_REGISTRY_IMAGE:$VERSION" run_tests
- 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"
@@ -37,7 +37,7 @@ job_docker_push:
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script:
- VERSION=`cat docker/rootfs/version`
- VERSION=`cat docker/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
@@ -58,12 +58,11 @@ job_docker_nightly:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script:
- 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"
only:
- nightly
- staging
- /^clients\/.+$/
job_documentation_build:
stage: build_documentation
@@ -153,17 +152,15 @@ job_push_python:
- locale-gen en_US.UTF-8
- update-locale LANG=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-virtualenv python3-dev tesseract-ocr tesseract-ocr-deu
- virtualenv venv -p /usr/bin/python3
- . venv/bin/activate
- 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
- pip install -r requirements.txt -r requirements/testing-base.txt
only:
- releases/all
- releases/docker
- releases/python
- master
- staging
- nightly
- /^clients\/.+$/
test-mysql:
<<: *test_base
@@ -174,7 +171,6 @@ test-mysql:
- mysql:8.0.3
script:
- apt-get install -qq libmysqlclient-dev mysql-client
- . venv/bin/activate
- pip install mysqlclient
- 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
@@ -190,7 +186,6 @@ test-postgres:
- postgres
script:
- apt-get install -qq libpq-dev
- . venv/bin/activate
- pip install psycopg2
- python manage.py test --mayan-apps --settings=mayan.settings.testing.gitlab-ci.db_postgres --nomigrations
tags:
@@ -199,7 +194,6 @@ test-postgres:
test-sqlite:
<<: *test_base
script:
- . venv/bin/activate
- python manage.py test --mayan-apps --settings=mayan.settings.testing.gitlab-ci --nomigrations
deploy_demo:

View File

@@ -115,12 +115,6 @@ source_lang = en
source_file = mayan/apps/events/locale/en/LC_MESSAGES/django.po
type = PO
[mayan-edms.file_caching-3-0]
file_filter = mayan/apps/file_caching/locale/<lang>/LC_MESSAGES/django.po
source_lang = en
source_file = mayan/apps/file_caching/locale/en/LC_MESSAGES/django.po
type = PO
[mayan-edms.file_metadata-3-0]
file_filter = mayan/apps/file_metadata/locale/<lang>/LC_MESSAGES/django.po
source_lang = en
@@ -228,10 +222,3 @@ file_filter = mayan/apps/user_management/locale/<lang>/LC_MESSAGES/django.po
source_lang = en
source_file = mayan/apps/user_management/locale/en/LC_MESSAGES/django.po
type = PO
[mayan-edms.weblink-3-0]
file_filter = mayan/apps/weblinks/locale/<lang>/LC_MESSAGES/django.po
source_lang = en
source_file = mayan/apps/weblinks/locale/en/LC_MESSAGES/django.po
type = PO

View File

@@ -1,20 +0,0 @@
- Use Select2 widget for the document type selection form.
- Update source column matching to be additive and not exclusive.
- Add two columns to show the number of documents per workflow and
workflow state.
- Sort module.
- Add link to sort individual indexes.
- Support exclusions from source columns.
- Improve source column exclusion. Improve for model subclasses in partial querysets.
- Add sortable index instance label column.
- Add rectangle drawing transformation.
- Redactions app.
- Remove duplicated trashed document preview.
- Add label to trashed date and time document source column.
- Tag created event fix.
3.2.3 (2019-06-21)
* Add a reusable task to upload documents.
* Add MVP of the importer app.
3.2.4-3.2.8 (2019-10-07)

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -1,15 +1,5 @@
.PHONY: clean-pyc clean-build
DOCKER_MYSQL_IMAGE = mysql:8.0
DOCKER_ORACLE_IMAGE = wnameless/oracle-xe-11g
DOCKER_POSTGRES_IMAGE = postgres:9.6-alpine
DOCKER_REDIS_IMAGE = redis:5.0-alpine
PYTHON_MYSQL_VERSION = 1.4.4
PYTHON_PSYCOPG2_VERSION = 2.8.3
PYTHON_RABBITMQ_VERSION = 2.0.0
PYTHON_REDIS_VERSION = 3.2.1
help:
@echo "Usage: make <target>\n"
@awk 'BEGIN {FS = ":.*##"} /^[a-zA-Z_-]+:.*?## / { printf " * %-40s -%s\n", $$1, $$2 }' $(MAKEFILE_LIST)|sort
@@ -28,7 +18,7 @@ clean-pyc: ## Remove Python artifacts.
find . -name '*.pyc' -exec rm -f {} +
find . -name '*.pyo' -exec rm -f {} +
find . -name '*~' -exec rm -f {} +
find . -name '__pycache__' -exec rm -R -f {} +
# Testing
@@ -43,10 +33,10 @@ test-all: clean-pyc
test-launch-postgres:
@docker rm -f 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 $(DOCKER_POSTGRES_IMAGE)
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
pip install psycopg2==$(PYTHON_PSYCOPG2_VERSION)
while ! nc -z 127.0.0.1 5432; do sleep 1; done
pip install psycopg2
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
@@ -63,10 +53,10 @@ test-with-postgres-all: test-launch-postgres
test-launch-mysql:
@docker rm -f 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 $(DOCKER_MYSQL_IMAGE)
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
pip install mysqlclient==$(PYTHON_MYSQL_VERSION)
while ! nc -z 127.0.0.1 3306; do sleep 1; done
pip install mysqlclient
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;"
test-with-mysql: ## MODULE=<python module name> - Run tests for a single app, module or test class against a MySQL database container.
@@ -85,7 +75,7 @@ test-with-mysql-all: test-launch-mysql
test-launch-oracle:
@docker rm -f test-oracle || true
@docker volume rm test-oracle || true
docker run -d --name test-oracle -p 49160:22 -p 49161:1521 -e ORACLE_ALLOW_REMOTE=true -v test-oracle:/u01/app/oracle $(DOCKER_ORACLE_IMAGE)
docker run -d --name test-oracle -p 49160:22 -p 49161:1521 -e ORACLE_ALLOW_REMOTE=true -v test-oracle:/u01/app/oracle wnameless/oracle-xe-11g
# https://gist.github.com/kimus/10012910
pip install cx_Oracle
while ! nc -z 127.0.0.1 49161; do sleep 1; done
@@ -244,21 +234,20 @@ generate-requirements: ## Generate all requirements files from the project deped
# Dev server
runserver: ## Run the development server.
./manage.py runserver --nothreading --settings=mayan.settings.development $(ADDRPORT)
./manage.py runserver --settings=mayan.settings.development $(ADDRPORT)
runserver_plus: ## Run the Django extension's development server.
./manage.py runserver_plus --nothreading --settings=mayan.settings.development $(ADDRPORT)
./manage.py runserver_plus --settings=mayan.settings.development $(ADDRPORT)
shell_plus: ## Run the shell_plus command.
./manage.py shell_plus --settings=mayan.settings.development
test-with-docker-services-on: ## Launch and initialize production-like services using Docker (Postgres and Redis).
docker run -d --name redis -p 6379:6379 $(DOCKER_REDIS_IMAGE)
docker run -d --name postgres -p 5432:5432 $(DOCKER_POSTGRES_IMAGE)
docker run -d --name redis -p 6379:6379 redis
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 5432; do sleep 1; done
sleep 4
pip install psycopg2==$(PYTHON_PSYCOPG2_VERSION) redis==$(PYTHON_REDIS_VERSION)
./manage.py initialsetup --settings=mayan.settings.staging.docker
test-with-docker-services-off: ## Stop and delete the Docker production-like services.
@@ -269,10 +258,10 @@ test-with-docker-frontend: ## Launch a front end instance that uses the producti
./manage.py runserver --settings=mayan.settings.staging.docker
test-with-docker-worker: ## Launch a worker instance that uses the production-like services.
DJANGO_SETTINGS_MODULE=mayan.settings.staging.docker ./manage.py celery worker -A mayan -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 run -d --name mysql -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=True -e MYSQL_DATABASE=mayan_edms $(DOCKER_MYSQL_IMAGE)
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
docker-mysql-off: ## Stop and delete the MySQL Docker container.
@@ -280,7 +269,7 @@ docker-mysql-off: ## Stop and delete the MySQL Docker container.
docker rm mysql
docker-postgres-on: ## Launch and initialize a PostgreSQL Docker container.
docker run -d --name postgres -p 5432:5432 $(DOCKER_POSTGRES_IMAGE)
docker run -d --name postgres -p 5432:5432 postgres
while ! nc -z 127.0.0.1 5432; do sleep 1; done
docker-postgres-off: ## Stop and delete the PostgreSQL Docker container.

View File

@@ -1,11 +1,11 @@
[![Donation](https://img.shields.io/badge/donation-PayPal-brightgreen)](https://paypal.me/MayanEDMS)
[![pypi][pypi]][pypi-url]
[![builds][builds]][builds-url]
[![coverage][cover]][cover-url]
![python][python]
![license][license]
[![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 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-url]: http://badge.fury.io/py/mayan-edms
@@ -43,20 +43,6 @@
</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>
The easiest way to use Mayan EDMS is by using the official

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
@@ -25,16 +25,6 @@ at: https://docs.mayan-edms.com/topics/installation.html
.. _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
- 2 Gigabytes of RAM (1 Gigabyte if OCR is turned off).
@@ -54,8 +44,6 @@ Important links
- `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
:target: http://badge.fury.io/py/mayan-edms
.. |builds| image:: https://gitlab.com/mayan-edms/mayan-edms/badges/master/build.svg

View File

@@ -9,6 +9,6 @@ __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_short__ = '2011-2018 Roberto Rosario'
__copyright__ = '{} {}'.format('Copyright', __copyright_short__)
__website__ = 'https://www.mayan-edms.com'

View File

@@ -0,0 +1,72 @@
#!/usr/bin/env bash
INSTALLATION_DIRECTORY=/home/vagrant/mayan-edms/
DB_NAME=mayan_edms
DB_PASSWORD=test123
cat << EOF | sudo tee -a /etc/motd.tail
**********************************sudo apt
Mayan EDMS Vagrant Development Box
**********************************
EOF
# Update sources
echo -e "\n -> Running apt-get update & upgrade \n"
sudo apt-get -qq update
sudo apt-get -y upgrade
echo -e "\n -> Installing core binaries \n"
sudo apt-get -y install git-core python-virtualenv gcc python-dev libjpeg-dev libpng-dev libtiff-dev tesseract-ocr poppler-utils libreoffice
echo -e "\n -> Cloning development branch of repository \n"
git clone /mayan-edms-repository/ $INSTALLATION_DIRECTORY
cd $INSTALLATION_DIRECTORY
git checkout development
git reset HEAD --hard
echo -e "\n -> Setting up virtual env \n"
virtualenv venv
source venv/bin/activate
echo -e "\n -> Installing python dependencies \n"
pip install -r requirements.txt
echo -e "\n -> Running Mayan EDMS initial setup \n"
./manage.py initialsetup
echo -e "\n -> Installing Redis server \n"
sudo apt-get install -y redis-server
pip install redis
echo -e "\n -> Installing testing software \n"
pip install coverage
echo -e "\n -> Installing MySQL \n"
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password '$DB_PASSWORD
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password '$DB_PASSWORD
sudo apt-get install -y mysql-server libmysqlclient-dev
# Create a passwordless root and travis users
mysql -u root -p$DB_PASSWORD -e "SET PASSWORD = PASSWORD('');"
mysql -u root -e "CREATE USER 'travis'@'localhost' IDENTIFIED BY '';GRANT ALL PRIVILEGES ON * . * TO 'travis'@'localhost';FLUSH PRIVILEGES;"
mysql -u travis -e "CREATE DATABASE $DB_NAME;"
pip install mysql-python
echo -e "\n -> Installing PostgreSQL \n"
sudo apt-get install -y postgresql postgresql-server-dev-all
sudo -u postgres psql -c 'create database mayan_edms;' -U postgres
sudo cat > /etc/postgresql/9.3/main/pg_hba.conf << EOF
local all postgres trust
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
EOF
pip install -q psycopg2

File diff suppressed because it is too large Load Diff

View File

@@ -5,25 +5,21 @@ set -e
# $ curl -fsSL get.mayan-edms.com -o get-mayan-edms.sh
# $ sh get-mayan-edms.sh
#
# NOTE: Before executing, make sure to verify the contents of the script
# 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}
: ${USE_DOCKER_NETWORK:=true}
: ${DOCKER_NETWORK_NAME:=mayan}
: ${DATABASE_USER:=mayan}
: ${DATABASE_NAME:=mayan}
: ${DATABASE_PASSWORD:=mayanuserpass}
: ${DOCKER_POSTGRES_IMAGE:=postgres:9.6-alpine}
: ${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_REDIS_IMAGE:=redis:5.0-alpine}
: ${DOCKER_REDIS_CONTAINER:=mayan-edms-redis}
: ${DOCKER_REDIS_PORT:=6379}
: ${DOCKER_MAYAN_IMAGE:=mayanedms/mayanedms:latest}
: ${DOCKER_MAYAN_CONTAINER:=mayan-edms}
: ${DOCKER_MAYAN_VOLUME:=/docker-volumes/mayan-edms/media}
@@ -48,8 +44,6 @@ echo "Variable values to be used:"
echo "---------------------------"
echo "INSTALL_DOCKER: $INSTALL_DOCKER"
echo "DELETE_VOLUMES: $DELETE_VOLUMES"
echo "USE_DOCKER_NETWORK: $USE_DOCKER_NETWORK"
echo "DOCKER_NETWORK_NAME: $DOCKER_NETWORK_NAME"
echo "DATABASE_USER: $DATABASE_USER"
echo "DATABASE_NAME: $DATABASE_NAME"
echo "DATABASE_PASSWORD: $DATABASE_PASSWORD"
@@ -57,17 +51,10 @@ 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_REDIS_IMAGE: $DOCKER_REDIS_IMAGE"
echo "DOCKER_REDIS_CONTAINER: $DOCKER_REDIS_CONTAINER"
echo "DOCKER_REDIS_PORT: $DOCKER_REDIS_PORT"
echo "DOCKER_MAYAN_IMAGE: $DOCKER_MAYAN_IMAGE"
echo "DOCKER_MAYAN_CONTAINER: $DOCKER_MAYAN_CONTAINER"
echo "DOCKER_MAYAN_VOLUME: $DOCKER_MAYAN_VOLUME"
echo
echo "Override any of them by setting them before the script. "
echo "Example: INSTALL_DOCKER=true sh get-mayan-edms.sh"
echo "\nStarting in 10 seconds. Press CTRL+C to cancel."
echo "\nStarting in 10 seconds."
sleep 10
fi
@@ -85,62 +72,33 @@ if [ -z `which docker` ]; then
fi
echo -n "* Removing existing Mayan EDMS and PostgreSQL containers (no data will be lost)..."
docker rm -f $DOCKER_REDIS_CONTAINER >/dev/null 2>&1 || true
docker rm -f $DOCKER_POSTGRES_CONTAINER >/dev/null 2>&1 || true
docker rm -f $DOCKER_MAYAN_CONTAINER >/dev/null 2>&1 || true
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 will delete all document data). Press CTRL+C to cancel..."
echo -n "* Deleting Docker volumes in 5 seconds (warning: this delete all document data)..."
sleep 5
rm DOCKER_MAYAN_VOLUME -Rf || true
rm DOCKER_POSTGRES_VOLUME -Rf || true
true || rm DOCKER_MAYAN_VOLUME -Rf
true || rm DOCKER_POSTGRES_VOLUME -Rf
echo "Done"
fi
echo -n "* Pulling (downloading) the Redis Docker image..."
docker pull $DOCKER_REDIS_IMAGE > /dev/null
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 "* Pulling (downloading) the Mayan EDMS Docker image..."
docker pull $DOCKER_MAYAN_IMAGE >/dev/null
echo "Done"
if [ "$USE_DOCKER_NETWORK" = true ]; then
echo -n "* Creating Docker network..."
docker network create $DOCKER_NETWORK_NAME 2> /dev/null || true
# Ignore error if the network already exists
echo "Done"
fi
if [ "$USE_DOCKER_NETWORK" = true ]; then
NETWORK_ARGUMENT="--network=$DOCKER_NETWORK_NAME"
POSTGRES_PORT_ARGUMENT=""
REDIS_PORT_ARGUMENT=""
MAYAN_DATABASE_PORT_ARGUMENT=""
MAYAN_DATABASE_HOST_ARGUMENT="-e MAYAN_DATABASE_HOST=$DOCKER_POSTGRES_CONTAINER"
MAYAN_BROKER_URL_ARGUMENT="-e MAYAN_BROKER_URL=redis://$DOCKER_REDIS_CONTAINER:6379/0"
MAYAN_CELERY_RESULT_BACKEND_ARGUMENT="-e MAYAN_CELERY_RESULT_BACKEND=redis://$DOCKER_REDIS_CONTAINER:6379/1"
else
NETWORK_ARGUMENT=""
POSTGRES_PORT_ARGUMENT="-e $DOCKER_POSTGRES_PORT:5432"
REDIS_PORT_ARGUMENT="-e $DOCKER_REDIS_PORT:6379"
MAYAN_DATABASE_PORT_ARGUMENT="-e MAYAN_DATABASE_PORT=$DOCKER_POSTGRES_PORT"
MAYAN_DATABASE_HOST_ARGUMENT="-e MAYAN_DATABASE_HOST=172.17.0.1"
MAYAN_BROKER_URL_ARGUMENT="-e MAYAN_BROKER_URL=redis://172.17.0.1:6379/0"
MAYAN_CELERY_RESULT_BACKEND_ARGUMENT="-e MAYAN_CELERY_RESULT_BACKEND=redis://172.17.0.1:6379/1"
fi
echo -n "* Deploying the PostgreSQL container..."
docker run -d \
--name $DOCKER_POSTGRES_CONTAINER \
$NETWORK_ARGUMENT \
--restart=always \
$POSTGRES_PORT_ARGUMENT \
-p $DOCKER_POSTGRES_PORT:5432 \
-e POSTGRES_USER=$DATABASE_USER \
-e POSTGRES_DB=$DATABASE_NAME \
-e POSTGRES_PASSWORD=$DATABASE_PASSWORD \
@@ -148,24 +106,6 @@ $POSTGRES_PORT_ARGUMENT \
$DOCKER_POSTGRES_IMAGE >/dev/null
echo "Done"
echo -n "* Deploying the Redis container..."
docker run -d \
--name $DOCKER_REDIS_CONTAINER \
$NETWORK_ARGUMENT \
--restart=always \
$REDIS_PORT_ARGUMENT \
$DOCKER_REDIS_IMAGE \
redis-server \
--appendonly no \
--databases 2 \
--maxmemory 100mb \
--maxmemory-policy allkeys-lru \
--maxclients 500 \
--save "" \
--tcp-backlog 256 \
>/dev/null
echo "Done"
echo -n "* Waiting for the PostgreSQL container to be ready (10 seconds)..."
sleep 10
echo "Done"
@@ -173,18 +113,15 @@ echo "Done"
echo -n "* Deploying Mayan EDMS container..."
docker run -d \
--name $DOCKER_MAYAN_CONTAINER \
$NETWORK_ARGUMENT \
--restart=always \
-p 80:8000 \
-e MAYAN_DATABASE_ENGINE=django.db.backends.postgresql \
$MAYAN_DATABASE_HOST_ARGUMENT \
$MAYAN_DATABASE_PORT_ARGUMENT \
-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 \
$MAYAN_BROKER_URL_ARGUMENT \
$MAYAN_CELERY_RESULT_BACKEND_ARGUMENT \
-v $DOCKER_MAYAN_VOLUME:/var/lib/mayan \
$DOCKER_MAYAN_IMAGE >/dev/null
echo "Done"

View File

@@ -0,0 +1,171 @@
#!/usr/bin/env bash
# ====== CONFIG ======
INSTALLATION_DIRECTORY=/usr/share/mayan-edms/
DB_NAME=mayan_edms
DB_USERNAME=mayan
DB_PASSWORD=test123
# ==== END CONFIG ====
cat << EOF | tee -a /etc/motd.tail
**********************************
Mayan EDMS Vagrant Production Box
**********************************
EOF
echo -e "\n -> Running apt-get update & upgrade \n"
apt-get -qq update
apt-get -y upgrade
echo -e "\n -> Installing core binaries \n"
apt-get install nginx supervisor redis-server postgresql libpq-dev libjpeg-dev libmagic1 libpng-dev libreoffice libtiff-dev gcc ghostscript gpgv python-dev python-virtualenv tesseract-ocr poppler-utils -y
echo -e "\n -> Setting up virtualenv \n"
rm -f ${INSTALLATION_DIRECTORY}
virtualenv ${INSTALLATION_DIRECTORY}
source ${INSTALLATION_DIRECTORY}bin/activate
echo -e "\n -> Installing Mayan EDMS from PyPI \n"
pip install mayan-edms
echo -e "\n -> Installing Python client for PostgreSQL, Redis, and uWSGI \n"
pip install psycopg2 redis uwsgi
echo -e "\n -> Creating the database for the installation \n"
echo "CREATE USER mayan WITH PASSWORD '$DB_PASSWORD';" | sudo -u postgres psql
sudo -u postgres createdb -O $DB_USERNAME $DB_NAME
echo -e "\n -> Creating the directories for the logs \n"
mkdir /var/log/mayan
echo -e "\n -> Making a convenience symlink \n"
cd ${INSTALLATION_DIRECTORY}
ln -s lib/python2.7/site-packages/mayan .
echo -e "\n -> Creating an initial settings file \n"
mayan-edms.py createsettings
echo -e "\n -> Updating the mayan/settings/local.py file \n"
cat >> mayan/settings/local.py << EOF
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': '$DB_NAME',
'USER': '$DB_USERNAME',
'PASSWORD': '$DB_PASSWORD',
'HOST': 'localhost',
'PORT': '5432',
}
}
BROKER_URL = 'redis://127.0.0.1:6379/0'
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0'
EOF
echo -e "\n -> Migrating the database or initialize the project \n"
mayan-edms.py initialsetup
echo -e "\n -> Disabling the default NGINX site \n"
rm -f /etc/nginx/sites-enabled/default
echo -e "\n -> Creating a uwsgi.ini file \n"
cat > uwsgi.ini << EOF
[uwsgi]
chdir = ${INSTALLATION_DIRECTORY}lib/python2.7/site-packages/mayan
chmod-socket = 664
chown-socket = www-data:www-data
env = DJANGO_SETTINGS_MODULE=mayan.settings.production
gid = www-data
logto = /var/log/uwsgi/%n.log
pythonpath = ${INSTALLATION_DIRECTORY}lib/python2.7/site-packages
master = True
max-requests = 5000
socket = ${INSTALLATION_DIRECTORY}uwsgi.sock
uid = www-data
vacuum = True
wsgi-file = ${INSTALLATION_DIRECTORY}lib/python2.7/site-packages/mayan/wsgi.py
EOF
echo -e "\n -> Creating the directory for the uWSGI log files \n"
mkdir -p /var/log/uwsgi
echo -e "\n -> Creating the NGINX site file for Mayan EDMS, /etc/nginx/sites-available/mayan \n"
cat > /etc/nginx/sites-available/mayan << EOF
server {
listen 80;
server_name localhost;
location / {
include uwsgi_params;
uwsgi_pass unix:${INSTALLATION_DIRECTORY}uwsgi.sock;
client_max_body_size 30M; # Increse if your plan to upload bigger documents
proxy_read_timeout 30s; # Increase if your document uploads take more than 30 seconds
}
location /static {
alias ${INSTALLATION_DIRECTORY}mayan/media/static;
expires 1h;
}
location /favicon.ico {
alias ${INSTALLATION_DIRECTORY}mayan/media/static/appearance/images/favicon.ico;
expires 1h;
}
}
EOF
echo -e "\n -> Enabling the NGINX site for Mayan EDMS \n"
ln -s /etc/nginx/sites-available/mayan /etc/nginx/sites-enabled/
echo -e "\n -> Creating the supervisor file for the uWSGI process, /etc/supervisor/conf.d/mayan-uwsgi.conf \n"
cat > /etc/supervisor/conf.d/mayan-uwsgi.conf << EOF
[program:mayan-uwsgi]
command = ${INSTALLATION_DIRECTORY}bin/uwsgi --ini ${INSTALLATION_DIRECTORY}uwsgi.ini
user = root
autostart = true
autorestart = true
redirect_stderr = true
EOF
echo -e "\n -> Creating the supervisor file for the Celery worker, /etc/supervisor/conf.d/mayan-celery.conf \n"
cat > /etc/supervisor/conf.d/mayan-celery.conf << EOF
[program:mayan-worker]
command = ${INSTALLATION_DIRECTORY}bin/python ${INSTALLATION_DIRECTORY}bin/mayan-edms.py celery --settings=mayan.settings.production worker -Ofair -l ERROR
directory = ${INSTALLATION_DIRECTORY}
user = www-data
stdout_logfile = /var/log/mayan/worker-stdout.log
stderr_logfile = /var/log/mayan/worker-stderr.log
autostart = true
autorestart = true
startsecs = 10
stopwaitsecs = 10
killasgroup = true
priority = 998
[program:mayan-beat]
command = ${INSTALLATION_DIRECTORY}bin/python ${INSTALLATION_DIRECTORY}bin/mayan-edms.py celery --settings=mayan.settings.production beat -l ERROR
directory = ${INSTALLATION_DIRECTORY}
user = www-data
numprocs = 1
stdout_logfile = /var/log/mayan/beat-stdout.log
stderr_logfile = /var/log/mayan/beat-stderr.log
autostart = true
autorestart = true
startsecs = 10
stopwaitsecs = 1
killasgroup = true
priority = 998
EOF
echo -e "\n -> Collecting the static files \n"
mayan-edms.py preparestatic --noinput
echo -e "\n -> Making the installation directory readable and writable by the webserver user \n"
chown www-data:www-data ${INSTALLATION_DIRECTORY} -R
echo -e "\n -> Restarting the services \n"
/etc/init.d/nginx restart
/etc/init.d/supervisor restart

View File

@@ -13,17 +13,16 @@ APP_LIST = (
'checkouts', 'common', 'converter', 'dashboards', 'dependencies',
'django_gpg', 'document_comments', 'document_indexing',
'document_parsing', 'document_signatures', 'document_states',
'documents', 'dynamic_search', 'events', 'file_caching',
'file_metadata', 'linking', 'lock_manager', 'mailer',
'mayan_statistics', 'metadata', 'mirroring', 'motd', 'navigation',
'ocr', 'permissions', 'platform', 'rest_api', 'smart_settings',
'sources', 'storage', 'tags', 'task_manager', 'user_management',
'weblinks'
'documents', 'dynamic_search', 'events', 'file_metadata', 'linking',
'lock_manager', 'mayan_statistics', 'mailer', 'metadata', 'mirroring',
'motd', 'navigation', 'ocr', 'permissions', 'platform', 'rest_api',
'smart_settings', 'sources', 'storage', 'tags', 'task_manager',
'user_management'
)
LANGUAGE_LIST = (
'ar', 'bg', 'bs_BA', 'cs', 'da_DK', 'de_DE', 'en', 'es', 'el', 'fa', 'fr',
'hu', 'id', 'it', 'lv', 'nl_NL', 'pl', 'pt', 'pt_BR', 'ro_RO', 'ru', 'sl_SI',
'hu', 'id', 'it', 'nl_NL', 'pl', 'pt', 'pt_BR', 'ro_RO', 'ru', 'sl_SI',
'tr_TR', 'vi_VN', 'zh',
)

View File

@@ -0,0 +1,35 @@
#!/bin/bash
NAME="mayan-edms"
DJANGODIR=/usr/share/mayan-edms
SOCKFILE=/var/tmp/filesystem.sock
USER=www-data
GROUP=www-data
NUM_WORKERS=3
DJANGO_SETTINGS_MODULE=mayan.settings.production
DJANGO_WSGI_MODULE=mayan.wsgi
TIMEOUT=600
echo "Starting $NAME as `whoami`"
# Activate the virtual environment
cd $DJANGODIR
source bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH
# Create the run directory if it doesn't exist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR
# Start your Django Unicorn
# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
exec bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--log-level=debug \
--bind=unix:$SOCKFILE \
--timeout=$TIMEOUT

View File

@@ -4,7 +4,7 @@
# BASE_IMAGE - Bare bones image with the base packages needed to run Mayan EDMS
####
FROM debian:10.0-slim as BASE_IMAGE
FROM debian:9.8-slim as BASE_IMAGE
LABEL maintainer="Roberto Rosario roberto.rosario@mayan-edms.com"
@@ -22,21 +22,18 @@ RUN set -x \
&& DEBIAN_FRONTEND=noninteractive \
apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates \
exiftool \
fonts-arphic-uming \
fonts-arphic-ukai \
ghostscript \
gpgv \
gnupg1 \
graphviz \
libfuse2 \
libmagic1 \
libmariadb3 \
libmariadbclient18 \
libreoffice \
libpq5 \
poppler-utils \
python3-distutils \
redis-server \
sane-utils \
sudo \
supervisor \
@@ -55,20 +52,22 @@ apt-get update \
&& 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
; 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
####
# BUILDER_IMAGE - This image builds the Python package and is discarded afterwards
# only the build artifact is carried over to the next image.
# BUILDER_IMAGE - This image buildS the Python package and is discarded afterwards
####
# Reuse image
FROM BASE_IMAGE as BUILDER_IMAGE
# Python libraries caching
ARG PIP_INDEX_URL
ARG PIP_TRUSTED_HOST
WORKDIR /src
# Copy the source files needed to build the Python package
@@ -97,40 +96,39 @@ apt-get install -y --no-install-recommends \
libssl-dev \
g++ \
gcc \
python3-dev \
python3-venv \
python-dev \
python-virtualenv \
&& mkdir -p "${PROJECT_INSTALL_DIR}" \
&& chown -R mayan:mayan "${PROJECT_INSTALL_DIR}" \
&& chown -R mayan:mayan /src
USER mayan
RUN python3 -m venv "${PROJECT_INSTALL_DIR}" \
RUN python -m virtualenv "${PROJECT_INSTALL_DIR}" \
&& . "${PROJECT_INSTALL_DIR}/bin/activate" \
&& pip install --no-cache-dir \
librabbitmq==2.0.0 \
mysqlclient==1.4.2.post1 \
psycopg2==2.8.3 \
redis==3.2.1 \
flower==0.9.3 \
&& 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 \
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 -r /src/requirements/build.txt \
&& pip install --no-cache-dir --no-use-pep517 -r /src/requirements/build.txt \
# Build Mayan EDMS
&& python3 setup.py sdist \
&& python setup.py sdist \
# Install the built Mayan EDMS package
&& pip install --no-cache-dir dist/mayan* \
&& pip install --no-cache-dir --no-use-pep517 dist/mayan* \
# Install the static content
&& mayan-edms.py installdependencies \
&& 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}"
####
# Final image - BASE_IMAGE + BUILDER_IMAGE artifact (Mayan install directory)
# Final image - BASE_IMAGE + Mayan install directory from the builder image
####
FROM BASE_IMAGE
@@ -146,7 +144,7 @@ VOLUME ["/var/lib/mayan"]
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 8000
CMD ["run_all"]
CMD ["mayan"]
RUN ${PROJECT_INSTALL_DIR}/bin/mayan-edms.py platformtemplate supervisord_docker > /etc/supervisor/conf.d/mayan.conf \
&& apt-get clean autoclean \

View File

@@ -1,9 +1,4 @@
HOST_IP = `/sbin/ip route|awk '/docker0/ { print $$9 }'`
APT_PROXY ?= $(HOST_IP):3142
PIP_INDEX_URL ?= http://$(HOST_IP):3141/root/pypi/+simple/
PIP_TRUSTED_HOST ?= $(HOST_IP)
APT_PROXY ?= `/sbin/ip route|awk '/docker0/ { print $$9 }'`:3142
IMAGE_VERSION ?= `cat docker/rootfs/version`
CONSOLE_COLUMNS ?= `echo $$(tput cols)`
CONSOLE_LINES ?= `echo $$(tput lines)`
@@ -12,7 +7,7 @@ docker-build: ## Build a new image locally.
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 -t mayanedms/mayanedms:$(IMAGE_VERSION) -f docker/Dockerfile --build-arg APT_PROXY=$(APT_PROXY) --build-arg PIP_INDEX_URL=$(PIP_INDEX_URL) --build-arg PIP_TRUSTED_HOST=$(PIP_TRUSTED_HOST) --build-arg HTTP_PROXY=$(HTTP_PROXY) --build-arg HTTPS_PROXY=$(HTTPS_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 exec -e TERM=$(TERM) -e "COLUMNS=$(CONSOLE_COLUMNS)" -e "LINES=$(CONSOLE_LINES)" -it $(DOCKER_CONTAINER) /bin/bash
@@ -28,13 +23,3 @@ docker-test-cleanup: ## Delete the test container and the test volume.
docker-test-all: ## Build and executed the test suite in a test container.
docker-test-all: docker-build-with-proxy
docker run --rm run-tests
docker-compose-build:
docker-compose -f docker/docker-compose.yml -p mayan-edms build
docker-compose-build-with-proxy:
docker-compose -f docker/docker-compose.yml -p mayan-edms build --build-arg APT_PROXY=$(APT_PROXY) --build-arg PIP_INDEX_URL=$(PIP_INDEX_URL) --build-arg PIP_TRUSTED_HOST=$(PIP_TRUSTED_HOST) --build-arg HTTP_PROXY=$(HTTP_PROXY) --build-arg HTTPS_PROXY=$(HTTPS_PROXY)
docker-compose-up:
docker-compose -f docker/docker-compose.yml -p mayan-edms up

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

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

554
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

@@ -0,0 +1,72 @@
version: '2.1'
volumes:
broker:
driver: local
app:
driver: local
db:
driver: local
results:
driver: local
services:
broker:
container_name: mayan-edms-broker
image: healthcheck/rabbitmq
environment:
RABBITMQ_DEFAULT_USER: mayan
RABBITMQ_DEFAULT_PASS: mayan
RABBITMQ_DEFAULT_VHOST: mayan
volumes:
- broker:/var/lib/rabbitmq
results:
container_name: mayan-edms-results
image: healthcheck/redis
volumes:
- results:/data
#db:
# container_name: mayan-edms-db
# image: healthcheck/mysql
# environment:
# MYSQL_DATABASE: mayan
# MYSQL_PASSWORD: mayan-password
# MYSQL_ROOT_PASSWORD: root-password
# MYSQL_USER: mayan
# volumes:
# - db:/var/lib/mysql
db:
container_name: mayan-edms-db
image: healthcheck/postgres
environment:
POSTGRES_DB: mayan
POSTGRES_PASSWORD: mayan-password
POSTGRES_USER: mayan
volumes:
- db:/var/lib/postgresql/data
mayan-edms:
container_name: mayan-edms-app
image: mayan-edms/next
build:
context: ./
args:
- APT_PROXY=172.18.0.1:3142
depends_on:
broker:
condition: service_healthy
db:
condition: service_healthy
results:
condition: service_healthy
environment:
MAYAN_BROKER_URL: amqp://mayan:mayan@broker:5672/mayan
MAYAN_CELERY_RESULT_BACKEND: redis://results:6379/0
MAYAN_DATABASE_ENGINE: django.db.backends.postgresql
MAYAN_DATABASE_HOST: db
MAYAN_DATABASE_NAME: mayan
MAYAN_DATABASE_PASSWORD: mayan-password
MAYAN_DATABASE_USER: mayan
ports:
- "80:80"
volumes:
- app:/var/lib/mayan

View File

@@ -1,130 +1,58 @@
version: '3.7'
version: '2.1'
networks:
mayan-bridge:
driver: bridge
volumes:
broker:
driver: local
app:
driver: local
db:
driver: local
results:
driver: local
services:
app:
build:
context: ..
dockerfile: ./docker/Dockerfile
depends_on:
- postgresql
- redis
# Enable to use RabbitMQ
#- rabbitmq
environment: &mayan_env
# Enable to use RabbitMQ
# MAYAN_CELERY_BROKER_URL: amqp://mayan:mayanrabbitpass@broker:5672/mayan
# Disable Redis Broker to use RabbitMQ as Broker
MAYAN_CELERY_BROKER_URL: redis://redis:6379/1
MAYAN_CELERY_RESULT_BACKEND: redis://redis:6379/0
MAYAN_DATABASES: "{'default':{'ENGINE':'django.db.backends.postgresql','NAME':'mayan','PASSWORD':'mayandbpass','USER':'mayan','HOST':'postgresql'}}"
image: mayanedms/mayanedms:3.2.6
networks:
- mayan-bridge
ports:
- "80:8000"
restart: unless-stopped
broker:
container_name: mayan-edms-broker
image: healthcheck/rabbitmq
environment:
RABBITMQ_DEFAULT_USER: mayan
RABBITMQ_DEFAULT_PASS: mayan
RABBITMQ_DEFAULT_VHOST: mayan
volumes:
- /docker-volumes/mayan-edms/media:/var/lib/mayan
postgresql:
- broker:/var/lib/rabbitmq
results:
container_name: mayan-edms-results
image: healthcheck/redis
volumes:
- results:/data
db:
container_name: mayan-edms-db
image: healthcheck/postgres
environment:
POSTGRES_DB: mayan
POSTGRES_PASSWORD: mayandbpass
POSTGRES_PASSWORD: mayan-password
POSTGRES_USER: mayan
image: postgres:9.6
networks:
- mayan-bridge
restart: unless-stopped
volumes:
- /docker-volumes/mayan-edms/postgres:/var/lib/postgresql/data
redis:
command:
- redis-server
- --databases
- "2"
- --maxmemory-policy
- allkeys-lru
- --save
- ""
image: redis:5.0
networks:
- mayan-bridge
restart: unless-stopped
# Optional services
# celery_flower:
# command:
# - run_celery
# - flower
# depends_on:
# - postgresql
# - redis
# # Enable to use RabbitMQ
# # - rabbitmq
# environment:
# <<: *mayan_env
# image: mayanedms/mayanedms:3.2.6
# networks:
# - mayan-bridge
# ports:
# - "5555:5555"
# restart: unless-stopped
# Enable to use RabbitMQ
# rabbitmq:
# container_name: mayan-edms-rabbitmq
# image: healthcheck/rabbitmq
# environment:
# RABBITMQ_DEFAULT_USER: mayan
# RABBITMQ_DEFAULT_PASS: mayanrabbitpass
# RABBITMQ_DEFAULT_VHOST: mayan
# networks:
# - mayan-bridge
# restart: unless-stopped
# volumes:
# - /docker-volumes/mayan-edms/rabbitmq:/var/lib/rabbitmq
# Enable to run stand alone workers
# worker_fast:
# command:
# - run_worker
# - fast
# depends_on:
# - postgresql
# - redis
# # Enable to use RabbitMQ
# # - rabbitmq
# environment:
# <<: *mayan_env
# image: mayanedms/mayanedms:3.2.6
# networks:
# - mayan-bridge
# restart: unless-stopped
# volumes:
# - /docker-volumes/mayan-edms/media:/var/lib/mayan
# Enable to run stand frontend gunicorn
# frontend:
# command:
# - run_frontend
# depends_on:
# - postgresql
# - redis
# # Enable to use RabbitMQ
# # - rabbitmq
# environment:
# <<: *mayan_env
# image: mayanedms/mayanedms:3.2.6
# networks:
# - mayan-bridge
# ports:
# - "81:8000"
# restart: unless-stopped
# volumes:
# - /docker-volumes/mayan-edms/media:/var/lib/mayan
- db:/var/lib/postgresql/data
mayan-edms:
container_name: mayan-edms-app
image: mayanedms/mayanedms:latest
depends_on:
broker:
condition: service_healthy
db:
condition: service_healthy
results:
condition: service_healthy
environment:
MAYAN_BROKER_URL: amqp://mayan:mayan@broker:5672/mayan
MAYAN_CELERY_RESULT_BACKEND: redis://results:6379/0
MAYAN_DATABASE_ENGINE: django.db.backends.postgresql
MAYAN_DATABASE_HOST: db
MAYAN_DATABASE_NAME: mayan
MAYAN_DATABASE_PASSWORD: mayan-password
MAYAN_DATABASE_USER: mayan
ports:
- "80:8000"
volumes:
- app:/var/lib/mayan

View File

@@ -1,7 +1,4 @@
#!/bin/bash
# Use bash and not sh to support argument slicing "${@:2}"
# sh defaults to dash instead of bash.
#!/bin/sh
set -e
echo "mayan: starting entrypoint.sh"
@@ -9,41 +6,32 @@ INSTALL_FLAG=/var/lib/mayan/system/SECRET_KEY
CONCURRENCY_ARGUMENT=--concurrency=
DEFAULT_USER_UID=1000
DEFAULT_USER_GID=1000
DEFAULT_USER_GUID=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 DJANGO_SETTINGS_MODULE=${MAYAN_SETTINGS_MODULE}
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:-0}
MAYAN_WORKER_MEDIUM_CONCURRENCY=${MAYAN_WORKER_MEDIUM_CONCURRENCY:-0}
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
echo "mayan: changing uid/guid"
usermod mayan -u ${MAYAN_USER_UID:-${DEFAULT_USER_UID}}
groupmod mayan -g ${MAYAN_USER_GUID:-${DEFAULT_USER_GUID}}
if [ "$MAYAN_WORKER_FAST_CONCURRENCY" -eq 0 ]; then
MAYAN_WORKER_FAST_CONCURRENCY=
@@ -66,9 +54,11 @@ else
fi
export MAYAN_WORKER_SLOW_CONCURRENCY
# Allow importing of user setting modules
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 "$@"
@@ -76,9 +66,9 @@ apt_get_install() {
rm -rf /var/lib/apt/lists/*
}
initialsetup() {
echo "mayan: initialsetup()"
su mayan -c "${MAYAN_BIN} initialsetup --force --no-dependencies"
initialize() {
echo "mayan: initialize()"
su mayan -c "${MAYAN_BIN} initialsetup --force --no-javascript"
}
os_package_installs() {
@@ -95,71 +85,43 @@ pip_installs() {
fi
}
run_all() {
start() {
echo "mayan: start()"
rm -rf /var/run/supervisor.sock
exec /usr/bin/supervisord -nc /etc/supervisor/supervisord.conf
}
performupgrade() {
echo "mayan: performupgrade()"
su mayan -c "${MAYAN_BIN} performupgrade --no-dependencies"
}
make_ready() {
# Check if this is a new install, otherwise try to upgrade the existing
# installation on subsequent starts
if [ ! -f $INSTALL_FLAG ]; then
initialsetup
else
performupgrade
fi
}
set_uid_guid() {
echo "mayan: changing uid/guid"
usermod mayan -u ${MAYAN_USER_UID:-${DEFAULT_USER_UID}}
groupmod mayan -g ${MAYAN_USER_GID:-${DEFAULT_USER_GID}}
upgrade() {
echo "mayan: upgrade()"
su mayan -c "${MAYAN_BIN} performupgrade --no-javascript"
}
os_package_installs || true
pip_installs || true
chown mayan:mayan /var/lib/mayan -R
case "$1" in
run_initialsetup)
initialsetup
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_performupgrade)
performupgrade
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
;;
run_all)
make_ready
run_all
;;
run_celery)
run_celery.sh "${@:2}"
;;
run_frontend)
run_frontend.sh
;;
run_tests)
make_ready
run_tests.sh
;;
run_worker)
run_worker.sh "${@:2}"
;;
*)
su mayan -c "$@"
*) su mayan -c "$@";
;;
esac

View File

@@ -1,5 +0,0 @@
#!/bin/bash
# Use -A and not --app. Both are the same but behave differently
# -A can be located before the command while --app cannot.
su mayan -c "${MAYAN_PYTHON_BIN_DIR}celery -A mayan $@"

View File

@@ -1,7 +0,0 @@
#!/bin/bash
MAYAN_GUNICORN_MAX_REQUESTS=${MAYAN_GUNICORN_MAX_REQUESTS:-500}
MAYAN_GUNICORN_MAX_REQUESTS_JITTERS=${MAYAN_GUNICORN_MAX_REQUESTS_JITTERS:-50}
MAYAN_GUNICORN_WORKER_CLASS=${MAYAN_GUNICORN_WORKER_CLASS:-sync}
su mayan -c "${MAYAN_PYTHON_BIN_DIR}gunicorn -w ${MAYAN_GUNICORN_WORKERS} mayan.wsgi --max-requests ${MAYAN_GUNICORN_MAX_REQUESTS} --max-requests-jitter ${MAYAN_GUNICORN_MAX_REQUESTS_JITTERS} --worker-class ${MAYAN_GUNICORN_WORKER_CLASS} --bind 0.0.0.0:8000 --timeout ${MAYAN_GUNICORN_TIMEOUT}"

View File

@@ -1,8 +0,0 @@
#!/bin/bash
QUEUE_LIST=`MAYAN_WORKER_NAME=$1 su mayan -c "${MAYAN_PYTHON_BIN_DIR}mayan-edms.py platformtemplate worker_queues"`
# Use -A and not --app. Both are the same but behave differently
# -A can be located before the command while --app cannot.
# Pass ${@:2} to allow overriding the defaults arguments
su mayan -c "${MAYAN_PYTHON_BIN_DIR}celery -A mayan worker -Ofair -l ERROR -Q $QUEUE_LIST ${@:2}"

View File

@@ -1 +1 @@
3.3beta1-bc
3.2b1

View File

@@ -9,32 +9,24 @@ volumes:
services:
db:
image: postgres
environment:
POSTGRES_DB: mayan
POSTGRES_PASSWORD: mayandbpass
POSTGRES_PASSWORD: mayan-password
POSTGRES_USER: mayan
image: postgres
volumes:
- db:/var/lib/postgresql/data
app:
environment:
MAYAN_CELERY_BROKER_URL: redis://redis:6379/1
MAYAN_CELERY_RESULT_BACKEND: redis://redis:6379/0
MAYAN_DATABASES: "{'default':{'ENGINE':'django.db.backends.postgresql','NAME':'mayan','PASSWORD':'mayandbpass','USER':'mayan','HOST':'db'}}"
image: mayanedms/mayanedms:latest
ports:
- 80:8000
environment:
MAYAN_DATABASE_ENGINE: django.db.backends.postgresql
MAYAN_DATABASE_HOST: db
MAYAN_DATABASE_NAME: mayan
MAYAN_DATABASE_PASSWORD: mayan-password
MAYAN_DATABASE_USER: mayan
MAYAN_DATABASE_CONN_MAX_AGE: 0
volumes:
- app:/var/lib/mayan
redis:
command:
- redis-server
- --databases
- "2"
- --maxmemory-policy
- allkeys-lru
- --save
- ""
image: redis:5.0

View File

@@ -4,6 +4,7 @@ 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.
Do not use more than one method.
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
@@ -11,7 +12,7 @@ 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
used to convert document files. Supervisor (http://supervisord.org/), a
Process Control System, will be used to monitor and keep all Mayan processes
running.
@@ -37,12 +38,12 @@ For another setup that offers more performance and scalability refer to the
Platforms with the ARM CPU might also need additional requirements.
::
sudo apt-get install libffi-dev libssl-dev -y
apt-sudo get 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.
This will create an unpriviledge user account that is also unable to login.
::
sudo adduser mayan --disabled-password --disabled-login --no-create-home --gecos ""
@@ -60,7 +61,7 @@ For another setup that offers more performance and scalability refer to the
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.
of the Pythoon packages in the system.
::
sudo virtualenv /opt/mayan-edms
@@ -112,9 +113,9 @@ For another setup that offers more performance and scalability refer to the
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``
the installation files, change the value of the ``MAYAN_MEDIR_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``
folder and give owership of it to the ``mayan`` user with the ``chown``
command.
.. warning::
@@ -127,8 +128,9 @@ For another setup that offers more performance and scalability refer to the
::
sudo -u mayan MAYAN_DATABASES="{'default':{'ENGINE':'django.db.backends.postgresql','NAME':'mayan','PASSWORD':'mayanuserpass','USER':'mayan','HOST':'127.0.0.1'}}" \
MAYAN_MEDIA_ROOT=/opt/mayan-edms/media \
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
@@ -147,28 +149,29 @@ For another setup that offers more performance and scalability refer to the
------------------------------------------------------------------------
::
sudo mayan MAYAN_DATABASES="{'default':{'ENGINE':'django.db.backends.postgresql','NAME':'mayan','PASSWORD':'mayanuserpass','USER':'mayan','HOST':'127.0.0.1'}}" \
MAYAN_MEDIA_ROOT=/opt/mayan-edms/media \
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
Configure Redit 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
echo "maxmemory-policy allkeys-lru" >> /etc/redis/redis.conf
echo "save \"\"" >> /etc/redis/redis.conf
echo "databases 1" >> /etc/redis/redis.conf
systemctl restart redis
13. Enable and restart the services [1_]:
-----------------------------------------
::
sudo systemctl enable supervisor
sudo systemctl restart supervisor
systemctl enable supervisor
systemctl restart supervisor
14. Cleaning up:
@@ -177,7 +180,7 @@ For another setup that offers more performance and scalability refer to the
installation and can be removed.
::
sudo apt-get remove --purge libjpeg-dev libpq-dev libpng-dev libtiff-dev zlib1g-dev
apt-get remove --purge libjpeg-dev libpq-dev libpng-dev libtiff-dev zlib1g-dev
.. _deployment_advanced:
@@ -220,11 +223,11 @@ of a restart or power failure. The Gunicorn workers are increased to 3.
---------------------------------------------------------------------
Replace (paying attention to the comma at the end)::
MAYAN_CELERY_BROKER_URL="redis://127.0.0.1:6379/0",
MAYAN_BROKER_URL="redis://127.0.0.1:6379/0",
with::
MAYAN_CELERY_BROKER_URL="amqp://mayan:mayanrabbitmqpassword@localhost:5672/mayan",
MAYAN_BROKER_URL="amqp://mayan:mayanuserpass@localhost:5672/mayan",
increase the number of Gunicorn workers to 3 in the line (``-w 2`` section)::
@@ -237,7 +240,7 @@ of a restart or power failure. The Gunicorn workers are increased to 3.
------------------------
::
sudo supervisorctl restart all
supervisorctl restart all

View File

@@ -226,46 +226,35 @@ Git branch structure
Mayan EDMS follows a simplified model layout based on Vincent Driessen's
`Successful Git Branching Model`_ blog post.
``/versions/micro``
Working branch for the next bugfix release. Micro increment (third digit).
Only bug fixes, minor features, back-ported urgent features. This
branch is stable and safe for production.
``/versions/minor``
Working branch for the next minor release (second digit). New features,
occasional breakage. Not for production but should run in test
environment most of the time. This is the branch you will want to
try out if you want to check out new features.
``/versions/major``
Working branch for the next major release (first digit). New features,
incompatible changes to the user facing interfaces. Broken most of the
time, not for production and should only be cloned by developers
with experience with Mayan's development.
``development``
The "next release" branch, likely unstable, don't use in production.
``master``
Current production release (|version|). Points to the latest version of
the latest series. Production quality code.
``features/``
Working branches for unfinished and unmerged feature. Likely unstable,
don't use in production. Once the feature is complete, it is merged
into one of the versions branches and deleted.
``feature/``
Unfinished/unmerged feature. Likely unstable, don't use in production.
Special branches:
``releases/all``
Pushing code to this branch will trigger the build and release
Used by the continuous delivery system to trigger the build and release
a new Docker image, Documentation and Python package.
``releases/docker``
Pushing code to this branch will trigger the build and release
Used by the continuous delivery system to trigger the build and release
of a new Docker image to Docker Hub.
``releases/documentation``
Pushing code to this branch will trigger the build and release
Used by the continuous delivery system to trigger the build and release
of new documentation.
``releases/python``
Pushing code to this branch will trigger the build and release
Used by the continuous delivery system to trigger the build and release
of a new Python package to PyPI.
``releases/python``
Used by the continuous delivery system to trigger the build and release
of a new Python package to PyPI.
``nightly``
Pushing code to this branch will trigger the build and release
Used by the continuous delivery system to trigger the build and release
of a new Docker image based on development code to the GitLab image
repository only. The image will not be published to Docker Hub.
repository.
Each release is tagged separately using annotated Git tags.
@@ -493,7 +482,7 @@ Release checklist
make check-readme
#. Bump version in ``mayan/__init__.py`` and ``docker/rootfs/version``::
#. Bump version in ``mayan/__init__.py`` and ``docker/version``::
make increase-version PART=<major, minor or micro>
@@ -533,7 +522,7 @@ Release using GitLab CI
::
git checkout releases/all
git merge <corresponding branch>
git merge versions/next
#. Push code to trigger builds:
::

View File

@@ -43,13 +43,18 @@ 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::
Finally create and run a Mayan EDMS container.
docker run -d \
--name mayan-edms \
--restart=always \
-p 80:8000 \
-e MAYAN_DATABASES="{'default':{'ENGINE':'django.db.backends.postgresql','NAME':'mayan','PASSWORD':'mayanuserpass','USER':'mayan','HOST':'172.17.0.1'}}" \
-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>
@@ -103,7 +108,12 @@ instead of the IP address of the Docker host (``172.17.0.1``)::
--network=mayan \
--restart=always \
-p 80:8000 \
-e MAYAN_DATABASES="{'default':{'ENGINE':'django.db.backends.postgresql','NAME':'mayan','PASSWORD':'mayanuserpass','USER':'mayan','HOST':'mayan-edms-postgres'}}" \
-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>
@@ -127,20 +137,101 @@ To start the container again::
Environment Variables
---------------------
The common set of settings can also be modified via environment variables when
using the Docker image. In addition to the common set of settings, some Docker
image specific environment variables are available.
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``
``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.
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_WORKERS``
@@ -178,21 +269,12 @@ number of CPUs detected).
Optional. Changes the UID of the ``mayan`` user internal to the Docker
container. Defaults to 1000.
``MAYAN_USER_GID``
``MAYAN_USER_GUID``
Optional. Changes the GID of the ``mayan`` user internal to the Docker
Optional. Changes the GUID of the ``mayan`` user internal to the Docker
container. Defaults to 1000.
Included drivers
----------------
The Docker image supports using Redis and RabbitMQ as result backends. For
databases, the image includes support for PostgreSQL and MySQL/MariaDB.
Support for additional brokers or databases may be added using the
``MAYAN_APT_INSTALL`` environment variable.
.. _docker-accessing-outside-data:
Accessing outside data
@@ -206,21 +288,18 @@ 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
-v /opt/scanned_files:/srv/watch_folder
The command line would look like this::
docker run ... -v /opt/scanned_files:/scanned_files mayanedms/mayanedms:latest
docker run ... -v /opt/scanned_files:/srv/watch_folder mayanedms/mayanedms:latest
Now create a watch folder in Mayan EDMS using the path ``/scanned_files``
Now create a watch folder in Mayan EDMS using the path ``/srv/watch_folder``
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
used as staging folderes. In this example ``/srv/watch_folder`` was as the
container directory, but any path can be used as long as it is not an
already existing path or a path used by any other program.
Performing backups
@@ -231,7 +310,7 @@ 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
-v /opt/scanned_files:/srv/watch_folder mayanedms/mayanedms:latest
That would be the ``/docker-volumes/mayan folder``::
@@ -297,7 +376,7 @@ Execute Docker's build command using the provided makefile::
make docker-build
Or using an APT cache to speed up the build::
Or using an apt cacher to speed up the build::
make docker-build-with-proxy APT_PROXY=172.17.0.1:3142
@@ -360,7 +439,6 @@ These are:
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.

View File

@@ -111,8 +111,8 @@ Index documents not found in any cabinet
{% if document.cabinets.count == 0 %}No Cabinets{% endif %}
Index documents not tagged
^^^^^^^^^^^^^^^^^^^^^^^^^^
Index untagged documents
^^^^^^^^^^^^^^^^^^^^^^^^
::
{% if document.tags.count == 0 %}No Tags{% endif %}

View File

@@ -94,11 +94,11 @@ For the Docker image, launch a separate RabbitMQ container
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_CELERY_BROKER_URL environment variable (https://kombu.readthedocs.io/en/latest/userguide/connections.html#connection-urls)
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_CELERY_BROKER_URL="amqp://mayan:mayanrabbitmqpassword@localhost:5672/mayan",
-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

View File

@@ -15,8 +15,7 @@ The current document sources supported are:
- 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.
Any file in the watch folder is automatically uploaded.
- 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
@@ -75,6 +74,6 @@ Creating new sources
#. 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
#. Each source type will have different fields to customize its behaviour. Enter
the required information in each field based on the help text provided.
#. Press :guilabel:`Save`.

View File

@@ -76,5 +76,5 @@ Uploading a new document version
#. 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.
#. Press :guilabel:`Save` upload the new verision.

View File

@@ -22,9 +22,7 @@ import mayan
# 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
# documentation root, use os.path.abspath to make it absolute, like shown here.
sys.path.append(
os.path.abspath(os.path.join(os.path.dirname(__file__), '_ext'))
)
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "_ext")))
# -- General configuration -----------------------------------------------------
@@ -36,13 +34,12 @@ sys.path.append(
#extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode']
#extensions = ["djangodocs", "sphinx.ext.intersphinx"]
extensions = [
'sphinx.ext.extlinks', 'sphinxcontrib.blockdiag',
'sphinxcontrib.spelling'
'sphinx.ext.extlinks', 'sphinxcontrib.blockdiag', 'sphinxcontrib.spelling'
]
blockdiag_antialias = True
blockdiag_html_image_format = 'SVG'
blockdiag_latex_image_format = 'PDF'
blockdiag_html_image_format = "SVG"
blockdiag_latex_image_format = "PDF"
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
@@ -109,14 +106,12 @@ pygments_style = 'sphinx'
# The theme to use for HTML and HTML Help pages. See the documentation for
# 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
# further. For a list of options available for each theme, see the
# documentation.
html_theme_options = {
'analytics_id': 'UA-52965619-6',
}
#html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
@@ -144,7 +139,7 @@ html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# 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
# typographically correct entities.
@@ -167,7 +162,7 @@ html_last_updated_fmt = '%b %d, %Y'
#html_split_index = False
# 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.
#html_show_sphinx = True
@@ -186,6 +181,8 @@ html_show_sourcelink = False
# Output file base name for HTML help builder.
htmlhelp_basename = 'MayanEDMSdoc'
html_show_sourcelink = False
html_show_sphinx = False
# -- Options for LaTeX output --------------------------------------------------
@@ -236,6 +233,8 @@ man_pages = [
[mayan.__author__], 1)
]
html_theme = 'sphinx_rtd_theme'
# -- External links --
extlinks = {
'django-docs': (
@@ -243,9 +242,6 @@ extlinks = {
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 #'
),
@@ -254,6 +250,5 @@ extlinks = {
)
}
def setup(app):
app.add_stylesheet('css/custom.css')

View File

@@ -26,7 +26,7 @@ Motivation
==========
As the project grows, legibility of code becomes more important. Keyword
argument help document the use of services, classes and functions. Refactors
argument help document the use of services, clases 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
@@ -121,7 +121,7 @@ After:
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.
any posible incompatible use.
Example:
@@ -138,7 +138,7 @@ 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
update and allowing all consumers' interface usage to remain synchonized to the
callable's interface.
.. code-block:: python

View File

@@ -16,7 +16,7 @@ MERC 6: Lower information disclose
Abstract
========
This MERC proposes the use of errors that don't disclose the existence of a
This MERC proposes the use of errors that don't disclose the existance of a
resource in the event that the requester doesn't have the required credentials.
Motivation
@@ -43,7 +43,7 @@ Since most view use the internal custom CRUD classes making a change to the
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
to default to False will allow fulfullin the goal of this MERC while
keeping the existing functionality intact.

View File

@@ -17,9 +17,9 @@ Version 0.11
* Added a view to delete the document image cache, useful when switching
converter backends or doing diagnostics.
* 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
Users with existing data must install South and run the appropriate
Users with existing data must install South and run the appropiate
migrate commands::
$ pip install -r requirements/production.txt

View File

@@ -1,119 +0,0 @@
Version 3.2.1
=============
Released: June 14, 2019
Changes
-------
- Fix sub cabinet creation view. Thanks to Frédéric Sheedy
(@fsheedy) for the report.
- Add PostgreSQL troubleshooting entry. Closes GitLab
issues #523 and #602
- Use YAML SafeDumper to avoid adding YAML datatype tags.
Closes GitLab issue #599. Thanks to Frédéric Sheedy
(@fsheedy) for the report and debug information.
- Add check for app references and point users to release notes for details.
GitLab issue #603. Thanks to Vikas Kedia (@vikaskedia) for the report.
- Remove sidebar floar right.
Fixed GitLab issue #600. Thanks to Frédéric Sheedy
(@fsheedy) for the report and debug information.
- Collapse sidebar on small screen
Display sidebar at the bottom of the screen on small displays.
Removals
--------
- None
Upgrading from a previous version
---------------------------------
If installed via Python's PIP
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Remove deprecated requirements::
$ curl https://gitlab.com/mayan-edms/mayan-edms/raw/master/removals.txt | pip uninstall -r /dev/stdin
Type in the console::
$ pip install mayan-edms==3.2.1
the requirements will also be updated automatically.
Using Git
^^^^^^^^^
If you installed Mayan EDMS by cloning the Git repository issue the commands::
$ git reset --hard HEAD
$ git pull
otherwise download the compressed archived and uncompress it overriding the
existing installation.
Remove deprecated requirements::
$ pip uninstall -y -r removals.txt
Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt
Common steps
^^^^^^^^^^^^
Perform these steps after updating the code from either step above.
Make a backup of your supervisord file::
sudo cp /etc/supervisor/conf.d/mayan.conf /etc/supervisor/conf.d/mayan.conf.bck
Update the supervisord configuration file. Replace the environment
variables values show here with your respective settings. This step will refresh
the supervisord configuration file with the new queues and the latest
recommended layout::
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
Edit the supervisord configuration file and update any setting the template
generator missed::
vi /etc/supervisor/conf.d/mayan.conf
Migrate existing database schema with::
$ mayan-edms.py performupgrade
Add new static media::
$ mayan-edms.py preparestatic --noinput
The upgrade procedure is now complete.
Backward incompatible changes
-----------------------------
- None
Bugs fixed or issues closed
---------------------------
- :gitlab-issue:`523` PostgreSQL error about insufficient connections
- :gitlab-issue:`599` Settings display !!python/unicode with values since 3.2
- :gitlab-issue:`600` Layout broken if we change locale, since 3.2
- :gitlab-issue:`601` Error when creating new cabinet level
- :gitlab-issue:`602` System stops responding for a minute every 10 minutes or so
- :gitlab-issue:`603` ImportError: No module named appearance
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,109 +0,0 @@
Version 3.2.2
=============
Released: June 19, 2019
Changes
-------
- Fix document type change view. Closes GitLab issue #614.
Thanks to Christoph Roeder (@brightdroid) for the report.
- Fix document parsing tool view typo. Closes GitLab issue #615.
Thanks to Tyler Page (@iamtpage) for the report.
- Update the task_check_interval_source reference
GitLab issue #617. Thanks to Lukas Gill (@lukkigi) for
the report and debug information.
Removals
--------
- None
Upgrading from a previous version
---------------------------------
If installed via Python's PIP
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Remove deprecated requirements::
$ curl https://gitlab.com/mayan-edms/mayan-edms/raw/master/removals.txt | pip uninstall -r /dev/stdin
Type in the console::
$ pip install mayan-edms==3.2.2
the requirements will also be updated automatically.
Using Git
^^^^^^^^^
If you installed Mayan EDMS by cloning the Git repository issue the commands::
$ git reset --hard HEAD
$ git pull
otherwise download the compressed archived and uncompress it overriding the
existing installation.
Remove deprecated requirements::
$ pip uninstall -y -r removals.txt
Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt
Common steps
^^^^^^^^^^^^
Perform these steps after updating the code from either step above.
Make a backup of your supervisord file::
sudo cp /etc/supervisor/conf.d/mayan.conf /etc/supervisor/conf.d/mayan.conf.bck
Update the supervisord configuration file. Replace the environment
variables values show here with your respective settings. This step will refresh
the supervisord configuration file with the new queues and the latest
recommended layout::
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
Edit the supervisord configuration file and update any setting the template
generator missed::
vi /etc/supervisor/conf.d/mayan.conf
Migrate existing database schema with::
$ mayan-edms.py performupgrade
Add new static media::
$ mayan-edms.py preparestatic --noinput
The upgrade procedure is now complete.
Backward incompatible changes
-----------------------------
- None
Bugs fixed or issues closed
---------------------------
- :gitlab-issue:`614` change type exception
- :gitlab-issue:`615` TypeError: success() got an unexpected keyword argument 'requrest'
- :gitlab-issue:`617` Watcher Task not running
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,113 +0,0 @@
Version 3.2.3
=============
Released: June 21, 2019
Changes
-------
- Add support for disabling the random primary key
test mixin.
- Fix mailing profile log columns mappings.
GitLab issue #626. Thanks to Jesaja Everling (@jeverling)
for the report.
- Fix the Django SMTP backend username field name.
GitLab issue #625. Thanks to Jesaja Everling (@jeverling)
for the report and the research.
- Increase the Django STMP username.
GitLab issue #625. Thanks to Jesaja Everling (@jeverling)
for the report and the research.
Removals
--------
- None
Upgrading from a previous version
---------------------------------
If installed via Python's PIP
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Remove deprecated requirements::
$ curl https://gitlab.com/mayan-edms/mayan-edms/raw/master/removals.txt | pip uninstall -r /dev/stdin
Type in the console::
$ pip install mayan-edms==3.2.1
the requirements will also be updated automatically.
Using Git
^^^^^^^^^
If you installed Mayan EDMS by cloning the Git repository issue the commands::
$ git reset --hard HEAD
$ git pull
otherwise download the compressed archived and uncompress it overriding the
existing installation.
Remove deprecated requirements::
$ pip uninstall -y -r removals.txt
Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt
Common steps
^^^^^^^^^^^^
Perform these steps after updating the code from either step above.
Make a backup of your supervisord file::
sudo cp /etc/supervisor/conf.d/mayan.conf /etc/supervisor/conf.d/mayan.conf.bck
Update the supervisord configuration file. Replace the environment
variables values show here with your respective settings. This step will refresh
the supervisord configuration file with the new queues and the latest
recommended layout::
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
Edit the supervisord configuration file and update any setting the template
generator missed::
vi /etc/supervisor/conf.d/mayan.conf
Migrate existing database schema with::
$ mayan-edms.py performupgrade
Add new static media::
$ mayan-edms.py preparestatic --noinput
The upgrade procedure is now complete.
Backward incompatible changes
-----------------------------
- None
Bugs fixed or issues closed
---------------------------
- :gitlab-issue:`619` poplib.POP3_SSL and poplib.POP3 initialized with wrong kwarg
- :gitlab-issue:`625` mayan.apps.mailer.mailers.DjangoSMTP uses "user", but django.core.mail.backends.smtp.EmailBackend expects "username"
- :gitlab-issue:`626` Mailing profile error log is empty, despite errors
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,132 +0,0 @@
Version 3.2.4
=============
Released: June 29, 2019
Changes
-------
- Support configurable GUnicorn timeouts. Defaults to
current value of 120 seconds.
- Fix help text of the platformtemplate command.
- Fix IMAP4 mailbox.store flags argument. Python's documentation
incorrectly state it is named flag_list. Closes GitLab issue
#606. Thanks to Samuel Aebi (@samuelaebi) for the report and
debug information.
debug information.
- Support configurable GUnicorn timeouts. Defaults to
current value of 120 seconds.
- Fix help text of the platformtemplate command.
- Fix IMAP4 mailbox.store flags argument. Python's documentation
incorrectly state it is named flag_list. Closes GitLab issue
#606.
- Improve the workflow preview generation. Use polylines
instead of splines. Add state actions to the preview.
Highlight the initial state.
- Add help text to the workflow transition form comment field.
- Fix direct deployment instructions.
- Add user, group, and role dashboard widgets.
- Add test mixin detect database connection leaks.
- Remove tag create event registration from the tag
instances. The tag create event is not applicable to
existing tags.
- Add proper redirection after moving a document to the
trash.
- Remove the INSTALLED_APPS setting. Replace it with
the new COMMON_EXTRA_APPS and COMMON_DISABLED_APPS.
- Improve email metadata support. Can now work on
email with nested parts. Also the metadata.yaml
attachment no longer needs to be the first attachment.
Removals
--------
- None
Upgrading from a previous version
---------------------------------
If installed via Python's PIP
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Remove deprecated requirements::
$ curl https://gitlab.com/mayan-edms/mayan-edms/raw/master/removals.txt | pip uninstall -r /dev/stdin
Type in the console::
$ pip install mayan-edms==3.2.4
the requirements will also be updated automatically.
Using Git
^^^^^^^^^
If you installed Mayan EDMS by cloning the Git repository issue the commands::
$ git reset --hard HEAD
$ git pull
otherwise download the compressed archived and uncompress it overriding the
existing installation.
Remove deprecated requirements::
$ pip uninstall -y -r removals.txt
Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt
Common steps
^^^^^^^^^^^^
Perform these steps after updating the code from either step above.
Make a backup of your supervisord file::
sudo cp /etc/supervisor/conf.d/mayan.conf /etc/supervisor/conf.d/mayan.conf.bck
Update the supervisord configuration file. Replace the environment
variables values show here with your respective settings. This step will refresh
the supervisord configuration file with the new queues and the latest
recommended layout::
sudo 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
Edit the supervisord configuration file and update any setting the template
generator missed::
sudo vi /etc/supervisor/conf.d/mayan.conf
Migrate existing database schema with::
$ mayan-edms.py performupgrade
Add new static media::
$ mayan-edms.py preparestatic --noinput
The upgrade procedure is now complete.
Backward incompatible changes
-----------------------------
- None
Bugs fixed or issues closed
---------------------------
- :gitlab-issue:`606` Delete after IMAP Processing
- :gitlab-issue:`628` mailbox.user in POP3Email gets passed keyword argument, but only accepts "user" or positional argument
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,117 +0,0 @@
Version 3.2.5
=============
Released: July 05, 2019
Changes
-------
- Don't error out if the EXTRA_APPS or the DISABLED_APPS settings
are set to blank.
- Update troubleshooting documentation topic.
- Add data migration to the file metadata app. Synchronizes the
document type settings model of existing document types.
- Fix cabinet and tags upload wizard steps missing some entries.
GitLab issue #632. Thanks to Matthias Urhahn (@d4rken) for the
report.
- Add alert when settings are changed and util the installation
is restarted. GitLab issue #605. Thanks to
Vikas Kedia (@vikaskedia) to the report.
- Update Django to version 1.11.22, PyYAML to version 5.1.1,
django-widget-tweaks to version 1.4.5, pathlib2 to version 2.3.4,
Werkzeug to version 0.15.4, django-extensions to version 2.1.9,
django-rosetta to version 0.9.3, psutil to version 5.6.3.
Removals
--------
- None
Upgrading from a previous version
---------------------------------
If installed via Python's PIP
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Remove deprecated requirements::
$ curl https://gitlab.com/mayan-edms/mayan-edms/raw/master/removals.txt | pip uninstall -r /dev/stdin
Type in the console::
$ pip install mayan-edms==3.2.5
the requirements will also be updated automatically.
Using Git
^^^^^^^^^
If you installed Mayan EDMS by cloning the Git repository issue the commands::
$ git reset --hard HEAD
$ git pull
otherwise download the compressed archived and uncompress it overriding the
existing installation.
Remove deprecated requirements::
$ pip uninstall -y -r removals.txt
Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt
Common steps
^^^^^^^^^^^^
Perform these steps after updating the code from either step above.
Make a backup of your supervisord file::
sudo cp /etc/supervisor/conf.d/mayan.conf /etc/supervisor/conf.d/mayan.conf.bck
Update the supervisord configuration file. Replace the environment
variables values show here with your respective settings. This step will refresh
the supervisord configuration file with the new queues and the latest
recommended layout::
sudo 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
Edit the supervisord configuration file and update any setting the template
generator missed::
sudo vi /etc/supervisor/conf.d/mayan.conf
Migrate existing database schema with::
$ mayan-edms.py performupgrade
Add new static media::
$ mayan-edms.py preparestatic --noinput
The upgrade procedure is now complete.
Backward incompatible changes
-----------------------------
- None
Bugs fixed or issues closed
---------------------------
- :gitlab-issue:`605` Project title fluctuates between default value and new value [Video]
- :gitlab-issue:`629` Cannot Upgrade to 3.2.X Docker Image
- :gitlab-issue:`632` Tags get lost when uploading through the webui
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,111 +0,0 @@
Version 3.2.6
=============
Released: July 10, 2019
Changes
-------
- Remove the smart settings app * import. Following MERC 0005.
- Encode settings YAML before hashing. Avoids unicode issues with Python 3.
- Fix document icon used in the workflow runtime links.
- Add trashed date time label.
- Fix thumbnail generation issue. GitLab issue #637.
Thanks to Giacomo Cariello (@giacomocariello) for the report
and the merge request fixing the issue.
Removals
--------
- None
Upgrading from a previous version
---------------------------------
If installed via Python's PIP
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Remove deprecated requirements::
sudo -u mayan curl https://gitlab.com/mayan-edms/mayan-edms/raw/master/removals.txt -o /tmp/removals.txt && sudo -u mayan /opt/mayan-edms/bin/pip uninstall -y -r /tmp/removals.txt
Type in the console::
sudo -u mayan /opt/mayan-edms/bin/pip install mayan-edms==3.2.6
the requirements will also be updated automatically.
Using Git
^^^^^^^^^
If you installed Mayan EDMS by cloning the Git repository issue the commands::
$ git reset --hard HEAD
$ git pull
otherwise download the compressed archived and uncompress it overriding the
existing installation.
Remove deprecated requirements::
$ pip uninstall -y -r removals.txt
Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt
Common steps
^^^^^^^^^^^^
Perform these steps after updating the code from either step above.
Make a backup of your supervisord file::
sudo cp /etc/supervisor/conf.d/mayan.conf /etc/supervisor/conf.d/mayan.conf.bck
Update the supervisord configuration file. Replace the environment
variables values show here with your respective settings. This step will refresh
the supervisord configuration file with the new queues and the latest
recommended layout::
sudo 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
Edit the supervisord configuration file and update any setting the template
generator missed::
sudo vi /etc/supervisor/conf.d/mayan.conf
Migrate existing database schema with::
sudo -u mayan MAYAN_DATABASE_ENGINE=django.db.backends.postgresql MAYAN_DATABASE_NAME=mayan \
MAYAN_DATABASE_PASSWORD=mayanuserpass MAYAN_DATABASE_USER=mayan \
MAYAN_DATABASE_HOST=127.0.0.1 MAYAN_MEDIA_ROOT=/opt/mayan-edms/media \
/opt/mayan-edms/bin/mayan-edms.py performupgrade
Add new static media::
sudo -u mayan MAYAN_MEDIA_ROOT=/opt/mayan-edms/media \
/opt/mayan-edms/bin/mayan-edms.py preparestatic --noinput
The upgrade procedure is now complete.
Backward incompatible changes
-----------------------------
- None
Bugs fixed or issues closed
---------------------------
- :gitlab-issue:`637` Thumbnail generation bug
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,145 +0,0 @@
Version 3.2.7
=============
Released: August 28, 2019
Changes
-------
- Fix checkouts form bug. Fixes GitLab issue #654
Thanks to Lucius Schaerer (@lschaer1) for the report.
- Disable pagination current page button
Current page button was clickable and would cause the
single page navigation to jump to the home view.
- Remove redundant Celery queue declarations from the
file_metadata app.
- Add internal_name field to workflow serializer.
Fixes workflow API creation view.
- Fix document cabinet list API view. Thanks for forum user
"jere" for the report. Forum topic 1039.
- Fix document template column field. GitLab issue #655.
Thanks to Christian Wiegand (@christianwgd) for the
report.
- Increase mailing profile password field max length
from 48 to 128 characters. GitLab issue #657.
Thanks to sigsec (@sigsec) for the report.
- Update the Docker entrypoint to update the ownership
of files when the UID of GUID are changed.
GitLab issue #650. Thanks to Fabian (@ruffy91)
for the report.
- Update the Docker entrypoint to allow changing
the GID of the mayan user to existing values.
GitLab issue #652. Thanks to Fabian (@ruffy91)
for the report.
- Rename the MAYAN_USER_GUID environment variable
to MAYAN_USER_GID.
- Backport individual index rebuild support.
- Add automatic adjustment of HTML body on navigation
bar changes. Closes GitLab issue #643. Thanks to
Light Templar (@LightTemplar) for the report.
- Unify all line endings to be Linux style.
- Make sure system alerts don't appear under
floating elements.
Removals
--------
- None
Upgrading from a previous version
---------------------------------
If installed via Python's PIP
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Remove deprecated requirements::
sudo -u mayan curl https://gitlab.com/mayan-edms/mayan-edms/raw/master/removals.txt -o /tmp/removals.txt && sudo -u mayan /opt/mayan-edms/bin/pip uninstall -y -r /tmp/removals.txt
Type in the console::
sudo -u mayan /opt/mayan-edms/bin/pip install mayan-edms==3.2.7
the requirements will also be updated automatically.
Using Git
^^^^^^^^^
If you installed Mayan EDMS by cloning the Git repository issue the commands::
$ git reset --hard HEAD
$ git pull
otherwise download the compressed archived and uncompress it overriding the
existing installation.
Remove deprecated requirements::
$ pip uninstall -y -r removals.txt
Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt
Common steps
^^^^^^^^^^^^
Perform these steps after updating the code from either step above.
Make a backup of your supervisord file::
sudo cp /etc/supervisor/conf.d/mayan.conf /etc/supervisor/conf.d/mayan.conf.bck
Update the supervisord configuration file. Replace the environment
variables values show here with your respective settings. This step will refresh
the supervisord configuration file with the new queues and the latest
recommended layout::
sudo 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
Edit the supervisord configuration file and update any setting the template
generator missed::
sudo vi /etc/supervisor/conf.d/mayan.conf
Migrate existing database schema with::
sudo -u mayan MAYAN_DATABASE_ENGINE=django.db.backends.postgresql MAYAN_DATABASE_NAME=mayan \
MAYAN_DATABASE_PASSWORD=mayanuserpass MAYAN_DATABASE_USER=mayan \
MAYAN_DATABASE_HOST=127.0.0.1 MAYAN_MEDIA_ROOT=/opt/mayan-edms/media \
/opt/mayan-edms/bin/mayan-edms.py performupgrade
Add new static media::
sudo -u mayan MAYAN_MEDIA_ROOT=/opt/mayan-edms/media \
/opt/mayan-edms/bin/mayan-edms.py preparestatic --noinput
The upgrade procedure is now complete.
Backward incompatible changes
-----------------------------
- None
Bugs fixed or issues closed
---------------------------
- :gitlab-issue:`643` The "Actions" button won't show up, if window size between 992 and 1248 px
- :gitlab-issue:`650` Permission denied when MAYAN_USER_UID and MAYAN_USER_GUID are set
- :gitlab-issue:`652` MAYAN_USER_GUID cannot be set to specific values
- :gitlab-issue:`654` Internal Server Error, Document Checkout
- :gitlab-issue:`655` Index setup tree view shows two times the "enabled" field instead of "Link documents"
- :gitlab-issue:`657` Mailer password length restriction is too short
- :forum-topic:`1039` Re: /api/documents/{id}/cabinets returns 500
- :forum-topic:`1050` edit/delete sub-cabinet
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,161 +0,0 @@
Version 3.2.8
=============
Released: October 1, 2019
Changes
-------
API
^^^
Fix an error when accessing some API entry points without
being authenticated. Accessing API endpoints without being authenticated
will now always return empty results.
Cabinets
^^^^^^^^
Tweaked the jstree component's appearance to cope with long labels.
Added a scrollbar, reduced the font size, switched to a sans serif font,
and reduced padding. Thanks for forum user @briboe for the report.
Workflow actions to add and remove documents from cabinets was added.
Dependencies
^^^^^^^^^^^^
The Django version used was updated to version 1.11.24. The jQuery version
used was updated to version 3.4.1. Both as fully backwards compatible with
their previous versions.
OCR
^^^
Support was added to delete the content of document's OCR or parsed content.
Events for both situations was added allowing content deletion to be used
as workflow transition triggers.
Docker
^^^^^^
A missing recursive option was added to the Docker entrypoint
command "chown" to change the ownership of files when specifying a custom
UID or GID. Closes GitLab issue #668. Thanks to John Wice (@brilthor)
for the report.
Two fonts were added to the Docker image to support rendering Chinese office
documents. Closes GitLab issue #666. Thanks to javawcy (@javawcy) and forum
user @leoliu for the report and help closing this issue.
Usability
^^^^^^^^^
Descriptions for screenreaders was added via image alt tag. The user interface
will also now allow scaling.
Removals
--------
- None
Upgrading from a previous version
---------------------------------
If installed via Python's PIP
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Remove deprecated requirements::
sudo -u mayan curl https://gitlab.com/mayan-edms/mayan-edms/raw/master/removals.txt -o /tmp/removals.txt && sudo -u mayan /opt/mayan-edms/bin/pip uninstall -y -r /tmp/removals.txt
Type in the console::
sudo -u mayan /opt/mayan-edms/bin/pip install mayan-edms==3.2.8
the requirements will also be updated automatically.
Using Git
^^^^^^^^^
If you installed Mayan EDMS by cloning the Git repository issue the commands::
$ git reset --hard HEAD
$ git pull
otherwise download the compressed archived and uncompress it overriding the
existing installation.
Remove deprecated requirements::
$ pip uninstall -y -r removals.txt
Next upgrade/add the new requirements::
$ pip install --upgrade -r requirements.txt
Common steps
^^^^^^^^^^^^
Perform these steps after updating the code from either step above.
Make a backup of your supervisord file::
sudo cp /etc/supervisor/conf.d/mayan.conf /etc/supervisor/conf.d/mayan.conf.bck
Update the supervisord configuration file. Replace the environment
variables values show here with your respective settings. This step will refresh
the supervisord configuration file with the new queues and the latest
recommended layout::
sudo 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
Edit the supervisord configuration file and update any setting the template
generator missed::
sudo vi /etc/supervisor/conf.d/mayan.conf
Migrate existing database schema with::
sudo -u mayan MAYAN_DATABASE_ENGINE=django.db.backends.postgresql MAYAN_DATABASE_NAME=mayan \
MAYAN_DATABASE_PASSWORD=mayanuserpass MAYAN_DATABASE_USER=mayan \
MAYAN_DATABASE_HOST=127.0.0.1 MAYAN_MEDIA_ROOT=/opt/mayan-edms/media \
/opt/mayan-edms/bin/mayan-edms.py performupgrade
Add new static media::
sudo -u mayan MAYAN_MEDIA_ROOT=/opt/mayan-edms/media \
/opt/mayan-edms/bin/mayan-edms.py preparestatic --noinput
The upgrade procedure is now complete.
Backward incompatible changes
-----------------------------
- None
Bugs fixed or issues closed
---------------------------
- :gitlab-issue:`666` Chinese document such as .doc can't display well.
- :gitlab-issue:`668` Permission denied errors with custom uid persist (650 needs re-open)
- :forum-topic:`1120` Cabinet Presentation
- :forum-topic:`2202` Cannot display Chinese character and cannot identify Excel files
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,7 +1,7 @@
Version 3.2
===========
Released: June 13, 2019
Released: May XX, 2019
Work on version 4.0 continues along. Version 4.0 brings so many changes that it
missed its release schedule. Therefore we decided to release an interim version,
@@ -67,7 +67,7 @@ Apps
Dependencies app: A new app was added to handle all dependencies. Previously,
the code to handle JavaScript dependencies and license text collection, was
contained in the common app. This new app, called "dependencies" now handles
contianed in the common app. This new app, called "dependencies" now handles
both tasks. In addition, it provides checks for binary dependencies.
This app's main view will allow users to know which dependencies are not being
recognized and help debug installation issues faster and easier. The app
@@ -163,8 +163,8 @@ currently logged user.
Incompatible changes
^^^^^^^^^^^^^^^^^^^^
Existing config.yml files need to be updated manually. The prefix 'mayan.apps'
must be added to any reference of an app.
Existing config.yml files need to be updated manually and 'mayan.apps'
prepended to any reference to an app.
All the Internet Explorer specific HTML markup was removed from the templates.
@@ -237,7 +237,7 @@ at the time was to rename Mayan's to "mayan_statistics". With this change
solutions like this won't be necessary.
This means that any reference to an app, either in the code or from a
configuration file must now be prefixed with ``mayan.apps``. Existing
configuration file must now be prepended with ``mayan.apps``. Existing
``config.yml`` files need to be updated manually.
For developers, a new test mixin was added called ``SilenceLoggerTestCaseMixin``.
@@ -387,7 +387,7 @@ An optimization was added which removed the exception catch for the
``permissions`` argument of the ``check_access`` method. ``permissions``
argument must now be an iterable.
Signal handlers must now be prefixed with ``handler``.
Signal handlers must now be prepended with ``handler``.
Remove ``.filter_by_access``. Replaced by ``.restrict_queryset``.
@@ -703,31 +703,9 @@ Other changes
- Add cabinet created and edited events.
- Chart updates: Show last update date and time in list view and details view.
Change color scheme to match rest of project. Increase size of data points.
Improve responsive settings. Redirect to the current view after queuing.
Improve responsive settings. Redirect to the current view after queueing.
- Split document type retention policies into it own view.
- Place deletion policies units before periods for clarity.
- Remove the included Lato font. The font is now downloaded
at install time.
- Add support for Google Fonts dependencies.
- Add support for patching dependency files using rewriting rules.
- Allow searching documents by UUID.
- Improve search negation logic. Only dashes at the start of terms and
outside of quotes are now interpreted as negation.
- Add support for search field transformations.
- Disable hiding page navigation on idle.
- Display namespace in the transition trigger view.
- Sort events list in the transition trigger view.
- Add support for form media to DynamicFormMixin.
- Fix tag attach and remove action form media.
- Sort content type list of the access grant and remove action.
- Use select2 for the content type filed of the access
grant and remove action.
- Add Latvian translation.
- Support search model selection.
- Support passing a queryset factory to the search model.
- Add workflow actions to grant or remove permissions to
a document.
- Add support for locked files for watchfolder.
Removals
@@ -803,7 +781,7 @@ Migrate existing database schema with::
Add new static media::
$ mayan-edms.py preparestatic --noinput
$ mayan-edms.py collectstatic --noinput
The upgrade procedure is now complete.
@@ -817,33 +795,33 @@ Backward incompatible changes
- Paths to apps must be updated in existing ``config.yml`` files. Preprend
``mayan.apps.`` to any app reference. Some instances:
.. code-block :: python
.. code-block::
LOCK_MANAGER_BACKEND: lock_manager.backends.file_lock.FileLock
to
.. code-block :: python
.. code-block::
LOCK_MANAGER_BACKEND: mayan.apps.lock_manager.backends.file_lock.FileLock
.. code-block :: python
.. code-block::
OCR_BACKEND: ocr.backends.pyocr.PyOCR
to
.. code-block :: python
.. code-block::
OCR_BACKEND: mayan.apps.ocr.backends.pyocr.PyOCR
.. code-block :: python
.. code-block::
CONVERTER_GRAPHICS_BACKEND: converter.backends.python.Python
to
.. code-block :: python
.. code-block::
CONVERTER_GRAPHICS_BACKEND: mayan.apps.converter.backends.python.Python
@@ -854,9 +832,8 @@ Backward incompatible changes
- To collect and compress the static media files, use the new ``preparestatic``
command instead of the traditional ``collectstatic``. Both work the same
way, but ``preparestatic`` has a default blacklist to avoid collecting files
from tests, development setup, and demos.
way, but ``preparestatic`` has a default backlist to avoid collecting
test files.
Bugs fixed or issues closed
---------------------------
@@ -872,6 +849,5 @@ Bugs fixed or issues closed
- :gitlab-issue:`563` Recursive Watch Folder
- :gitlab-issue:`579` Untranslated items
- :gitlab-issue:`589` Document {{ link }} send via Email contains example.com as domain
- :gitlab-issue:`595` Remove dependency to fonts.googleapis.com
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -1,213 +0,0 @@
Version 3.3
===========
Released: XX XX, 2019
Changes
-------
- Add support for icon shadows.
- Add icons and no-result template to the object error log view and
links.
- Use Select2 widget for the document type selection form.
- Backport the vertical main menu update. This update splits the previous
main menu into a new menu in the same location as the previous one
now called the top bar, and a new vertical main menu on the left side.
The vertical menu remain open even when clicking on items and upon
a browser refresh will also restore its state to match the selected
view.
- Backport workflow preview refactor. GitLab issue #532.
- Add support for source column inheritance.
- Add support for source column exclusion.
- Backport workflow context support.
- Backport workflow transitions field support.
- Backport workflow email action.
- Backport individual index rebuild support.
- Rename the installjavascript command to installdependencies.
- Remove database conversion command.
- Remove support for quoted configuration entries. Support unquoted,
nested dictionaries in the configuration. Requires manual
update of existing config.yml files.
- Support user specified locations for the configuration file with the
CONFIGURATION_FILEPATH (MAYAN_CONFIGURATION_FILEPATH environment variable), and
CONFIGURATION_LAST_GOOD_FILEPATH
(MAYAN_CONFIGURATION_LAST_GOOD_FILEPATH environment variable) settings.
- Move bootstrapped settings code to their own module in the smart_settings apps.
- Remove individual database configuration options. All database configuration
is now done using MAYAN_DATABASES to mirror Django way of doing database setup.
- Added support for YAML encoded environment variables to the platform
templates apps.
- Move YAML code to its own module. Code now resides in common.serialization
in the form of two new functions: yaml_load and yaml_dump.
- Move Django and Celery settings. Django settings now reside in the smart
settings app. Celery settings now reside in the task manager app.
- Backport FakeStorageSubclass from versions/next. Placeholder class to allow
serializing the real storage subclass to support migrations.
Used by all configurable storages.
- Support checking in and out multiple documents.
- Remove encapsulate helper.
- Add support for menu inheritance.
- Emphasize source column labels.
- Backport file cache manager app.
- Convert document image cache to use file cache manager app.
Add setting DOCUMENTS_CACHE_MAXIMUM_SIZE defaults to 500 MB.
- Update Celery to version 4.3.0. Settings changed:
MAYAN_BROKER_URL to MAYAN_CELERY_BROKER_URL,
MAYAN_CELERY_ALWAYS_EAGER to MAYAN_CELERY_TASK_ALWAYS_EAGER.
- Replace djcelery and replace it with django-celery-beat.
- Update Celery to version 4.3.0 with 55e9b2263cbdb9b449361412fd18d8ee0a442dd3
from versions/next, code from GitLab issue #594 and GitLab merge request !55.
Thanks to Jakob Haufe (@sur5r) and Jesaja Everling (@jeverling)
for much of the research and code updates.
- Support wildcard MIME type associations for the file metadata drivers.
- Rename MAYAN_GUID to MAYAN_GID
- Update Gunicorn to use sync workers.
- Include devpi-server as a development dependency.
- Update default Docker stack file.
- Remove Redis from the Docker image.
- Add Celery flower to the Docker image.
- Allow PIP proxying to the Docker image during build.
- Default Celery worker concurrency to 0 (auto).
- Set DJANGO_SETTINGS_MODULE environment variable to make it
available to sub processes.
- Add entrypoint commands to run single workers, single gunicorn
or single celery commands like "flower".
- Add platform template to return queues for a worker.
- Remove task inspection from task manager app.
- Move pagination navigation inside the toolbar.
- Remove document image clear link and view.
This is now handled by the file caching app.
- Add web links app.
- Add support to display column help text
as a tooltip.
- Update numeric dashboard widget to display
thousand commas.
- Add support for disabling document pages.
- Add support for converter layers.
- Add redactions app.
- Unify all line endings to be Linux style.
- Add support for changing the system messages position.
GitLab issue #640. Thanks to Matthias Urhahn (@d4rken).
Removals
--------
- Database conversion. Reason for removal: The database conversions support
provided by this feature (SQLite to PostgreSQL) was being confused with
database migrations and upgrades.
Database upgrades are the responsibility of the app and the framework.
Database conversions however are not the responsibility of the app (Mayan),
they are the responsibility of the framework.
Database conversion is outside the scope of what Mayan does but we added
the code, management command, instructions and testing setup to provide
this to our users until the framework (Django) decided to add this
themselves (like they did with migrations).
Continued confusion about the purpose of the feature and confusion about
how errors with this feature were a reflexion of the code quality of
Mayan necessitated the removal of the database conversion feature.
- Django environ
Upgrading from a previous version
---------------------------------
If installed via Python's PIP
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Remove deprecated requirements::
sudo -u mayan curl https://gitlab.com/mayan-edms/mayan-edms/raw/master/removals.txt -o /tmp/removals.txt && sudo -u mayan /opt/mayan-edms/bin/pip uninstall -y -r /tmp/removals.txt
Type in the console::
/opt/mayan-edms/bin/pip install mayan-edms==3.3
the requirements will also be updated automatically.
Using Git
^^^^^^^^^
If you installed Mayan EDMS by cloning the Git repository issue the commands::
git reset --hard HEAD
git pull
otherwise download the compressed archived and uncompress it overriding the
existing installation.
Remove deprecated requirements::
pip uninstall -y -r removals.txt
Next upgrade/add the new requirements::
pip install --upgrade -r requirements.txt
Common steps
^^^^^^^^^^^^
Perform these steps after updating the code from either step above.
Make a backup of your supervisord file::
sudo cp /etc/supervisor/conf.d/mayan.conf /etc/supervisor/conf.d/mayan.conf.bck
Update the supervisord configuration file. Replace the environment
variables values show here with your respective settings. This step will refresh
the supervisord configuration file with the new queues and the latest
recommended layout::
sudo MAYAN_DATABASES="{'default':{'ENGINE':'django.db.backends.postgresql','NAME':'mayan','PASSWORD':'mayanuserpass','USER':'mayan','HOST':'127.0.0.1'}}" \
MAYAN_MEDIA_ROOT=/opt/mayan-edms/media \
/opt/mayan-edms/bin/mayan-edms.py platformtemplate supervisord > /etc/supervisor/conf.d/mayan.conf
Edit the supervisord configuration file and update any setting the template
generator missed::
sudo vi /etc/supervisor/conf.d/mayan.conf
Migrate existing database schema with::
sudo -u mayan MAYAN_MEDIA_ROOT=/opt/mayan-edms/media /opt/mayan-edms/bin/mayan-edms.py performupgrade
Add new static media::
sudo -u mayan MAYAN_MEDIA_ROOT=/opt/mayan-edms/media /opt/mayan-edms/bin/mayan-edms.py preparestatic --noinput
The upgrade procedure is now complete.
Backward incompatible changes
-----------------------------
- Update quoted settings to be unquoted:
- COMMON_SHARED_STORAGE_ARGUMENTS
- CONVERTER_GRAPHICS_BACKEND_ARGUMENTS
- DOCUMENTS_CACHE_STORAGE_BACKEND_ARGUMENTS
- DOCUMENTS_STORAGE_BACKEND_ARGUMENTS
- FILE_METADATA_DRIVERS_ARGUMENTS
- SIGNATURES_STORAGE_BACKEND_ARGUMENTS
Bugs fixed or issues closed
---------------------------
- :gitlab-issue:`526` RuntimeWarning: Never call result.get() within a task!
- :gitlab-issue:`532` Workflow preview isn't updated right after transitions are modified
- :gitlab-issue:`540` hint-outdated/update documentation
- :gitlab-issue:`594` 3.2b1: Unable to install/run under Python 3.5/3.6/3.7
- :gitlab-issue:`634` Failing docker entrypoint when using secret config
- :gitlab-issue:`635` Build a docker image for Python3
- :gitlab-issue:`640` UX: "Toast" Popup position prevents access to actions
- :gitlab-issue:`644` Update sane-utils package in docker image.
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -20,15 +20,6 @@ versions of the documentation contain the release notes for any later releases.
.. toctree::
:maxdepth: 1
3.3
3.2.8
3.2.7
3.2.6
3.2.5
3.2.4
3.2.3
3.2.2
3.2.1
3.2
3.1.11
3.1.10

View File

@@ -143,7 +143,6 @@ storages
Storages
subclasses
subclassing
subfolder
sublicense
sublicensees
swedish

View File

@@ -6,88 +6,6 @@ FAQ
Non technical
*************
Contact
=======
Can I contact members of the development team?
----------------------------------------------
Direct access to members of the development team is reserved for clients
of a support or consultation contract.
I can't pay for support/consultation
------------------------------------
A community forum is available at https://forum.mayan-edms.com. Members of
the development team visit the forum on occasions and might answer some
questions on a voluntary basis.
I found a bug
-------------
For bugs, open an issue at https://gitlab.com/mayan-edms/mayan-edms/issues.
I found a security issue
------------------------
Open an issue at https://gitlab.com/mayan-edms/mayan-edms/issues and mark it as
Confidential. Allow us at least 48 hours to find and release a fix
for the issue before submitting it to the CVE database.
I want to join the development team
-----------------------------------
Perfect! We need all the help we can get. Tell us where we can see what you've
done using Mayan EDMS. It could be a fork, a new UI, an API client, a custom app,
or anything else that you think will be able to evidence your dominion over the
codebase.
I submitted an issue and it has not been fixed
----------------------------------------------
There are many reason an issue might not get resolved and remain open for an
extended period of time. We document on the issue itself the progress and when
resolved will reference what commit fixed it and the version or approximate time
for the code to make it into a production release. Some reason why issues remain
open with no resolution are:
- It was not an issue with the code. It happens that sometimes the problem lies
with the operating system, the filesystem being used, the platform or packaging
method.
- It was not an issue but a question or a comment. The issue system is for reporting
problems with the code. That said, we sometimes answer questions submitted as
issues. For questions or discussions use the community forum.
- We are not able to reproduce the issue. We need to be able to recreate the
conditions that trigger the issue so that we can pinpoint the cause. After that
we create a test to make sure the issue is really fixed. Some issues can
be triggered manually easily but are hard to trigger programatically.
- The issue is not clearly explained. Issue descriptions like: "It doesn't work",
or "It showed an error but I forgot to write it down" are almost impossible to
resolve.
- We understand the cause of the problem but don't yet a solution to implement.
We have studied the issue and have been able to reproduce it, but have not
reached a consensus on how it should be fixed. Could be that the solution is
beyond the collective expertise of the development team or that a design
decision of big impact is needed before code changes can be implemented.
- The issue is no real. The issue might be for an obsolete version. It could be
for a fork or a program that is not developed by us. Sometimes they are just
fake issues.
I submitted a merge request and has not been merged
---------------------------------------------------
Merge requests must follow the development standards of the code as close a
possible. They must also be atomic and as small as possible. The code must also
not change the behavior of the project. We can't accept merge request that
customize it in some way based on your own preferences or needs.
Distribution
============
@@ -126,7 +44,6 @@ Restricting distribution or sale would conflict with the license terms. This
would possible for a commercial version of Mayan EDMS with separate licensing
terms.
Is there a commercial partnership program?
------------------------------------------
@@ -167,6 +84,17 @@ upgrades, if a migration fails the database structure is left in a transitory
state and has to be reverted manually before trying again.
Document versions
=================
How do you upload a new version of an existing file?
----------------------------------------------------
Choose a document, and go to the versions tab, on the right menu at the bottom
under Other available action there is Upload new version. Clicking it will
take you to a very similar view as the Upload new document but you will be
able to specify version number and comments for the new version being uploaded.
LDAP
====
@@ -177,7 +105,6 @@ A sample settings file called ldap_connection_settings.py is included in the
contrib/settings/ folder of the repository showing how to setup LDAP
authentication.
Operating systems
=================
@@ -227,18 +154,14 @@ should be used and the resulting static folder served from a webserver.
For more information check the
:django-docs:`howto/static-files/`
Watchfolders
=============
============
The watched folder feature is not working
-----------------------------------------
Make sure that the Celery BEAT scheduler is running correctly as it is the
element that triggers the periodic tasks. Check that the user running the Mayan
EDMS services has read and write permissions for the watch folder.
element that triggers the periodics tasks.
Other
=====
@@ -265,3 +188,8 @@ Example::
Reference:
* http://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html
Can you change the display order of documents…i.e can they be in alphabetical order?
------------------------------------------------------------------------------------
A the moment no, but it is something being worked on.

View File

@@ -12,7 +12,7 @@ Minimum hardware requirements
- 2 Gigabytes of RAM (1 Gigabyte if OCR is turned off).
- Multiple core CPU (64 bit, faster than 1 GHz recommended).
- Unix-like operating system like GNU/Linux. For other operating systems
- Unix-like operating system like Linux and OpenBSD. For other operating systems
user container technologies like Docker or virtual machines.
****************

View File

@@ -7,8 +7,8 @@ Troubleshooting
Database
********
MySQL error: ``OperationalError: (1267, "Illegal mix of collations (latin1_swedish_ci, IMPLICIT) and (utf8_general_ci, COERCIBLE) for operation '='”)``
=======================================================================================================================================================
_mysql_exceptions. OperationalError: (1267, "Illegal mix of collations (latin1_swedish_ci, IMPLICIT) and (utf8_general_ci, COERCIBLE) for operation ='”)
=========================================================================================================================================================
::
@@ -25,8 +25,8 @@ References:
* http://stackoverflow.com/questions/1073295/django-character-set-with-mysql-weirdness
MySQL error: ``Incorrect string value: `'xE2x80x95rs6…'` for column `'content'` at row 1``
==========================================================================================
Incorrect string value: ``'xE2x80x95rs6…'`` for column ``'content'`` at row 1
=============================================================================
When using MySQL and doing OCR on languages other than English
@@ -39,31 +39,13 @@ References:
* http://markmail.org/message/bqajx2utvmtriixi
MySQL error: ``Error "django.db.utils.IntegrityError IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`…`.`…`, CONSTRAINT `…_refs_id_b0252274` FOREIGN KEY (`…`) REFERENCES `…` (`…`))')``
===================================================================================================================================================================================================================================
Error "django.db.utils.IntegrityError IntegrityError: (1452, Cannot add or update a child row: a foreign key constraint fails (`…`.`…`, CONSTRAINT `…_refs_id_b0252274` FOREIGN KEY (`…`) REFERENCES `…` (`…`))')
==================================================================================================================================================================================================================
Solution:
Convert all MySQL tables to the same type, either all MyISAM or InnoDB
PostgreSQL error: ``OperationalError: FATAL: sorry, too many clients already``
===============================================================================
Set ``MAYAN_DATABASE_CONN_MAX_AGE`` to 0
This setting keeps a database connection alive. It allows reuse of database
connections. When Mayan EDMS is deployed with Gunicorn a microthreads backend,
the database connections are not shared and this setting has the reverse effect
of exhausting the available PostgreSQL connections available. To avoid this,
Setting ``MAYAN_DATABASE_CONN_MAX_AGE`` to 0 will cause all microthreads to
release their connections, by closing them when finished.
References:
- https://serverfault.com/questions/635100/django-conn-max-age-persists-connections-but-doesnt-reuse-them-with-postgresq
- https://github.com/benoitc/gunicorn/issues/996
******
Docker
******
@@ -154,30 +136,3 @@ command prompt::
And then execute the command::
/opt/mayan-edms/bin/mayan-edms.py createsuperuser
************
Watchfolders
************
Incomplete files uploaded
=========================
To avoid uploading files are they are being copied to the watchfolder, copy the
files to a temporary directory on the same partition as the watchfolder first.
Then move the files to the watchfolder. The move will be executed as an atomic
operation and will prevent the files to be uploaded in the middle of the
copying process.
************
Dependencies
************
Error: ``unable to execute 'x86_64-linux-gnu-gcc': No such file or directory``
==============================================================================
This happens when using the ``MAYAN_APT_INSTALLS`` feature. It means that the
``GCC`` package is required to compile the packages specified with
``MAYAN_APT_INSTALLS``.
Solution: Include ``gcc`` in the list of packages specified with ``MAYAN_APT_INSTALLS``.

View File

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

View File

@@ -1,14 +1,14 @@
from __future__ import unicode_literals
__title__ = 'Mayan EDMS'
__version__ = '3.3beta1'
__build__ = 0x030300
__build_string__ = 'v3.3beta1-260-g9d13fdd9ce_Thu Oct 10 12:17:38 2019 -0400'
__version__ = '3.2b1'
__build__ = 0x030200
__build_string__ = 'v3.2b1_Thu May 16 01:31:36 2019 -0400'
__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_short__ = '2011-2018 Roberto Rosario'
__copyright__ = '{} {}'.format('Copyright', __copyright_short__)
__website__ = 'https://www.mayan-edms.com'

View File

@@ -1,10 +1,8 @@
from __future__ import unicode_literals, absolute_import
import itertools
import logging
from django.apps import apps
from django.utils.encoding import force_text
logger = logging.getLogger(__name__)
@@ -12,14 +10,23 @@ logger = logging.getLogger(__name__)
class ModelPermission(object):
_functions = {}
_inheritances = {}
_manager_names = {}
_registry = {}
@classmethod
def deregister(cls, model):
cls._registry.pop(model, None)
# TODO: Find method to revert the add_to_class('acls'...)
# delattr doesn't work.
def register(cls, model, permissions):
from django.contrib.contenttypes.fields import GenericRelation
cls._registry.setdefault(model, [])
for permission in permissions:
cls._registry[model].append(permission)
AccessControlList = apps.get_model(
app_label='acls', model_name='AccessControlList'
)
model.add_to_class(
name='acls', value=GenericRelation(AccessControlList)
)
@classmethod
def get_classes(cls, as_content_type=False):
@@ -29,7 +36,7 @@ class ModelPermission(object):
if as_content_type:
content_type_dictionary = ContentType.objects.get_for_models(
*cls._registry.keys()
models=cls._registry.keys()
)
content_type_ids = [
content_type.pk for content_type in content_type_dictionary.values()
@@ -40,20 +47,7 @@ class ModelPermission(object):
return cls._registry.keys()
@classmethod
def get_for_class(cls, klass, as_choices=False):
if as_choices:
results = []
for namespace, permissions in itertools.groupby(cls.get_for_class(klass=klass, as_choices=False), lambda entry: entry.namespace):
permission_options = [
(force_text(permission.pk), permission) for permission in permissions
]
results.append(
(namespace, permission_options)
)
return results
else:
def get_for_class(cls, klass):
return cls._registry.get(klass, ())
@classmethod
@@ -82,40 +76,6 @@ class ModelPermission(object):
def get_inheritance(cls, model):
return cls._inheritances[model]
@classmethod
def get_manager(cls, model):
try:
manager_name = cls.get_manager_name(model=model)
except KeyError:
manager_name = None
if manager_name:
manager = getattr(model, manager_name)
else:
manager = model._meta.default_manager
return manager
@classmethod
def get_manager_name(cls, model):
return cls._manager_names[model]
@classmethod
def register(cls, model, permissions):
from django.contrib.contenttypes.fields import GenericRelation
cls._registry.setdefault(model, [])
for permission in permissions:
cls._registry[model].append(permission)
AccessControlList = apps.get_model(
app_label='acls', model_name='AccessControlList'
)
model.add_to_class(
name='acls', value=GenericRelation(AccessControlList)
)
@classmethod
def register_function(cls, model, function):
cls._functions[model] = function
@@ -123,7 +83,3 @@ class ModelPermission(object):
@classmethod
def register_inheritance(cls, model, related):
cls._inheritances[model] = related
@classmethod
def register_manager(cls, model, manager_name):
cls._manager_names[model] = manager_name

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"PO-Revision-Date: 2019-06-15 07:48+0000\n"
"POT-Creation-Date: 2019-05-21 00:57-0400\n"
"PO-Revision-Date: 2019-05-05 01:43+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n"
"MIME-Version: 1.0\n"
@@ -45,16 +45,16 @@ msgstr ""
msgid "Delete"
msgstr "حذف"
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
#: links.py:49 models.py:45 workflow_actions.py:48
msgid "Permissions"
msgstr "الصلاحيات"
#: managers.py:216
#: managers.py:209
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr ""
#: managers.py:236
#: managers.py:229
#, python-format
msgid "Insufficient access for: %s"
msgstr ""
@@ -156,48 +156,40 @@ msgid ""
"menu."
msgstr ""
#: workflow_actions.py:26
#: workflow_actions.py:25
msgid "Object type"
msgstr ""
#: workflow_actions.py:29
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr ""
#: workflow_actions.py:35
#: workflow_actions.py:34
msgid "Object ID"
msgstr ""
#: workflow_actions.py:38
#: workflow_actions.py:37
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr ""
#: workflow_actions.py:43 workflow_actions.py:158
#: workflow_actions.py:42
msgid "Roles"
msgstr "Roles"
#: workflow_actions.py:45 workflow_actions.py:160
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr ""
#: workflow_actions.py:52 workflow_actions.py:167
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr ""
#: workflow_actions.py:60
#: workflow_actions.py:59
msgid "Grant access"
msgstr ""
#: workflow_actions.py:143
#: workflow_actions.py:135
msgid "Revoke access"
msgstr ""
#: workflow_actions.py:175
msgid "Grant document access"
msgstr ""
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr ""

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"PO-Revision-Date: 2019-06-15 07:48+0000\n"
"POT-Creation-Date: 2019-05-21 00:57-0400\n"
"PO-Revision-Date: 2019-05-05 01:43+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n"
"MIME-Version: 1.0\n"
@@ -45,16 +45,16 @@ msgstr ""
msgid "Delete"
msgstr ""
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
#: links.py:49 models.py:45 workflow_actions.py:48
msgid "Permissions"
msgstr "Разрешения"
#: managers.py:216
#: managers.py:209
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr ""
#: managers.py:236
#: managers.py:229
#, python-format
msgid "Insufficient access for: %s"
msgstr ""
@@ -156,48 +156,40 @@ msgid ""
"menu."
msgstr ""
#: workflow_actions.py:26
#: workflow_actions.py:25
msgid "Object type"
msgstr ""
#: workflow_actions.py:29
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr ""
#: workflow_actions.py:35
#: workflow_actions.py:34
msgid "Object ID"
msgstr ""
#: workflow_actions.py:38
#: workflow_actions.py:37
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr ""
#: workflow_actions.py:43 workflow_actions.py:158
#: workflow_actions.py:42
msgid "Roles"
msgstr "Роли"
#: workflow_actions.py:45 workflow_actions.py:160
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr ""
#: workflow_actions.py:52 workflow_actions.py:167
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr ""
#: workflow_actions.py:60
#: workflow_actions.py:59
msgid "Grant access"
msgstr ""
#: workflow_actions.py:143
#: workflow_actions.py:135
msgid "Revoke access"
msgstr ""
#: workflow_actions.py:175
msgid "Grant document access"
msgstr ""
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr ""

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"PO-Revision-Date: 2019-06-15 07:48+0000\n"
"POT-Creation-Date: 2019-05-21 00:57-0400\n"
"PO-Revision-Date: 2019-05-05 01:43+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n"
"MIME-Version: 1.0\n"
@@ -46,16 +46,16 @@ msgstr "Novi ACL"
msgid "Delete"
msgstr "Obriši"
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
#: links.py:49 models.py:45 workflow_actions.py:48
msgid "Permissions"
msgstr "Dozvole"
#: managers.py:216
#: managers.py:209
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr ""
#: managers.py:236
#: managers.py:229
#, python-format
msgid "Insufficient access for: %s"
msgstr "Nedovoljan pristup za:%s"
@@ -157,48 +157,40 @@ msgid ""
"menu."
msgstr ""
#: workflow_actions.py:26
#: workflow_actions.py:25
msgid "Object type"
msgstr "Tip objekta"
#: workflow_actions.py:29
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr "Tip objekta za koji će se pristup mijenjati."
#: workflow_actions.py:35
#: workflow_actions.py:34
msgid "Object ID"
msgstr "ID objekta"
#: workflow_actions.py:38
#: workflow_actions.py:37
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr "Numerički identifikator objekta za koji će se pristup mijenjati."
#: workflow_actions.py:43 workflow_actions.py:158
#: workflow_actions.py:42
msgid "Roles"
msgstr "Role"
#: workflow_actions.py:45 workflow_actions.py:160
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr "Uloge čiji će pristup biti modifikovan."
#: workflow_actions.py:52 workflow_actions.py:167
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr "Dozvole za dodeljivanje / poništavanje / od uloge za gore izabrani objekat."
#: workflow_actions.py:60
#: workflow_actions.py:59
msgid "Grant access"
msgstr "Dodjeljen pristup"
#: workflow_actions.py:143
#: workflow_actions.py:135
msgid "Revoke access"
msgstr "Opozvati pristup"
#: workflow_actions.py:175
msgid "Grant document access"
msgstr ""
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr ""

View File

@@ -8,9 +8,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"PO-Revision-Date: 2019-06-15 07:48+0000\n"
"Last-Translator: Roberto Rosario\n"
"POT-Creation-Date: 2019-05-21 00:57-0400\n"
"PO-Revision-Date: 2019-05-17 14:41+0000\n"
"Last-Translator: Jiri Fait <fait@orkasolutions.cz>\n"
"Language-Team: Czech (http://www.transifex.com/rosarior/mayan-edms/language/cs/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -46,16 +46,16 @@ msgstr ""
msgid "Delete"
msgstr "Odstranit"
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
#: links.py:49 models.py:45 workflow_actions.py:48
msgid "Permissions"
msgstr "Práva"
#: managers.py:216
#: managers.py:209
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr ""
#: managers.py:236
#: managers.py:229
#, python-format
msgid "Insufficient access for: %s"
msgstr ""
@@ -157,48 +157,40 @@ msgid ""
"menu."
msgstr ""
#: workflow_actions.py:26
#: workflow_actions.py:25
msgid "Object type"
msgstr ""
#: workflow_actions.py:29
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr ""
#: workflow_actions.py:35
#: workflow_actions.py:34
msgid "Object ID"
msgstr ""
#: workflow_actions.py:38
#: workflow_actions.py:37
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr ""
#: workflow_actions.py:43 workflow_actions.py:158
#: workflow_actions.py:42
msgid "Roles"
msgstr ""
#: workflow_actions.py:45 workflow_actions.py:160
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr ""
#: workflow_actions.py:52 workflow_actions.py:167
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr ""
#: workflow_actions.py:60
#: workflow_actions.py:59
msgid "Grant access"
msgstr ""
#: workflow_actions.py:143
#: workflow_actions.py:135
msgid "Revoke access"
msgstr ""
#: workflow_actions.py:175
msgid "Grant document access"
msgstr ""
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr ""

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"PO-Revision-Date: 2019-06-15 07:48+0000\n"
"POT-Creation-Date: 2019-05-21 00:57-0400\n"
"PO-Revision-Date: 2019-05-05 01:43+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Danish (Denmark) (http://www.transifex.com/rosarior/mayan-edms/language/da_DK/)\n"
"MIME-Version: 1.0\n"
@@ -46,16 +46,16 @@ msgstr "Ny ACL"
msgid "Delete"
msgstr "Slet"
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
#: links.py:49 models.py:45 workflow_actions.py:48
msgid "Permissions"
msgstr "Tilladelser"
#: managers.py:216
#: managers.py:209
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr ""
#: managers.py:236
#: managers.py:229
#, python-format
msgid "Insufficient access for: %s"
msgstr "Utilstækkelig adgang for: %s"
@@ -157,48 +157,40 @@ msgid ""
"menu."
msgstr ""
#: workflow_actions.py:26
#: workflow_actions.py:25
msgid "Object type"
msgstr "Objekttype"
#: workflow_actions.py:29
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr ""
#: workflow_actions.py:35
#: workflow_actions.py:34
msgid "Object ID"
msgstr "Objekt ID"
#: workflow_actions.py:38
#: workflow_actions.py:37
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr ""
#: workflow_actions.py:43 workflow_actions.py:158
#: workflow_actions.py:42
msgid "Roles"
msgstr "Roller"
#: workflow_actions.py:45 workflow_actions.py:160
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr ""
#: workflow_actions.py:52 workflow_actions.py:167
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr ""
#: workflow_actions.py:60
#: workflow_actions.py:59
msgid "Grant access"
msgstr "Giv tilladelse"
#: workflow_actions.py:143
#: workflow_actions.py:135
msgid "Revoke access"
msgstr "Tilbagekald tilladelse"
#: workflow_actions.py:175
msgid "Grant document access"
msgstr ""
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr ""

View File

@@ -11,9 +11,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"PO-Revision-Date: 2019-06-15 07:48+0000\n"
"Last-Translator: Roberto Rosario\n"
"POT-Creation-Date: 2019-05-21 00:57-0400\n"
"PO-Revision-Date: 2019-05-06 22:04+0000\n"
"Last-Translator: Mathias Behrle <mathiasb@m9s.biz>\n"
"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -49,16 +49,16 @@ msgstr "Neue Berechtigung"
msgid "Delete"
msgstr "Löschen"
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
#: links.py:49 models.py:45 workflow_actions.py:48
msgid "Permissions"
msgstr "Berechtigungen"
#: managers.py:216
#: managers.py:209
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr "Objekt \"%s\" ist kein Modell und kann nicht auf Zugriffsberechtigungen überprüft werden."
#: managers.py:236
#: managers.py:229
#, python-format
msgid "Insufficient access for: %s"
msgstr "Unzureichende Berechtigung für: %s"
@@ -160,48 +160,40 @@ msgid ""
"menu."
msgstr "Unzureichende Berechtigungen werden durch ein übergeordnetes Objekt vererbt oder direkt an die Rolle erteilt. Sie können nicht direkt auf diesem Formular bearbeitet werden. Vererbte Berechtigungen müssen auf dem übergeordneten Objekt oder für die Rolle über das Einrichtungsmenü eingestellt werden."
#: workflow_actions.py:26
#: workflow_actions.py:25
msgid "Object type"
msgstr "Objekttyp"
#: workflow_actions.py:29
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr "Objekttyp für den der Zugang bearbeitet wird."
#: workflow_actions.py:35
#: workflow_actions.py:34
msgid "Object ID"
msgstr "Objekt ID"
#: workflow_actions.py:38
#: workflow_actions.py:37
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr "Numerischer Identifikator des Objekts"
#: workflow_actions.py:43 workflow_actions.py:158
#: workflow_actions.py:42
msgid "Roles"
msgstr "Rollen"
#: workflow_actions.py:45 workflow_actions.py:160
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr "Rollen deren Zugang bearbeitet wird."
#: workflow_actions.py:52 workflow_actions.py:167
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr "Berechtigungen, die der Rolle für das ausgewählte Objekt erteilt oder entzogen werden."
#: workflow_actions.py:60
#: workflow_actions.py:59
msgid "Grant access"
msgstr "Zugriffsberechtigung erteilen"
#: workflow_actions.py:143
#: workflow_actions.py:135
msgid "Revoke access"
msgstr "Zugriffsberechtigung entziehen"
#: workflow_actions.py:175
msgid "Grant document access"
msgstr ""
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr ""

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"PO-Revision-Date: 2019-06-15 07:48+0000\n"
"POT-Creation-Date: 2019-05-21 00:57-0400\n"
"PO-Revision-Date: 2019-05-05 01:43+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Greek (http://www.transifex.com/rosarior/mayan-edms/language/el/)\n"
"MIME-Version: 1.0\n"
@@ -45,16 +45,16 @@ msgstr "Νέα ΛΕΠ"
msgid "Delete"
msgstr "Διαγραφή"
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
#: links.py:49 models.py:45 workflow_actions.py:48
msgid "Permissions"
msgstr "Ανεπαρκή δικαιώματα"
#: managers.py:216
#: managers.py:209
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr ""
#: managers.py:236
#: managers.py:229
#, python-format
msgid "Insufficient access for: %s"
msgstr "Μη επαρκή δικαιώματα πρόσβασης για το: %s"
@@ -156,48 +156,40 @@ msgid ""
"menu."
msgstr ""
#: workflow_actions.py:26
#: workflow_actions.py:25
msgid "Object type"
msgstr "Τύπος αντικειμένου"
#: workflow_actions.py:29
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr "Τύπος του αντικειμένου για το οποίο η πρόσβαση θα τροποποιηθεί."
#: workflow_actions.py:35
#: workflow_actions.py:34
msgid "Object ID"
msgstr "Αναγνωριστικό αντικειμένου"
#: workflow_actions.py:38
#: workflow_actions.py:37
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr "Αριθμητικό αναγνωριστικό του αντικειμένου για το οποίο η πρόσβαση θα τροποποιηθεί."
#: workflow_actions.py:43 workflow_actions.py:158
#: workflow_actions.py:42
msgid "Roles"
msgstr "Ρόλοι"
#: workflow_actions.py:45 workflow_actions.py:160
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr "Ρόλοι των οποιων η πρόσβαση θα τροποποιηθει."
#: workflow_actions.py:52 workflow_actions.py:167
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr "Δικαιώματα προς χορήγηση/ανάληση προς/από τον ρόλο για το ανωτέρω επιλεγμένο αντικείμενο."
#: workflow_actions.py:60
#: workflow_actions.py:59
msgid "Grant access"
msgstr "Χορήγηση πρόσβασης"
#: workflow_actions.py:143
#: workflow_actions.py:135
msgid "Revoke access"
msgstr "Ανάκληση πρόσβασης"
#: workflow_actions.py:175
msgid "Grant document access"
msgstr ""
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr ""

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"POT-Creation-Date: 2019-05-21 00:57-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -45,16 +45,16 @@ msgstr ""
msgid "Delete"
msgstr ""
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
#: links.py:49 models.py:45 workflow_actions.py:48
msgid "Permissions"
msgstr ""
#: managers.py:216
#: managers.py:209
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr ""
#: managers.py:236
#: managers.py:229
#, python-format
msgid "Insufficient access for: %s"
msgstr ""
@@ -156,47 +156,39 @@ msgid ""
"menu."
msgstr ""
#: workflow_actions.py:26
#: workflow_actions.py:25
msgid "Object type"
msgstr ""
#: workflow_actions.py:29
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr ""
#: workflow_actions.py:35
#: workflow_actions.py:34
msgid "Object ID"
msgstr ""
#: workflow_actions.py:38
#: workflow_actions.py:37
msgid "Numeric identifier of the object for which the access will be modified."
msgstr ""
#: workflow_actions.py:43 workflow_actions.py:158
#: workflow_actions.py:42
msgid "Roles"
msgstr ""
#: workflow_actions.py:45 workflow_actions.py:160
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr ""
#: workflow_actions.py:52 workflow_actions.py:167
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr ""
#: workflow_actions.py:60
#: workflow_actions.py:59
msgid "Grant access"
msgstr ""
#: workflow_actions.py:143
#: workflow_actions.py:135
msgid "Revoke access"
msgstr ""
#: workflow_actions.py:175
msgid "Grant document access"
msgstr ""
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr ""

View File

@@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"PO-Revision-Date: 2019-06-15 07:51+0000\n"
"POT-Creation-Date: 2019-05-21 00:57-0400\n"
"PO-Revision-Date: 2019-05-05 01:52+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n"
"MIME-Version: 1.0\n"
@@ -48,16 +48,16 @@ msgstr "Nueva LCA"
msgid "Delete"
msgstr "Borrar"
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
#: links.py:49 models.py:45 workflow_actions.py:48
msgid "Permissions"
msgstr "Permisos"
#: managers.py:216
#: managers.py:209
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr "El objeto \"%s\"; no es un modelo y no se puede verificar el acceso."
#: managers.py:236
#: managers.py:229
#, python-format
msgid "Insufficient access for: %s"
msgstr "Acceso insuficiente para: %s"
@@ -159,48 +159,40 @@ msgid ""
"menu."
msgstr "Los permisos deshabilitados se heredan de un objeto principal o se otorgan directamente al rol y no se pueden eliminar de esta vista. Los permisos heredados deben eliminarse de la LCA del objeto principal o de su rol a través del menú de Configuración."
#: workflow_actions.py:26
#: workflow_actions.py:25
msgid "Object type"
msgstr "Tipo de objeto"
#: workflow_actions.py:29
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr "Tipo de objeto para el que se modificará el acceso."
#: workflow_actions.py:35
#: workflow_actions.py:34
msgid "Object ID"
msgstr "ID de objeto"
#: workflow_actions.py:38
#: workflow_actions.py:37
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr "Identificador numérico del objeto para el que se modificará el acceso."
#: workflow_actions.py:43 workflow_actions.py:158
#: workflow_actions.py:42
msgid "Roles"
msgstr "Roles"
#: workflow_actions.py:45 workflow_actions.py:160
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr "Roles cuyo acceso será modificado."
#: workflow_actions.py:52 workflow_actions.py:167
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr "Permisos para otorgar/revocar a los roles para el objeto seleccionado anteriormente."
#: workflow_actions.py:60
#: workflow_actions.py:59
msgid "Grant access"
msgstr "Otorgar acceso"
#: workflow_actions.py:143
#: workflow_actions.py:135
msgid "Revoke access"
msgstr "Revocar acceso"
#: workflow_actions.py:175
msgid "Grant document access"
msgstr "Otorgar acceso a documento"
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr "Revocar acceso documento"

View File

@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"PO-Revision-Date: 2019-06-15 07:48+0000\n"
"POT-Creation-Date: 2019-05-21 00:57-0400\n"
"PO-Revision-Date: 2019-05-05 01:43+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n"
"MIME-Version: 1.0\n"
@@ -47,16 +47,16 @@ msgstr "دسترسی جدید"
msgid "Delete"
msgstr "حذف"
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
#: links.py:49 models.py:45 workflow_actions.py:48
msgid "Permissions"
msgstr "مجوزها"
#: managers.py:216
#: managers.py:209
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr ""
#: managers.py:236
#: managers.py:229
#, python-format
msgid "Insufficient access for: %s"
msgstr "کمبود دسترسی برای: %s"
@@ -158,48 +158,40 @@ msgid ""
"menu."
msgstr ""
#: workflow_actions.py:26
#: workflow_actions.py:25
msgid "Object type"
msgstr "نوع شی"
#: workflow_actions.py:29
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr "نوع شی که دسترسی به آن تغییر خواهد کرد."
#: workflow_actions.py:35
#: workflow_actions.py:34
msgid "Object ID"
msgstr "شناسه اشیاء"
#: workflow_actions.py:38
#: workflow_actions.py:37
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr "شناسه عددی شئی که دسترسی به آن تغییر خواهد کرد."
#: workflow_actions.py:43 workflow_actions.py:158
#: workflow_actions.py:42
msgid "Roles"
msgstr "نقش ها"
#: workflow_actions.py:45 workflow_actions.py:160
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr "نقش هایی که دسترسی به آنها تغییر خواهد کرد."
#: workflow_actions.py:52 workflow_actions.py:167
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr "مجوز برای اعطای / لغو به / از نقش مورد انتخاب شده در بالا."
#: workflow_actions.py:60
#: workflow_actions.py:59
msgid "Grant access"
msgstr "دادن دسترسی"
#: workflow_actions.py:143
#: workflow_actions.py:135
msgid "Revoke access"
msgstr "لغو دسترسی"
#: workflow_actions.py:175
msgid "Grant document access"
msgstr ""
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr ""

View File

@@ -11,9 +11,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"PO-Revision-Date: 2019-06-15 07:48+0000\n"
"Last-Translator: Roberto Rosario\n"
"POT-Creation-Date: 2019-05-21 00:57-0400\n"
"PO-Revision-Date: 2019-05-05 03:24+0000\n"
"Last-Translator: Frédéric Sheedy <sheedf@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -49,16 +49,16 @@ msgstr "Nouveau droit"
msgid "Delete"
msgstr "Suppression"
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
#: links.py:49 models.py:45 workflow_actions.py:48
msgid "Permissions"
msgstr "Autorisations"
#: managers.py:216
#: managers.py:209
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr ""
#: managers.py:236
#: managers.py:229
#, python-format
msgid "Insufficient access for: %s"
msgstr "Droits d'accès insuffisants pour : %s"
@@ -160,48 +160,40 @@ msgid ""
"menu."
msgstr ""
#: workflow_actions.py:26
#: workflow_actions.py:25
msgid "Object type"
msgstr "Type d'objet"
#: workflow_actions.py:29
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr "Type d'objet pour lequel les droits d'accès vont être modifiés."
#: workflow_actions.py:35
#: workflow_actions.py:34
msgid "Object ID"
msgstr "Identifiant de l'objet"
#: workflow_actions.py:38
#: workflow_actions.py:37
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr "Identifiant numérique de l'objet pour lequel les droits d'accès vont être modifiés."
#: workflow_actions.py:43 workflow_actions.py:158
#: workflow_actions.py:42
msgid "Roles"
msgstr "Rôles"
#: workflow_actions.py:45 workflow_actions.py:160
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr "Rôles pour lesquels les droits d'accès vont être modifiés."
#: workflow_actions.py:52 workflow_actions.py:167
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr "Autorisations à accorder/révoquer au rôle pour l'objet sélectionné ci-dessus."
#: workflow_actions.py:60
#: workflow_actions.py:59
msgid "Grant access"
msgstr "Accorder le droit d'accès"
#: workflow_actions.py:143
#: workflow_actions.py:135
msgid "Revoke access"
msgstr "Révoquer le droit d'accès"
#: workflow_actions.py:175
msgid "Grant document access"
msgstr ""
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr ""

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"PO-Revision-Date: 2019-06-15 07:48+0000\n"
"POT-Creation-Date: 2019-05-21 00:57-0400\n"
"PO-Revision-Date: 2019-05-05 01:43+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n"
"MIME-Version: 1.0\n"
@@ -45,16 +45,16 @@ msgstr ""
msgid "Delete"
msgstr "Törlés"
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
#: links.py:49 models.py:45 workflow_actions.py:48
msgid "Permissions"
msgstr "Engedélyek"
#: managers.py:216
#: managers.py:209
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr ""
#: managers.py:236
#: managers.py:229
#, python-format
msgid "Insufficient access for: %s"
msgstr ""
@@ -156,48 +156,40 @@ msgid ""
"menu."
msgstr ""
#: workflow_actions.py:26
#: workflow_actions.py:25
msgid "Object type"
msgstr ""
#: workflow_actions.py:29
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr ""
#: workflow_actions.py:35
#: workflow_actions.py:34
msgid "Object ID"
msgstr ""
#: workflow_actions.py:38
#: workflow_actions.py:37
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr ""
#: workflow_actions.py:43 workflow_actions.py:158
#: workflow_actions.py:42
msgid "Roles"
msgstr "Szerepkörök"
#: workflow_actions.py:45 workflow_actions.py:160
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr ""
#: workflow_actions.py:52 workflow_actions.py:167
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr ""
#: workflow_actions.py:60
#: workflow_actions.py:59
msgid "Grant access"
msgstr ""
#: workflow_actions.py:143
#: workflow_actions.py:135
msgid "Revoke access"
msgstr ""
#: workflow_actions.py:175
msgid "Grant document access"
msgstr ""
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr ""

View File

@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"PO-Revision-Date: 2019-06-15 07:48+0000\n"
"Last-Translator: Roberto Rosario\n"
"POT-Creation-Date: 2019-05-21 00:57-0400\n"
"PO-Revision-Date: 2019-05-12 17:32+0000\n"
"Last-Translator: Adek Lanin\n"
"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -45,16 +45,16 @@ msgstr ""
msgid "Delete"
msgstr "Hapus"
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
#: links.py:49 models.py:45 workflow_actions.py:48
msgid "Permissions"
msgstr ""
#: managers.py:216
#: managers.py:209
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr ""
#: managers.py:236
#: managers.py:229
#, python-format
msgid "Insufficient access for: %s"
msgstr ""
@@ -156,48 +156,40 @@ msgid ""
"menu."
msgstr ""
#: workflow_actions.py:26
#: workflow_actions.py:25
msgid "Object type"
msgstr ""
#: workflow_actions.py:29
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr ""
#: workflow_actions.py:35
#: workflow_actions.py:34
msgid "Object ID"
msgstr ""
#: workflow_actions.py:38
#: workflow_actions.py:37
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr ""
#: workflow_actions.py:43 workflow_actions.py:158
#: workflow_actions.py:42
msgid "Roles"
msgstr ""
#: workflow_actions.py:45 workflow_actions.py:160
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr ""
#: workflow_actions.py:52 workflow_actions.py:167
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr ""
#: workflow_actions.py:60
#: workflow_actions.py:59
msgid "Grant access"
msgstr ""
#: workflow_actions.py:143
#: workflow_actions.py:135
msgid "Revoke access"
msgstr ""
#: workflow_actions.py:175
msgid "Grant document access"
msgstr ""
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr ""

View File

@@ -3,15 +3,14 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Daniele Bortoluzzi <daniele@elkos.it>, 2019
# Marco Camplese <marco.camplese.mc@gmail.com>, 2016-2017
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"PO-Revision-Date: 2019-08-28 11:33+0000\n"
"Last-Translator: Daniele Bortoluzzi <daniele@elkos.it>\n"
"POT-Creation-Date: 2019-05-21 00:57-0400\n"
"PO-Revision-Date: 2019-05-05 01:43+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -29,11 +28,11 @@ msgstr "Liste di controllo accessi"
#: events.py:12
msgid "ACL created"
msgstr "ACL creata"
msgstr ""
#: events.py:15
msgid "ACL edited"
msgstr "ACL modificata"
msgstr ""
#: forms.py:15 models.py:49
msgid "Role"
@@ -47,19 +46,19 @@ msgstr "Nuova ACL"
msgid "Delete"
msgstr "Cancella"
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
#: links.py:49 models.py:45 workflow_actions.py:48
msgid "Permissions"
msgstr "Permessi"
#: managers.py:216
#: managers.py:209
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr "L'oggetto \"%s\" non è un modello e su di esso non si può eseguire un controllo accessi."
msgstr ""
#: managers.py:236
#: managers.py:229
#, python-format
msgid "Insufficient access for: %s"
msgstr "Permessi insufficienti per: %s"
msgstr ""
#: models.py:57
msgid "Access entry"
@@ -124,13 +123,13 @@ msgstr "Cancella ACL: %s"
#: views.py:147
msgid "There are no ACLs for this object"
msgstr "Non ci sono ACL per questo oggetto"
msgstr ""
#: views.py:150
msgid ""
"ACL stands for Access Control List and is a precise method to control user "
"access to objects in the system."
msgstr "ACL sta per Access Control List (lista di controllo degli accessi) ed è un metodo preciso per controllare l'accesso dell'utente agli oggetti nel sistema."
msgstr ""
#: views.py:154
#, python-format
@@ -148,7 +147,7 @@ msgstr "Autorizzazioni disponibili "
#: views.py:215
#, python-format
msgid "Role \"%(role)s\" permission's for \"%(object)s\"."
msgstr "Permessi del ruolo \"%(role)s\" per \"%(object)s\"."
msgstr ""
#: views.py:224
msgid ""
@@ -156,50 +155,42 @@ msgid ""
"to the role and can't be removed from this view. Inherited permissions need "
"to be removed from the parent object's ACL or from them role via the Setup "
"menu."
msgstr "I permessi disabilitati sono ereditati da un oggetto padre o direttamente concessi al ruolo e non possono essere rimossi da questa schermata. I permessi ereditati vanno rimossi dalle ACL dell'oggetto padre o del ruolo tramite il menù Setup."
msgstr ""
#: workflow_actions.py:26
#: workflow_actions.py:25
msgid "Object type"
msgstr "Tipo dell'oggetto"
msgstr ""
#: workflow_actions.py:29
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr "Tipo dell'oggetto per il quale l'accesso sarà modificato"
msgstr ""
#: workflow_actions.py:35
#: workflow_actions.py:34
msgid "Object ID"
msgstr "ID dell'oggetto"
msgstr ""
#: workflow_actions.py:38
#: workflow_actions.py:37
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr "Identificativo numerico dell'oggetto per il quale l'accesso sarà modificato"
msgstr ""
#: workflow_actions.py:43 workflow_actions.py:158
#: workflow_actions.py:42
msgid "Roles"
msgstr "Ruoli "
#: workflow_actions.py:45 workflow_actions.py:160
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr "Ruoli il cui accesso sarà modificato"
msgstr ""
#: workflow_actions.py:52 workflow_actions.py:167
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr "Permessi da concedere/revocare al ruolo per l'oggetto selezionato"
msgstr ""
#: workflow_actions.py:60
#: workflow_actions.py:59
msgid "Grant access"
msgstr "Concedi accesso"
msgstr ""
#: workflow_actions.py:143
#: workflow_actions.py:135
msgid "Revoke access"
msgstr "Revoca accesso"
#: workflow_actions.py:175
msgid "Grant document access"
msgstr "Concedi accesso al documento"
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr "Revoca accesso al documento"
msgstr ""

View File

@@ -1,204 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Māris Teivāns <maris.teivans@gmail.com>, 2019
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"PO-Revision-Date: 2019-06-28 11:16+0000\n"
"Last-Translator: Māris Teivāns <maris.teivans@gmail.com>\n"
"Language-Team: Latvian (http://www.transifex.com/rosarior/mayan-edms/language/lv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: lv\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
#: apps.py:24 links.py:44
msgid "ACLs"
msgstr "PKS"
#: events.py:8 permissions.py:7
msgid "Access control lists"
msgstr "Piekļuves kontroles saraksti"
#: events.py:12
msgid "ACL created"
msgstr "PKS izveidots"
#: events.py:15
msgid "ACL edited"
msgstr "PKS rediģēts"
#: forms.py:15 models.py:49
msgid "Role"
msgstr "Loma"
#: links.py:34
msgid "New ACL"
msgstr "Jauns PKS"
#: links.py:39
msgid "Delete"
msgstr "Dzēst"
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
msgid "Permissions"
msgstr "Atļaujas"
#: managers.py:216
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr "Objekts \"%s\" nav modelis un tā pieeju nevar pārbaudīt."
#: managers.py:236
#, python-format
msgid "Insufficient access for: %s"
msgstr "Nepietiekama piekļuve pie: %s"
#: models.py:57
msgid "Access entry"
msgstr "Piekļuves ieraksts"
#: models.py:58
msgid "Access entries"
msgstr "Piekļuves ieraksti"
#: models.py:62
#, python-format
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
msgstr "Lomas \"%(role)s\" atļaujas priekš \"%(object)s\""
#: permissions.py:10
msgid "Edit ACLs"
msgstr "Rediģēt PKS"
#: permissions.py:13
msgid "View ACLs"
msgstr "Skatīt PKS"
#: serializers.py:26 serializers.py:136
msgid ""
"API URL pointing to the list of permissions for this access control list."
msgstr "API URL, kas norāda uz piekļuves kontroles saraksta atļauju sarakstu."
#: serializers.py:59
msgid ""
"API URL pointing to a permission in relation to the access control list to "
"which it is attached. This URL is different than the canonical workflow URL."
msgstr "API URL, kas norāda uz atļauju saistībā ar piekļuves kontroles sarakstu, kuram tas ir pievienots. Šis URL atšķiras no kanoniskā darbplūsmas URL."
#: serializers.py:91
msgid "Primary key of the new permission to grant to the access control list."
msgstr "Primārā atslēga priekš jaunās atļaujas, ko piešķirt piekļuves kontroles sarakstam."
#: serializers.py:115 serializers.py:191
#, python-format
msgid "No such permission: %s"
msgstr "Šādas atļaujas nav: %s"
#: serializers.py:130
msgid ""
"Comma separated list of permission primary keys to grant to this access "
"control list."
msgstr "Ar komatu atdalīts saraksts ar atļauju primārajām atslēgām, kuras piešķirt šim piekļuves kontroles sarakstam."
#: serializers.py:142
msgid "Primary keys of the role to which this access control list binds to."
msgstr "Primārās atslēgas lomai, pie kuras šis piekļuves kontroles saraksts ir piesaistīts."
#: views.py:62
#, python-format
msgid "New access control lists for: %s"
msgstr "Jauni piekļuves kontroles saraksti priekš: %s"
#: views.py:100
#, python-format
msgid "Delete ACL: %s"
msgstr "Dzēst PKS: %s"
#: views.py:147
msgid "There are no ACLs for this object"
msgstr "Šim objektam nav neviens PKS"
#: views.py:150
msgid ""
"ACL stands for Access Control List and is a precise method to control user "
"access to objects in the system."
msgstr "PKS apzīmē Piekļuves Kontroles Sarakstu un tā ir precīza metode, lai kontrolētu lietotāja piekļuvi sistēmā esošajiem objektiem."
#: views.py:154
#, python-format
msgid "Access control lists for: %s"
msgstr "Piekļuves kontroles saraksti priekš: %s"
#: views.py:170
msgid "Granted permissions"
msgstr "Piešķirtās atļaujas"
#: views.py:171
msgid "Available permissions"
msgstr "Pieejamās atļaujas"
#: views.py:215
#, python-format
msgid "Role \"%(role)s\" permission's for \"%(object)s\"."
msgstr "Lomas \"%(role)s\" atļaujas priekš \"%(object)s\"."
#: views.py:224
msgid ""
"Disabled permissions are inherited from a parent object or directly granted "
"to the role and can't be removed from this view. Inherited permissions need "
"to be removed from the parent object's ACL or from them role via the Setup "
"menu."
msgstr "Atspējotas atļaujas tiek mantotas no mātes objekta vai tieši piešķirtas lomai, un tās nevar noņemt no šī skata. Mantotās atļaujas ir jānoņem no mātes objekta PKS vai no lomas, izmantojot Setup izvēlni."
#: workflow_actions.py:26
msgid "Object type"
msgstr "Objekta tips"
#: workflow_actions.py:29
msgid "Type of the object for which the access will be modified."
msgstr "Objekta, kuram tiks rediģēta piekļuve, tips."
#: workflow_actions.py:35
msgid "Object ID"
msgstr "Objekta ID"
#: workflow_actions.py:38
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr "Objekta, kuram tiks rediģēta piekļuve, skaitliskais identifikators."
#: workflow_actions.py:43 workflow_actions.py:158
msgid "Roles"
msgstr "Lomas"
#: workflow_actions.py:45 workflow_actions.py:160
msgid "Roles whose access will be modified."
msgstr "Lomas, kuru piekļuve tiks mainīta."
#: workflow_actions.py:52 workflow_actions.py:167
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr "Atļaujas piešķirt/atsaukt iepriekš atlasītā objekta lomu."
#: workflow_actions.py:60
msgid "Grant access"
msgstr "Piešķirt piekļuvi"
#: workflow_actions.py:143
msgid "Revoke access"
msgstr "Atsaukt piekļuvi"
#: workflow_actions.py:175
msgid "Grant document access"
msgstr "Piešķirt piekļuvi dokumentam"
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr "Atsaukt piekļuvi dokumentam"

View File

@@ -5,13 +5,13 @@
# Translators:
# Evelijn Saaltink <evelijnsaaltink@gmail.com>, 2016
# Justin Albstbstmeijer <justin@albstmeijer.nl>, 2016
# Martin Horseling <martin.horseling@gmail.com>, 2018-2019
# Martin Horseling <martin.horseling@gmail.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"PO-Revision-Date: 2019-06-15 07:48+0000\n"
"POT-Creation-Date: 2019-05-21 00:57-0400\n"
"PO-Revision-Date: 2019-05-05 01:43+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n"
"MIME-Version: 1.0\n"
@@ -30,11 +30,11 @@ msgstr "Authorisatielijsten"
#: events.py:12
msgid "ACL created"
msgstr "Authorisatie Controle Lijst Aangemaakt"
msgstr ""
#: events.py:15
msgid "ACL edited"
msgstr "Authorisatie Controle Lijst gewijzigd"
msgstr ""
#: forms.py:15 models.py:49
msgid "Role"
@@ -48,16 +48,16 @@ msgstr "Nieuwe authorisatielijst"
msgid "Delete"
msgstr "Verwijder"
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
#: links.py:49 models.py:45 workflow_actions.py:48
msgid "Permissions"
msgstr "Permissies"
#: managers.py:216
#: managers.py:209
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr "Voorwerp \"%s\" is geen model en kan niet aangevinkt worden voor toegang"
msgstr ""
#: managers.py:236
#: managers.py:229
#, python-format
msgid "Insufficient access for: %s"
msgstr "Onvoldoende toegang voor: %s"
@@ -125,13 +125,13 @@ msgstr "Verwijder authorisatielijst: %s"
#: views.py:147
msgid "There are no ACLs for this object"
msgstr "Er zijn geen toegangscontrolelijsten voor dit onderwerp"
msgstr ""
#: views.py:150
msgid ""
"ACL stands for Access Control List and is a precise method to control user "
"access to objects in the system."
msgstr "ACL betekent Toegangscontrolelijst en is een precieze methode om gebruikerstoegang te geven of verwijderen voor objecten in het systeem"
msgstr ""
#: views.py:154
#, python-format
@@ -149,7 +149,7 @@ msgstr "Beschikbare permissies"
#: views.py:215
#, python-format
msgid "Role \"%(role)s\" permission's for \"%(object)s\"."
msgstr "Rol \"%(role)s\" toestemmingen voor \"%(object)s\"."
msgstr ""
#: views.py:224
msgid ""
@@ -157,50 +157,42 @@ msgid ""
"to the role and can't be removed from this view. Inherited permissions need "
"to be removed from the parent object's ACL or from them role via the Setup "
"menu."
msgstr "Onbeschikbare of uitgeschakelde rechten zijn geërfd van een hoger niveau of direct geven aan de gebruikersrol en kunnen hier niet verwijderd worden. Geërfde rechten moeten verwijderd worden vanaf het hogere niveau of via de gebruikersrol via het Instellingen menu. "
msgstr ""
#: workflow_actions.py:26
#: workflow_actions.py:25
msgid "Object type"
msgstr "Objecttype"
#: workflow_actions.py:29
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr "Objecttype waarvoor de toegang gewijzigd gaat worden"
#: workflow_actions.py:35
#: workflow_actions.py:34
msgid "Object ID"
msgstr "voorwerp identificatie"
#: workflow_actions.py:38
#: workflow_actions.py:37
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr "Nummer van het voorwerp waarvoor de toegang wordt gewijzigd"
#: workflow_actions.py:43 workflow_actions.py:158
#: workflow_actions.py:42
msgid "Roles"
msgstr "Gebruikersrollen"
#: workflow_actions.py:45 workflow_actions.py:160
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr "Gebruikersrol waarvoor de toegang wordt gewijzigd"
#: workflow_actions.py:52 workflow_actions.py:167
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr "Permissies to geven/verwijderen naar/van de rol voor het geselecteerde object hierboven "
#: workflow_actions.py:60
#: workflow_actions.py:59
msgid "Grant access"
msgstr "Geef toegang"
#: workflow_actions.py:143
#: workflow_actions.py:135
msgid "Revoke access"
msgstr "Verwijder toegang"
#: workflow_actions.py:175
msgid "Grant document access"
msgstr ""
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr ""

View File

@@ -4,17 +4,15 @@
#
# Translators:
# Daniel Winiarski <daniel.winiarski.dw@gmail.com>, 2017
# Marcin Lozynski <mlozynski@wp.pl>, 2019
# Tomasz Szymanowicz <alakdae@gmail.com>, 2019
# Wojciech Warczakowski <w.warczakowski@gmail.com>, 2016
# Wojciech Warczakowski <w.warczakowski@gmail.com>, 2017-2018
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"PO-Revision-Date: 2019-09-23 09:33+0000\n"
"Last-Translator: Tomasz Szymanowicz <alakdae@gmail.com>\n"
"POT-Creation-Date: 2019-05-21 00:57-0400\n"
"PO-Revision-Date: 2019-05-05 01:43+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -28,15 +26,15 @@ msgstr "Listy ACL"
#: events.py:8 permissions.py:7
msgid "Access control lists"
msgstr "Listy kontroli dostępu"
msgstr "Listy ACL"
#: events.py:12
msgid "ACL created"
msgstr "Utworzono listę ACL"
msgstr ""
#: events.py:15
msgid "ACL edited"
msgstr "Wyedytowano listę ACL"
msgstr ""
#: forms.py:15 models.py:49
msgid "Role"
@@ -50,16 +48,16 @@ msgstr "Nowa lista ACL"
msgid "Delete"
msgstr "Usuń"
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
#: links.py:49 models.py:45 workflow_actions.py:48
msgid "Permissions"
msgstr "Uprawnienia"
#: managers.py:216
#: managers.py:209
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr "Obiekt \"%s\" nie jest modelem i nie może być sprawdzony pod kątem dostępu."
msgstr ""
#: managers.py:236
#: managers.py:229
#, python-format
msgid "Insufficient access for: %s"
msgstr "Niewystarczający dostęp dla: %s"
@@ -127,13 +125,13 @@ msgstr "Usuń listę ACL: %s"
#: views.py:147
msgid "There are no ACLs for this object"
msgstr "Brak listy ACL dla tego objektu"
msgstr ""
#: views.py:150
msgid ""
"ACL stands for Access Control List and is a precise method to control user "
"access to objects in the system."
msgstr "Lista ACL stanowi metodę kontroli dostępu użytkownika do obiektów znajdujących się w systemie."
msgstr ""
#: views.py:154
#, python-format
@@ -151,7 +149,7 @@ msgstr "Dostępne uprawnienia"
#: views.py:215
#, python-format
msgid "Role \"%(role)s\" permission's for \"%(object)s\"."
msgstr "Rola \"%(role)s\" uprawnienia dla \"%(object)s\"."
msgstr ""
#: views.py:224
msgid ""
@@ -159,50 +157,42 @@ msgid ""
"to the role and can't be removed from this view. Inherited permissions need "
"to be removed from the parent object's ACL or from them role via the Setup "
"menu."
msgstr "Wyłączone prawa są dziedziczone z obiektu rodzica lub bezpośrednio nadane dla roli i nie mogą być usunięte w tym widoku. Dziedziczone prawa muszą być usunięte z listy ACL obiektu rodzica lub z roli w menu Ustawień."
msgstr ""
#: workflow_actions.py:26
#: workflow_actions.py:25
msgid "Object type"
msgstr "Typ obiektu"
#: workflow_actions.py:29
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr "Typ obiektu, dla którego dostęp zostanie zmodyfikowany."
#: workflow_actions.py:35
#: workflow_actions.py:34
msgid "Object ID"
msgstr "ID obiektu"
#: workflow_actions.py:38
#: workflow_actions.py:37
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr "Numeryczny identyfikator obiektu, dla którego dostęp zostanie zmodyfikowany."
#: workflow_actions.py:43 workflow_actions.py:158
#: workflow_actions.py:42
msgid "Roles"
msgstr "Role"
#: workflow_actions.py:45 workflow_actions.py:160
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr "Role, których dostęp zostanie zmodyfikowany."
#: workflow_actions.py:52 workflow_actions.py:167
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr "Uprawnienia do nadawania/odwoływania do/z roli dla obiektu."
#: workflow_actions.py:60
#: workflow_actions.py:59
msgid "Grant access"
msgstr "Przydziel dostęp"
msgstr "Przyznaj dostęp"
#: workflow_actions.py:143
#: workflow_actions.py:135
msgid "Revoke access"
msgstr "Zabierz dostęp"
#: workflow_actions.py:175
msgid "Grant document access"
msgstr "Przydziel dostęp dla dokumentu"
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr "Zabierz dostęp do dokumentu"
msgstr "Odwołaj dostęp"

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"PO-Revision-Date: 2019-06-15 07:48+0000\n"
"POT-Creation-Date: 2019-05-21 00:57-0400\n"
"PO-Revision-Date: 2019-05-05 01:43+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n"
"MIME-Version: 1.0\n"
@@ -45,16 +45,16 @@ msgstr ""
msgid "Delete"
msgstr "Eliminar"
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
#: links.py:49 models.py:45 workflow_actions.py:48
msgid "Permissions"
msgstr "Permissões"
#: managers.py:216
#: managers.py:209
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr ""
#: managers.py:236
#: managers.py:229
#, python-format
msgid "Insufficient access for: %s"
msgstr ""
@@ -156,48 +156,40 @@ msgid ""
"menu."
msgstr ""
#: workflow_actions.py:26
#: workflow_actions.py:25
msgid "Object type"
msgstr ""
#: workflow_actions.py:29
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr ""
#: workflow_actions.py:35
#: workflow_actions.py:34
msgid "Object ID"
msgstr ""
#: workflow_actions.py:38
#: workflow_actions.py:37
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr ""
#: workflow_actions.py:43 workflow_actions.py:158
#: workflow_actions.py:42
msgid "Roles"
msgstr "Funções"
#: workflow_actions.py:45 workflow_actions.py:160
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr ""
#: workflow_actions.py:52 workflow_actions.py:167
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr ""
#: workflow_actions.py:60
#: workflow_actions.py:59
msgid "Grant access"
msgstr ""
#: workflow_actions.py:143
#: workflow_actions.py:135
msgid "Revoke access"
msgstr ""
#: workflow_actions.py:175
msgid "Grant document access"
msgstr ""
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr ""

View File

@@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"PO-Revision-Date: 2019-06-15 07:48+0000\n"
"POT-Creation-Date: 2019-05-21 00:57-0400\n"
"PO-Revision-Date: 2019-05-05 01:43+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
@@ -48,16 +48,16 @@ msgstr "Nova regra"
msgid "Delete"
msgstr "Excluir"
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
#: links.py:49 models.py:45 workflow_actions.py:48
msgid "Permissions"
msgstr "Permissões"
#: managers.py:216
#: managers.py:209
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr ""
#: managers.py:236
#: managers.py:229
#, python-format
msgid "Insufficient access for: %s"
msgstr "Acesso insuficiente para: %s"
@@ -159,48 +159,40 @@ msgid ""
"menu."
msgstr ""
#: workflow_actions.py:26
#: workflow_actions.py:25
msgid "Object type"
msgstr "Tipo do objeto"
#: workflow_actions.py:29
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr "Tipo do objeto cujo acesso será modificado."
#: workflow_actions.py:35
#: workflow_actions.py:34
msgid "Object ID"
msgstr "ID do objeto"
#: workflow_actions.py:38
#: workflow_actions.py:37
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr "Identificador numérico do objeto cujo acesso será modificado."
#: workflow_actions.py:43 workflow_actions.py:158
#: workflow_actions.py:42
msgid "Roles"
msgstr "Papéis"
#: workflow_actions.py:45 workflow_actions.py:160
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr "Papéis cujo acesso será modificado."
#: workflow_actions.py:52 workflow_actions.py:167
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr "Permissões a serem concedidas/revogadas para o papel em relação ao objeto selecionado acima."
#: workflow_actions.py:60
#: workflow_actions.py:59
msgid "Grant access"
msgstr "Conceder acesso"
#: workflow_actions.py:143
#: workflow_actions.py:135
msgid "Revoke access"
msgstr "Revogar acesso"
#: workflow_actions.py:175
msgid "Grant document access"
msgstr ""
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr ""

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"PO-Revision-Date: 2019-06-18 15:35+0000\n"
"POT-Creation-Date: 2019-05-21 00:57-0400\n"
"PO-Revision-Date: 2019-05-08 07:09+0000\n"
"Last-Translator: Harald Ersch\n"
"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n"
"MIME-Version: 1.0\n"
@@ -46,16 +46,16 @@ msgstr "ACL nou"
msgid "Delete"
msgstr "Șterge"
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
#: links.py:49 models.py:45 workflow_actions.py:48
msgid "Permissions"
msgstr "Permisiuni"
#: managers.py:216
#: managers.py:209
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr "Obiectul \"%s\" nu este un model și nu poate fi verificat pentru acces."
#: managers.py:236
#: managers.py:229
#, python-format
msgid "Insufficient access for: %s"
msgstr "Acces insuficient pentru: %s"
@@ -157,48 +157,40 @@ msgid ""
"menu."
msgstr "Permisiunile dezactivate sunt moștenite de la un obiect părinte sau acordate direct rolului și nu pot fi eliminate din această vizualizare. Prerogativele moștenite trebuie să fie eliminate din ACL-ul obiectului părinte sau din rolul acestora prin meniul Setup (Configurare)."
#: workflow_actions.py:26
#: workflow_actions.py:25
msgid "Object type"
msgstr "Tipul obiectului"
#: workflow_actions.py:29
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr "Tipul obiectului pentru care va fi modificat accesul ."
#: workflow_actions.py:35
#: workflow_actions.py:34
msgid "Object ID"
msgstr "ID obiect"
#: workflow_actions.py:38
#: workflow_actions.py:37
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr "Identificatorul numeric al obiectului pentru care va fi modificat accesul."
#: workflow_actions.py:43 workflow_actions.py:158
#: workflow_actions.py:42
msgid "Roles"
msgstr "Roluri"
#: workflow_actions.py:45 workflow_actions.py:160
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr "Roluri a căror acces va fi modificat."
#: workflow_actions.py:52 workflow_actions.py:167
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr "Permisiuni de acordare / revocare în / a rolului pentru obiectului selectat mai sus."
#: workflow_actions.py:60
#: workflow_actions.py:59
msgid "Grant access"
msgstr "Acordă acces"
#: workflow_actions.py:143
#: workflow_actions.py:135
msgid "Revoke access"
msgstr "Revocă acces"
#: workflow_actions.py:175
msgid "Grant document access"
msgstr "Acordați acces la documente"
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr "Revocați accesul la documente"

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-24 23:06-0400\n"
"PO-Revision-Date: 2019-06-15 07:48+0000\n"
"POT-Creation-Date: 2019-05-21 00:57-0400\n"
"PO-Revision-Date: 2019-05-05 01:43+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n"
"MIME-Version: 1.0\n"
@@ -46,16 +46,16 @@ msgstr "Создать СУД"
msgid "Delete"
msgstr "Удалить"
#: links.py:49 models.py:45 workflow_actions.py:49 workflow_actions.py:164
#: links.py:49 models.py:45 workflow_actions.py:48
msgid "Permissions"
msgstr "Разрешения"
#: managers.py:216
#: managers.py:209
#, python-format
msgid "Object \"%s\" is not a model and cannot be checked for access."
msgstr ""
#: managers.py:236
#: managers.py:229
#, python-format
msgid "Insufficient access for: %s"
msgstr ""
@@ -157,48 +157,40 @@ msgid ""
"menu."
msgstr ""
#: workflow_actions.py:26
#: workflow_actions.py:25
msgid "Object type"
msgstr ""
#: workflow_actions.py:29
#: workflow_actions.py:28
msgid "Type of the object for which the access will be modified."
msgstr ""
#: workflow_actions.py:35
#: workflow_actions.py:34
msgid "Object ID"
msgstr ""
#: workflow_actions.py:38
#: workflow_actions.py:37
msgid ""
"Numeric identifier of the object for which the access will be modified."
msgstr ""
#: workflow_actions.py:43 workflow_actions.py:158
#: workflow_actions.py:42
msgid "Roles"
msgstr "Роли"
#: workflow_actions.py:45 workflow_actions.py:160
#: workflow_actions.py:44
msgid "Roles whose access will be modified."
msgstr ""
#: workflow_actions.py:52 workflow_actions.py:167
#: workflow_actions.py:51
msgid ""
"Permissions to grant/revoke to/from the role for the object selected above."
msgstr ""
#: workflow_actions.py:60
#: workflow_actions.py:59
msgid "Grant access"
msgstr ""
#: workflow_actions.py:143
#: workflow_actions.py:135
msgid "Revoke access"
msgstr ""
#: workflow_actions.py:175
msgid "Grant document access"
msgstr ""
#: workflow_actions.py:214
msgid "Revoke document access"
msgstr ""

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