Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8974bf07a2 | ||
|
|
3beb07c373 | ||
|
|
766df7f38b | ||
|
|
ae48d80624 | ||
|
|
059dff02f3 | ||
|
|
18ae37228a | ||
|
|
8298f50334 | ||
|
|
7941cd83a0 | ||
|
|
b1c573dbcf | ||
|
|
e6750d3777 | ||
|
|
2b5943f15e | ||
|
|
6f324c4e00 | ||
|
|
352fcbae6e | ||
|
|
bf1aea0157 | ||
|
|
eda6d65184 | ||
|
|
d8525383f5 | ||
|
|
8ea22f3b3b | ||
|
|
1f6afd5629 | ||
|
|
c7ed8ca09c | ||
|
|
ee44435e47 | ||
|
|
600d674cb0 | ||
|
|
9cdbe77f54 | ||
|
|
0cbbcda2e7 | ||
|
|
bfe0096cc9 | ||
|
|
f061e32f00 | ||
|
|
6d946db0c8 | ||
|
|
a823bdc6be | ||
|
|
7bb53958de | ||
|
|
e7ba91fbaf | ||
|
|
121063ae00 | ||
|
|
af027acaa5 | ||
|
|
2fb8691028 | ||
|
|
cd6f503d68 | ||
|
|
1354fc6893 | ||
|
|
d0d9bd0365 | ||
|
|
8f777fd39b | ||
|
|
39863ab095 | ||
|
|
dabd76bc04 | ||
|
|
fedebac7c7 | ||
|
|
46072b8c4c | ||
|
|
387322faa2 | ||
|
|
afeef2dd02 | ||
|
|
d0c08fa32d | ||
|
|
0a57907a51 | ||
|
|
3ef608599b | ||
|
|
ae082ce52e | ||
|
|
19d268ce58 | ||
|
|
bd01ef489d | ||
|
|
072a883cdd | ||
|
|
bc0a539301 | ||
|
|
bdef1d817d | ||
|
|
f649b49f42 | ||
|
|
4dd56492dd | ||
|
|
38bc67a329 | ||
|
|
9b4186cabe | ||
|
|
321058a610 | ||
|
|
c7814f45ed | ||
|
|
86d349f18b | ||
|
|
60bfe94528 | ||
|
|
05883260f7 | ||
|
|
e9a0749edf | ||
|
|
456a3c55e3 | ||
|
|
e2d8e01f27 | ||
|
|
f565b99990 | ||
|
|
341b52655c | ||
|
|
ae6a481e82 | ||
|
|
f6d2468a88 | ||
|
|
046761bff0 | ||
|
|
0e7e546807 | ||
|
|
cbd5485301 | ||
|
|
c61542c433 | ||
|
|
9c5e6cc8c9 | ||
|
|
d680335ca9 | ||
|
|
ed95d0ff1e | ||
|
|
554d31a736 | ||
|
|
a247c63b9e | ||
|
|
6fab169290 | ||
|
|
58e1acacbb | ||
|
|
8c0633959b | ||
|
|
3b9fecb593 | ||
|
|
47e88b8e95 | ||
|
|
fb22f07436 | ||
|
|
163f4fa24f | ||
|
|
99129ead90 | ||
|
|
67da7d897d | ||
|
|
eb9056f332 | ||
|
|
766fd144b4 | ||
|
|
d6e0b6889a | ||
|
|
6e1230f554 | ||
|
|
96bb01fd7a | ||
|
|
3eb85afa17 | ||
|
|
2d3c1953e0 | ||
|
|
2f5bc98601 | ||
|
|
3f62a3a09a | ||
|
|
2ddbfc224f | ||
|
|
741919ad90 | ||
|
|
ffcc033c40 | ||
|
|
1ab72f6902 | ||
|
|
3cee2cdebb | ||
|
|
2d45f7ce5f | ||
|
|
de0c9afa18 |
@@ -1,10 +0,0 @@
|
||||
[run]
|
||||
source=
|
||||
mayan
|
||||
omit=
|
||||
mayan/bin/mayan-edms.py
|
||||
mayan/wsgi.py
|
||||
mayan/settings/*
|
||||
tests.py
|
||||
mayan/apps/*/tests/*
|
||||
*migrations*
|
||||
@@ -1,28 +0,0 @@
|
||||
*.orig
|
||||
*.pyc
|
||||
*.pyo
|
||||
*.sqlite
|
||||
*.sqlite3
|
||||
settings_local.py
|
||||
/celerybeat-schedule
|
||||
document_storage/
|
||||
/misc/mayan.geany
|
||||
mayan/media/document_cache/
|
||||
build/
|
||||
_build/
|
||||
gpg_home/
|
||||
/mayan/media/static/
|
||||
/whoosh_index/
|
||||
/fabfile_install
|
||||
/venv/
|
||||
.coverage
|
||||
/dist/
|
||||
.idea/
|
||||
static_collected/
|
||||
*egg-info*
|
||||
mayan/settings/local.py
|
||||
.vagrant
|
||||
.tox/
|
||||
coverage.xml
|
||||
.coverage.tox*
|
||||
htmlcov/
|
||||
@@ -1,35 +0,0 @@
|
||||
image: python:2.7
|
||||
services:
|
||||
- mysql
|
||||
- postgres
|
||||
before_script:
|
||||
- apt-get update -qq
|
||||
- apt-get install -qq python-dev gcc tesseract-ocr tesseract-ocr-deu unpaper ghostscript libjpeg-dev libpng-dev libtiff-dev poppler-utils libreoffice
|
||||
variables:
|
||||
POSTGRES_DB: "mayan_edms"
|
||||
POSTGRES_PASSWORD: "postgres"
|
||||
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
|
||||
MYSQL_DATABASE: "mayan_edms"
|
||||
#test:mysql:
|
||||
# script:
|
||||
# - pip install -r requirements/testing.txt
|
||||
# - pip install -q mysql-python
|
||||
# - apt-get install -qq mysql-client
|
||||
# - mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD" -e "ALTER DATABASE $MYSQL_DATABASE CHARACTER SET utf8 COLLATE utf8_unicode_ci;"
|
||||
# - coverage run manage.py runtests --settings=mayan.settings.testing.gitlab-ci.db_mysql --nomigrations
|
||||
# - bash <(curl https://raw.githubusercontent.com/codecov/codecov-bash/master/codecov) -t $CODECOV_TOKEN
|
||||
# tags:
|
||||
# - mysql
|
||||
#test:postgres:
|
||||
# script:
|
||||
# - pip install -r requirements/testing.txt
|
||||
# - pip install -q psycopg2
|
||||
# - coverage run manage.py runtests --settings=mayan.settings.testing.gitlab-ci.db_postgres --nomigrations
|
||||
# - bash <(curl https://raw.githubusercontent.com/codecov/codecov-bash/master/codecov) -t $CODECOV_TOKEN
|
||||
# tags:
|
||||
# - postgres
|
||||
#test:sqlite:
|
||||
# script:
|
||||
# - pip install -r requirements/testing.txt
|
||||
# - coverage run manage.py runtests --settings=mayan.settings.testing.gitlab-ci --nomigrations
|
||||
# - bash <(curl https://raw.githubusercontent.com/codecov/codecov-bash/master/codecov) -t $CODECOV_TOKEN
|
||||
@@ -1,21 +0,0 @@
|
||||
language: python
|
||||
before_install:
|
||||
- sudo apt-get update -qq
|
||||
- sudo apt-get install -qq python-dev gcc tesseract-ocr tesseract-ocr-deu unpaper ghostscript libjpeg-dev libpng-dev poppler-utils
|
||||
install:
|
||||
- pip install -r requirements/testing.txt
|
||||
- pip install -q mysql-python
|
||||
- pip install -q psycopg2
|
||||
before_script:
|
||||
- mysql -u root -e 'create database mayan_edms;'
|
||||
- psql -c 'create database mayan_edms;' -U postgres
|
||||
script:
|
||||
- export TEST_APPS="acls authentication django_gpg document_indexing document_signatures documents dynamic_search folders lock_manager ocr permissions sources tags"
|
||||
- coverage run manage.py test $TEST_APPS --settings=mayan.settings.testing.base
|
||||
- coverage run manage.py test $TEST_APPS --settings=mayan.settings.magnum.db_mysql
|
||||
- coverage run manage.py test $TEST_APPS --settings=mayan.settings.magnum.db_postgres
|
||||
after_script:
|
||||
- coveralls
|
||||
services:
|
||||
- mysql
|
||||
- postgresql
|
||||
@@ -1,34 +0,0 @@
|
||||
language: python
|
||||
python:
|
||||
- 2.7
|
||||
env:
|
||||
matrix:
|
||||
- DB=mysql
|
||||
- DB=postgres
|
||||
- DB=sqlite
|
||||
before_install:
|
||||
- sudo apt-get update -qq
|
||||
- sudo apt-get install -qq python-dev gcc tesseract-ocr tesseract-ocr-deu unpaper ghostscript libjpeg-dev libpng-dev poppler-utils libreoffice
|
||||
install:
|
||||
- "pip install -r requirements/testing.txt"
|
||||
- if [[ $DB == mysql ]]; then pip install -q mysql-python; fi
|
||||
- if [[ $DB == postgres ]]; then pip install -q psycopg2; fi
|
||||
before_script:
|
||||
- mysql -e 'create database mayan_edms;'
|
||||
- psql -c 'create database mayan_edms;' -U postgres
|
||||
script:
|
||||
- if [[ $DB == mysql ]]; then coverage run manage.py runtests --settings=mayan.settings.testing.travis.db_mysql --nomigrations; fi
|
||||
- if [[ $DB == postgres ]]; then coverage run manage.py runtests --settings=mayan.settings.testing.travis.db_postgres --nomigrations; fi
|
||||
- if [[ $DB == sqlite ]]; then coverage run manage.py runtests --settings=mayan.settings.testing.base --nomigrations; fi
|
||||
after_success:
|
||||
- coveralls
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- development
|
||||
notifications:
|
||||
email:
|
||||
recipients:
|
||||
- roberto.rosario@mayan-edms.com
|
||||
on_success: never
|
||||
on_failure: always
|
||||
@@ -1,194 +0,0 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[mayan-edms.acls-2-0]
|
||||
file_filter = mayan/apps/acls/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/acls/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.appearance-2-0]
|
||||
file_filter = mayan/apps/appearance/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/appearance/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.authentication-2-0]
|
||||
file_filter = mayan/apps/authentication/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/authentication/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.checkouts-2-0]
|
||||
file_filter = mayan/apps/checkouts/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/checkouts/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.common-2-0]
|
||||
file_filter = mayan/apps/common/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/common/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.converter-2-0]
|
||||
file_filter = mayan/apps/converter/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/converter/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.django_gpg-2-0]
|
||||
file_filter = mayan/apps/django_gpg/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/django_gpg/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.documents-2-0]
|
||||
file_filter = mayan/apps/documents/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/documents/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.document_comments-2-0]
|
||||
file_filter = mayan/apps/document_comments/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/document_comments/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.document_indexing-2-0]
|
||||
file_filter = mayan/apps/document_indexing/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/document_indexing/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.document_signatures-2-0]
|
||||
file_filter = mayan/apps/document_signatures/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/document_signatures/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.document_states-2-0]
|
||||
file_filter = mayan/apps/document_states/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/document_states/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.dynamic_search-2-0]
|
||||
file_filter = mayan/apps/dynamic_search/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/dynamic_search/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.events-2-0]
|
||||
file_filter = mayan/apps/events/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/events/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.folders-2-0]
|
||||
file_filter = mayan/apps/folders/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/folders/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.installation-2-0]
|
||||
file_filter = mayan/apps/installation/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/installation/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.linking-2-0]
|
||||
file_filter = mayan/apps/linking/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/linking/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.lock_manager-2-0]
|
||||
file_filter = mayan/apps/lock_manager/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/lock_manager/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.mailer-2-0]
|
||||
file_filter = mayan/apps/mailer/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/mailer/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.metadata-2-0]
|
||||
file_filter = mayan/apps/metadata/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/metadata/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.mirroring-2-0]
|
||||
file_filter = mayan/apps/mirroring/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/mirroring/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.mirroring-2-0]
|
||||
file_filter = mayan/apps/mirroring/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/mirroring/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.motd-2-0]
|
||||
file_filter = mayan/apps/motd/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/motd/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.ocr-2-0]
|
||||
file_filter = mayan/apps/ocr/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/ocr/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.permissions-2-0]
|
||||
file_filter = mayan/apps/permissions/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/permissions/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.rest_api-2-0]
|
||||
file_filter = mayan/apps/rest_api/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/rest_api/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.smart_settings-2-0]
|
||||
file_filter = mayan/apps/smart_settings/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/smart_settings/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.sources-2-0]
|
||||
file_filter = mayan/apps/sources/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/sources/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.statistics-2-0]
|
||||
file_filter = mayan/apps/statistics/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/statistics/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.storage-2-0]
|
||||
file_filter = mayan/apps/storage/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/storage/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.tags-2-0]
|
||||
file_filter = mayan/apps/tags/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/tags/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.user_management-2-0]
|
||||
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
|
||||
@@ -1,184 +0,0 @@
|
||||
2.1.2 (2016-05-20)
|
||||
==================
|
||||
- Sort document languages and user profile locale language lists. GitLab issue #292.
|
||||
- Fix metadata lookup for {{ users }} and {{ group }}. Fixes GitLab #290.
|
||||
- Add Makefile for common development tasks
|
||||
|
||||
2.1.1 (2016-05-17)
|
||||
==================
|
||||
- Fix navigation issue that make it impossible to add new sources. GitLab issue #288.
|
||||
- The Tesseract OCR backend now reports if the requested language file is missing. GitLab issue #289.
|
||||
- Ensure the automatic default index is created after the default document type.
|
||||
|
||||
2.1 (2016-05-14)
|
||||
================
|
||||
- Upgrade to use Django 1.8.13. Issue #246.
|
||||
- Upgrade requirements.
|
||||
- Remove remaining references to Django's User model. GitLab issue #225
|
||||
- Rename 'Content' search box to 'OCR'.
|
||||
- Remove included login required middleware using django-stronghold instead (http://mikegrouchy.com/django-stronghold/).
|
||||
- Improve generation of success and error messages for class based views.
|
||||
- Remove ownership concept from folders.
|
||||
- Replace strip_spaces middleware with the spaceless template tag. GitLab issue #255
|
||||
- Deselect the update checkbox for optional metadata by default.
|
||||
- Silence all Django 1.8 model import warnings.
|
||||
- Implement per document type document creation permission. Closes GitLab issue #232.
|
||||
- Add icons to the document face menu links.
|
||||
- Increase icon to text spacing to 3px.
|
||||
- Make document type delete time period optional.
|
||||
- Fixed date locale handling in document properties, checkout and user detail views.
|
||||
- Add new permission: checkout details view.
|
||||
- Add HTML5 upload widget. Issue #162.
|
||||
- Add Message of the Day app. Issue #222
|
||||
- Update Document model's uuid field to use Django's native UUIDField class.
|
||||
- Add new split view index navigation
|
||||
- Newly uploaded documents appear in the Recent document list of the user.
|
||||
- Document indexes now have ACL support.
|
||||
- Remove the document index setup permission.
|
||||
- Status messages now display the object class on which they operate not just the word "Object".
|
||||
- More tests added.
|
||||
- Handle unicode filenames in staging folders.
|
||||
- Add staging file deletion permission.
|
||||
- New document_signature_view permission.
|
||||
- Add support for signing documents.
|
||||
- Instead of multiple keyservers only one keyserver is now supported.
|
||||
- Replace document type selection widget with an opened selection list.
|
||||
- Add mailing documentation chapter.
|
||||
- Add roadmap documentation chapter.
|
||||
- API updates.
|
||||
|
||||
|
||||
2.0.2 (2016-02-09)
|
||||
==================
|
||||
- Install testing dependencies when installing development dependencies.
|
||||
- Fix GitLab issue #250 "Empty optional lookup metadata trigger validation error".
|
||||
- Fix OCR API test.
|
||||
- Move metadata form value validation to .clean() method.
|
||||
- Only extract validation error messages from ValidationError exception instances.
|
||||
- Don't store empty metadata value if the update checkbox is not checked.
|
||||
- Add 2 second delay to document version tests to workaround MySQL limitation.
|
||||
- Strip HTML tags from the browser title.
|
||||
- Remove Docker and Docker Compose files.
|
||||
|
||||
|
||||
2.0.1 (2016-01-22)
|
||||
==================
|
||||
- Fix GitLab issue #243, "System allows a user to skip entering values for a required metadata field while uploading a new document"
|
||||
- Fix GitLab issue #245, "Add multiple metadata not possible"
|
||||
- Updated Vagrantfile to provision a production box too.
|
||||
|
||||
|
||||
2.0 (2015-12-04)
|
||||
================
|
||||
- New source homepage: https://gitlab.com/mayan-edms/mayan-edms
|
||||
- Update to Django 1.7
|
||||
- New Bootstrap Frontend UI
|
||||
- Easier theming and rebranding
|
||||
- Improved page navigation interface
|
||||
- Menu reorganization
|
||||
- Removal of famfam icon set
|
||||
- Improved document preview generation
|
||||
- Document submission for OCR changed to POST
|
||||
- New YAML based settings system
|
||||
- Removal of auto admin creation as separate app
|
||||
- Removal of dependencies
|
||||
- ACL system refactor
|
||||
- Object access control inheritance
|
||||
- Removal of anonymous user support
|
||||
- Metadata validators refactor
|
||||
- Trash can support
|
||||
- Retention policies
|
||||
- Support for sharing indexes as FUSE filesystems
|
||||
- Clickable preview images titles
|
||||
- Removal of eval
|
||||
- Smarter OCR, per page parsing or OCR fallback
|
||||
- Improve failure tolerance (not all Operational Errors are critical now)
|
||||
- RGB tags
|
||||
- Default document type and default document source
|
||||
- Link unbinding
|
||||
- Statistics refactor
|
||||
- Apps merge
|
||||
- New signals
|
||||
- Test improvements
|
||||
- Indexes recalculation after document creation too
|
||||
- Upgrade command
|
||||
- OCR data moved to ocr app from documents app
|
||||
- New internal document creation workflow return a document stub
|
||||
- Auto console debug logging during development and info during production
|
||||
- New class based and menu based navigation system
|
||||
- New class based transformations
|
||||
- Usage of Font Awesome icons set
|
||||
- Management command to remove obsolete permissions: `purgepermissions`
|
||||
- Normalization of 'title' and 'name' fields to 'label'
|
||||
- Improved API, now at version 1
|
||||
- Invert page title/project name order in browser title
|
||||
- Django's class based views pagination
|
||||
- Reduction of text strings
|
||||
- Removal of the CombinedSource class
|
||||
- Removal of default class ACLs
|
||||
- Removal of the ImageMagick and GraphicsMagick converter backends
|
||||
- Remove support for applying roles to new users automatically
|
||||
- Removal of the DOCUMENT_RESTRICTIONS_OVERRIDE permission
|
||||
- Removed the page_label field
|
||||
|
||||
|
||||
1.1.1 (2015-05-21)
|
||||
==================
|
||||
|
||||
- Update to Django 1.6.11
|
||||
- Fix make_dist.sh script
|
||||
- Add test for issue #163
|
||||
- Activate tests for the sources app
|
||||
- Removal of the registration app
|
||||
- New simplified official project description
|
||||
- Improvements to the index admin interface
|
||||
- Removal of installation statistics gathering
|
||||
- Remove unused folder tag
|
||||
- Fix usage of ugettext to ugettext_lazy
|
||||
- Increase size of the lock name field
|
||||
- New style documentation
|
||||
|
||||
|
||||
1.1 (2015-02-10)
|
||||
================
|
||||
- Uses Celery for background tasks
|
||||
- Removal of the splash screen
|
||||
- Adds a home view with common function buttons
|
||||
- Support for sending and receiving documents via email
|
||||
- Removed custom logging app in favor of django-actvity-stream
|
||||
- Adds watch folders
|
||||
- Includes Vagrant file for unified development and testing environments
|
||||
- Per user locale profile (language and timezone)
|
||||
- Includes news document workflow app
|
||||
- Optional and required metadata types
|
||||
- Improved testings. Automated tests against SQLite, MySQL, PostgreSQL
|
||||
- Many new REST API endpoints added
|
||||
- Simplified text messages
|
||||
- Improved method for custom settings
|
||||
- Addition of CORS support to the REST API
|
||||
- Per document language setting instead of per installation language setting
|
||||
- Metadata validation and parsing support
|
||||
- Start of code updates towards Python 3 support
|
||||
- Simplified UI
|
||||
- Stable PDF previews generation
|
||||
- More technical documentation
|
||||
|
||||
|
||||
1.0 (2014-08-27)
|
||||
================
|
||||
- New home @ https://github.com/mayan-edms/mayan-edms
|
||||
- Updated to use Django 1.6
|
||||
- Translation updates
|
||||
- Custom model properties removal
|
||||
- Source code improvements
|
||||
- Removal of included 3rd party modules
|
||||
- Automatic testing and code coverage check
|
||||
- Update of required modules and libraries versions
|
||||
- Database connection leaks fixes
|
||||
- Support for deletion of detached signatures
|
||||
- Removal of Fabric based installations script
|
||||
- Pluggable OCR backends
|
||||
- OCR improvements
|
||||
- License change, Mayan EDMS in now licensed under the Apache 2.0 License
|
||||
- PyPI package, Mayan EDMS in now available on PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
- New REST API
|
||||
@@ -1,13 +0,0 @@
|
||||
Copyright 2011-2015 Roberto Rosario
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@@ -1,3 +0,0 @@
|
||||
include README.rst LICENSE HISTORY.rst
|
||||
recursive-include mayan *.txt *.html *.css *.ico *.png *.jpg *.js *.po *.mo *.ttf *.woff *.woff2 LICENSE
|
||||
global-exclude mayan/settings/local.py mayan/settings/travis/* mayan/media/*
|
||||
@@ -1,113 +0,0 @@
|
||||
.PHONY: clean-pyc clean-build
|
||||
|
||||
define BROWSER_PYSCRIPT
|
||||
import sys, webbrowser
|
||||
webbrowser.open(sys.argv[1])
|
||||
endef
|
||||
export BROWSER_PYSCRIPT
|
||||
BROWSER := python -c "$$BROWSER_PYSCRIPT"
|
||||
|
||||
|
||||
help:
|
||||
@echo
|
||||
@echo "clean-build - Remove build artifacts."
|
||||
@echo "clean-pyc - Remove Python artifacts."
|
||||
@echo "clean - Remove Python and build artifacts."
|
||||
|
||||
@echo "test MODULE=<python module name> - Run tests for a single App, module or test class."
|
||||
@echo "test-all - Run all tests."
|
||||
@echo "docs_serve - Run the livehtml documentation generator."
|
||||
|
||||
@echo "translations_make - Refresh all translation files."
|
||||
@echo "translations_compile - Compile all translation files."
|
||||
@echo "translations_push - Upload all translation files to Transifex."
|
||||
@echo "translations_pull - Download all translation files from Transifex."
|
||||
|
||||
@echo "requirements_dev - Install development requirements."
|
||||
@echo "requirements_docs - Install documentation requirements."
|
||||
@echo "requirements_testing - Install testing requirements."
|
||||
|
||||
@echo "sdist - Build the source distribution package."
|
||||
@echo "wheel - Build the wheel distribution package."
|
||||
@echo "release - Package (sdist and wheel) and upload a release."
|
||||
|
||||
@echo "runserver - Run the development server."
|
||||
|
||||
|
||||
# Cleaning
|
||||
|
||||
clean: clean-build clean-pyc
|
||||
|
||||
clean-build:
|
||||
rm -fr build/
|
||||
rm -fr dist/
|
||||
rm -fr *.egg-info
|
||||
|
||||
clean-pyc:
|
||||
find . -name '*.pyc' -exec rm -f {} +
|
||||
find . -name '*.pyo' -exec rm -f {} +
|
||||
find . -name '*~' -exec rm -f {} +
|
||||
|
||||
|
||||
# Testing
|
||||
|
||||
test:
|
||||
python -Wall ./manage.py test $(MODULE) --settings=mayan.settings.testing --nomigrations
|
||||
|
||||
test-all:
|
||||
python -Wall ./manage.py runtests --settings=mayan.settings.testing --nomigrations
|
||||
|
||||
|
||||
# Documentation
|
||||
|
||||
docs_serve:
|
||||
$(BROWSER) http://127.0.0.1:8000
|
||||
cd docs;make livehtml
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
translations_make:
|
||||
contrib/scripts/process_messages.py -m
|
||||
|
||||
translations_compile:
|
||||
contrib/scripts/process_messages.py -c
|
||||
|
||||
translations_push:
|
||||
tx push -s
|
||||
|
||||
translations_pull:
|
||||
tx pull
|
||||
|
||||
|
||||
# Requirements
|
||||
|
||||
requirements_dev:
|
||||
pip install -r requirements/development.txt
|
||||
|
||||
requirements_docs:
|
||||
pip install -r requirements/documentation.txt
|
||||
|
||||
requirements_testing:
|
||||
pip install -r requirements/testing.txt
|
||||
|
||||
|
||||
# Releases
|
||||
|
||||
release: clean
|
||||
python setup.py sdist bdist_wheel upload
|
||||
|
||||
sdist: clean
|
||||
python setup.py sdist
|
||||
ls -l dist
|
||||
|
||||
wheel: clean
|
||||
python setup.py bdist_wheel
|
||||
ls -l dist
|
||||
|
||||
|
||||
# Dev server
|
||||
|
||||
runserver:
|
||||
$(BROWSER) http://127.0.0.1:8000
|
||||
./manage.py runserver
|
||||
@@ -1,75 +0,0 @@
|
||||
|PyPI badge| |Build Status| |Coverage badge| |Installs badge| |License badge|
|
||||
|
||||
|Logo|
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
Free Open Source Electronic Document Management System.
|
||||
|
||||
`Website`_
|
||||
|
||||
`Video demostration`_
|
||||
|
||||
`Documentation`_
|
||||
|
||||
`Translations`_
|
||||
|
||||
`Mailing list (via Google Groups)`_
|
||||
|
||||
|Animation|
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
This project is open sourced under `Apache 2.0 License`_.
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
To install Mayan EDMS, simply do:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ virtualenv venv
|
||||
$ source venv/bin/activate
|
||||
$ pip install mayan-edms
|
||||
$ mayan-edms.py initialsetup
|
||||
$ mayan-edms.py runserver
|
||||
|
||||
Point your browser to 127.0.0.1:8000 and use the automatically created admin
|
||||
account.
|
||||
|
||||
Contribute
|
||||
----------
|
||||
|
||||
- Check for open issues or open a fresh issue to start a discussion around a feature idea or a bug.
|
||||
- Fork `the repository`_ on GitLab to start making your changes to the **development** branch (or branch off of it).
|
||||
- Write a test which shows that the bug was fixed or that the feature works as expected.
|
||||
- Add yourself to the `contributors file`_.
|
||||
- Send a merge request.
|
||||
|
||||
|
||||
.. _Website: http://www.mayan-edms.com
|
||||
.. _Video demostration: http://bit.ly/pADNXv
|
||||
.. _Documentation: http://readthedocs.org/docs/mayan/en/latest/
|
||||
.. _Translations: https://www.transifex.com/projects/p/mayan-edms/
|
||||
.. _Mailing list (via Google Groups): http://groups.google.com/group/mayan-edms
|
||||
.. _Apache 2.0 License: https://www.apache.org/licenses/LICENSE-2.0.txt
|
||||
.. _`the repository`: http://gitlab.com/mayan-edms/mayan-edms
|
||||
.. _`contributors file`: https://gitlab.com/mayan-edms/mayan-edms/blob/master/docs/topics/contributors.rst
|
||||
|
||||
.. |Build Status| image:: https://gitlab.com/mayan-edms/mayan-edms/badges/master/build.svg
|
||||
:target: https://gitlab.com/mayan-edms/mayan-edms/commits/master
|
||||
.. |Logo| image:: https://gitlab.com/mayan-edms/mayan-edms/raw/master/docs/_static/mayan_logo.png
|
||||
.. |Animation| image:: https://gitlab.com/mayan-edms/mayan-edms/raw/master/docs/_static/overview.gif
|
||||
.. |Installs badge| image:: http://img.shields.io/pypi/dm/mayan-edms.svg?style=flat
|
||||
:target: https://crate.io/packages/mayan-edms/
|
||||
.. |PyPI badge| image:: http://img.shields.io/pypi/v/mayan-edms.svg?style=flat
|
||||
:target: http://badge.fury.io/py/mayan-edms
|
||||
.. |License badge| image:: http://img.shields.io/badge/license-Apache%202.0-green.svg?style=flat
|
||||
.. |Analytics| image:: https://ga-beacon.appspot.com/UA-52965619-2/mayan-edms/readme?pixel
|
||||
.. |Coverage badge| image:: https://codecov.io/gitlab/mayan-edms/mayan-edms/coverage.svg?branch=master
|
||||
:target: https://codecov.io/gitlab/mayan-edms/mayan-edms?branch=master
|
||||
|
||||
|Analytics|
|
||||
@@ -1,33 +0,0 @@
|
||||
# -*- mode: ruby -*-
|
||||
# vi: set ft=ruby :
|
||||
|
||||
VAGRANTFILE_API_VERSION = "2"
|
||||
|
||||
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
||||
config.vm.box = "ubuntu/trusty64"
|
||||
|
||||
config.vm.provider :lxc do |v, override|
|
||||
override.vm.box = "fgrehm/trusty64-lxc"
|
||||
end
|
||||
|
||||
config.vm.provider :virtualbox do |vb|
|
||||
vb.customize ["modifyvm", :id, "--memory", "1024"]
|
||||
end
|
||||
|
||||
# Development box
|
||||
config.vm.define "development", autostart: false do |development|
|
||||
development.vm.network "forwarded_port", guest: 8000, host: 8000
|
||||
development.vm.synced_folder ".", "/mayan-edms-repository"
|
||||
development.vm.provision :shell, :path => "contrib/scripts/install/development.sh", privileged: false
|
||||
|
||||
development.vm.provision "file", destination: "/home/vagrant/mayan-edms/mayan/settings/celery_redis.py", source: "contrib/settings/celery_redis.py"
|
||||
development.vm.provision "file", destination: "/home/vagrant/mayan-edms/mayan_edms_worker.sh", source: "contrib/misc/mayan_edms_worker.sh"
|
||||
end
|
||||
|
||||
# Production box
|
||||
config.vm.define "production", autostart: false do |production|
|
||||
production.vm.network "forwarded_port", guest: 80, host: 8080
|
||||
production.vm.provision :shell, :path => "contrib/scripts/install/production.sh", privileged: true
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
DJANGO_SETTINGS_MODULE='mayan.settings.celery_redis' celery -A mayan worker -l DEBUG -Ofair -B
|
||||
@@ -1,22 +0,0 @@
|
||||
server {
|
||||
listen 80;
|
||||
server_name localhost;
|
||||
|
||||
location / {
|
||||
include uwsgi_params;
|
||||
uwsgi_pass unix:/usr/share/mayan-edms/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 /usr/share/mayan-edms/mayan/media/static;
|
||||
expires 1h;
|
||||
}
|
||||
|
||||
location /favicon.ico {
|
||||
alias /usr/share/mayan-edms/mayan/media/static/appearance/images/favicon.ico;
|
||||
expires 1h;
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 47 KiB |
@@ -1,83 +0,0 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: PGP Universal 2.9.1 (Build 347)
|
||||
|
||||
mQENBE4rh5YBCADKxVsY///jvdY94GTyQopyzTDBBVdftJNlXrLdEz/YJTQV6Jty
|
||||
ggUAgATw1bSZmKixgqGGD90QAt5+FXTdLJCKl9OKR/AyXnpp4OebmN+xw2jKzRcW
|
||||
xJmrBoqcSH/b13QtPRt4AektgMKSKdaIbZ8bPYf91iQ8AxB4mwkYyO+QBGXZw6Vc
|
||||
KmKiEkxYOx5NPVSI/GqyTqVZpb6qRkXzG7N+r7kIM0jesZM7IznR5dsGcqWwKBEz
|
||||
o8dhO4jmSJsiIp/Cy3pOKLG1+qEqjlc7vBAARFtvzSNZTRGouXTDDDathEYAkex7
|
||||
HtNF70CtSLSDbPhwriXfZkXqiL1PqYyZSfd7ABEBAAG0NFJvYmVydG8gUm9zYXJp
|
||||
byA8cm9iZXJ0by5yb3NhcmlvLmdvbnphbGV6QGdtYWlsLmNvbT6JAT4EEwECACgF
|
||||
Ak4rh5YCGyMFCQlmAYAGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEF8/f3XS
|
||||
EHJNEUAH/1fsYyLF9tVnKyoCfOvPHhP1EytL6hti1iwS05DTIzkSLnVgpIvEEbq2
|
||||
+IS32PU9c32+XW12fuAxMK5R3inmMyNIga4WSVsMI9JLSe2gvA7Bc+StldOQGv5f
|
||||
GxHM1abaknJ2rKprS8qKsem/cq9NnnSxLljGQn3v6oC63wNaZLhP7heWGQrJdJid
|
||||
O566CBEoRCbJxA1toTMT9nhEACYCIX9aE2BDk5PI6UJHeUMo9iD7y1ag+mCEGxVT
|
||||
Vz/X8Hc8tSNieqI4iuhdTJzbtvSDqsOmceHMQFISuhnEHJM+4CQOtmsS3Ds+GUkP
|
||||
5z48bjJuqGKcpdfzBq+w5WOKEoEFPmaJASIEEAECAAwFAlO4UvkFAwASdQAACgkQ
|
||||
lxC4m8pXrXwGZAgAvQcsH+sUTW303M2T9/0FO3cPMhfTVctqHSiK3nWET93eW4lC
|
||||
sKK/f/cxb9XdGOXhTePyXBvZHUQN4eC1+bLX5kjL/ZV9nkBT4gJ8+2lnPASJxOKp
|
||||
vM89C1GC8hzSQTE1sxvOmyfn7DfgXzg6an7Zqxhk6lUPOqKe68HPP4W37Vp5QfAh
|
||||
p931AUWlICgO+CvoIQ0Rkk1+Ro/jiXsYjjeBhgicxaFD7Q2zdlo3pms0L7oHvtv7
|
||||
UBnygLKfr0HAOngP+zj0HZKhUnI1D+fsBBqGTb33qDcvn7YjZmu+E1gqGO/4Pnwz
|
||||
6xxZg2GrK3hho1ahgvAXUcfykyA60CQzbmzbq7kBDQROK4eWAQgA0VP+ueoBQgNH
|
||||
8wzBSbXo3XSMrpfO9sNAGR3k9D8Q8fUriJ1LCVd14yM6LC265tpuHciQBiGfWhVf
|
||||
PU0L4oJLrPNlvM1wNJDpqkS1cXunLGhEcLfu3vl2torauqZdD76nSKxsLfTB/72m
|
||||
u13FuWXI5pxT/aoHC/qmhOD3dXYEfAlfI/KM9VIpgpSP/qWUOOFRA718BNLiDRZG
|
||||
AZsHCUdn90SyzMAESIz8wzVLhe9BwFhbK9kdOASrJTU+fq523VHGFH2qy8zeUrRj
|
||||
MqB6p+Lw4eZBEfb86mJveWHCG9yd8EQT10uxoaqVOArozAsoYXHiAeZIhgI4tL5o
|
||||
7ptQ1MdplwARAQABiQElBBgBAgAPBQJOK4eWAhsMBQkJZgGAAAoJEF8/f3XSEHJN
|
||||
gvkH/1eGO6bjQf+h/SQDnOgdQ7k80ruR0G5+9OcEUy4HTJ8CrBInm0PX01L5Rdg4
|
||||
PeJKsYjAdCDw8qFLmeX0xrzh1PXGplDXAQ/EK4Z5O0yywjd/H/S7jIuHJTeFKbhW
|
||||
RkiJ0CQ5DSErrtFaC1V5YzTlj/ePSbnn7DQoBvL3vn0k86K1kbvmFG+dTr9MA8Ue
|
||||
ZCk5uhGdfmgdWXjBjKM9huhG7ftLwmukFhRbX+KbWfmEoU0PA3FzcdnADbdwiwr3
|
||||
V/eysQR3iWXrvgfWwk6WT+QmpDwwW7nvvsp8Vmm2gXHKV/0t6Cw8lJmEbJFt0wAA
|
||||
G61jPawxT56NG/n3M+4i9VyoeOC5Ag0EUea3/gEQANUOBIyWZQr4a3qFgF5pvJrn
|
||||
RSsXRGSYcnsuSkCz6rqkcePWhBAprlXyl7Qst0PqSk4kTsqkV+/zwe2lyziypWTH
|
||||
vWpCX9XBvGa4NvHZSAxEUU41dsohfIxwxjqWvEAYQTMO6qjXbRY1rB+nkHrUzOTO
|
||||
NXW7CTbkHS5LR+yH6dM80PyXXRlhRkd0vGmEzboQm7/ktphU9MyUbwtqPI4ou/fJ
|
||||
bpO6Nz+D4qgm6nRuJP6oBwV1AFOe4gZO5m91zj7p9zaVHRk/+vMfi+LhYWR2h6Th
|
||||
QJyOmH9mDgYs+NuSwo4LJbUFjA/ex/C7oa1EtPniLfntfVipPbzUL4j5aLiZeBE7
|
||||
zuDRE411lpym1/Fp0uHKre5iCkvVUY43JMC4uB2UN48ZrWk7hXbLs/HtpJg2n+Zn
|
||||
VkPkXOVEMM0lsUYJ7QkUnsQHw+pGxLBWe+OZbwYoUoXmAscKl8VvDoBHEqNX9IPM
|
||||
mlrXQbnowJmgOQRxYw/OMJx3Q/KWhru3apF4Qvd22/J5GUZLlLohnVuWG76SSHhB
|
||||
KAhvybl+p05Dr8fhVxrz+Km86fdb+4GHbLPPmcVNUNx9caLmbD0DQmRyf8yPUOWd
|
||||
HGjUaPo2p9u7ggZKF4rykykKV95hakwI6MtDGBa7dPAGi0YP14kQt2zQmqvUqJ+N
|
||||
94MPIkq1UJG/yUGhiCIfABEBAAGJA0QEGAECAA8FAlHmt/4CGwIFCQHhM4ACKQkQ
|
||||
Xz9/ddIQck3BXSAEGQECAAYFAlHmt/4ACgkQ+dt4ozsoqdQBvA//eesB4+Q6+05C
|
||||
kxgYndv3rDMEgX4vx3GNgGS0MC0wjXSv1SQKyZpNNy7PEUMQ5yefrf453L+X9w5J
|
||||
Qi6KhGsDSH56kelqi+wh6TXMURETm1Le6fJMNWDCqOoiRZvyBs/za/WvluxZtFT7
|
||||
7k5tE3JVFQCxWifvK3iTDLbK1vGM0IbZzjuIf3wqKb+yy4wmWt/PhRQTI6aGMe9F
|
||||
LzEU1Zy/NgkFRx/t+2RfH+EIDri0WhardVD7gWsH1SHtWIo0cYSUc4CZn9H8aryb
|
||||
LbACR3yP9OF+Ufz1FlUO1rtISq07XoGWTDR1yRgI/DOMquywDadxZn94nzGpDyQu
|
||||
6B1UT8PxfKtrqrOONfJhkpFeGYarjJ4Lyhz2246YRBzhaMJ7cP6pMpFbkOYcIaad
|
||||
ABrl30TusiQQ7EvZ5es3FO4cG3kUCNK1hZEU2spg5PEKoRVckrx3mC2JotdGcGF/
|
||||
JKmDeOji/gbI7/k9lbGg1cFDGWUK1F83AW+HF6QAtlmz8YIUeP4C6Ik6zuS3bm39
|
||||
PdepO4CuxVgGy+7qDl7Jvgw/tYCRydI7+0e7cdgAkxS47gtZM8k3uvx4/h+zgZ+2
|
||||
J3lyvADPx9k2ZPerRcaKIQmL9fyJUqt6NX5a4+OL+ylrdsKv+HJ5agMOp+TJeW7n
|
||||
ZVFunJFZ6LmnN5Q8deugyNUmZuFYyMWdSQf8CbtlXuPa+KtkEHBiBZhncjLJBE7d
|
||||
uxtb28F+ooDMds+EXyS7S59beOv6rgvRR+1mbILg2b/CzbNeQgWR3AkflZvo6D4R
|
||||
+EwbD4L5rHKOF++QQhKIdjlne8DL5g47rgQRDrSfiRq+sHjQQTJTl06GNvatRhnt
|
||||
rJDOU58+8mnrMm3clU2+rTwf9sEM6eApr1Slq7o2Va/IKVLhK1MO4ZItixgW+57e
|
||||
h3surgTSiY/2l9+uZaSqjsqhEKLh5/ZKqSAZoVDGYoe+wDiwmJhRSQ4ZE+Y4uV2h
|
||||
5zjUThSGCAXj1POdvoams+3yZQ6iDQG80/Fp2vg2XbYQYHb8ADymbPXwpLkCDQRR
|
||||
5rkXARAAm9HpmBe3DJfedn/sWUKddh3/lHHLa+JMVYdwngN/G2RM9No4Bkw9nfuC
|
||||
D6gGJGFDffM3wTtWMc4nn6Jb2jOfXpmgh8WeYHith5yvBA7ruRy18McLAvHIJvPU
|
||||
y3vRmATZQ/h5TC4AY0TaQb+o4YBXafWhodV8oscTX8te8NLDAIWgFoBzlHArflI0
|
||||
lObbSPXsLlzuQeB0qki5cNiljEzZuklIhJGeiuLDwN9a3L/1iYNdZA9swEfIKFvR
|
||||
qujfZ+1Oz9RO7PrQwFNz7JLqnwWLYNQ44JPoWKANYoPaHT5T2bF6sQAtsrzJi0/S
|
||||
0H+O0U61MNb6HqmYjxZC1/RTDGIjEempC6vcpjBXcEdGL5sGGARz0OUpx0+vlZvx
|
||||
GPFp8bN2q47BCT8kcFxPjm4tKG2wrBsKR4irkABtrLH7h5ajBO6Ru5XRM9yGpBIX
|
||||
2r1ds9jtlrdNkrUjfoJQWNKCNCJG+/YDqyGEb3S3kKqGlotFlq4Row5u4nW/NG51
|
||||
knNPUWftMnuTsNQ4NQYDLd8aFjYSCdZqc6wsX2tLJehLUBqk93F11PPPKfgrg2MQ
|
||||
+GIp/x/QXgoSnYfpGt6YsHet/R+f2I7xLaSxVFHjRJK6yHUhxJkfxrVHXPOuGayz
|
||||
SpDa+Tx2bfnGiFIrPTfg7kUGM8DCBeevOZCrLvRhhuXi5Ne78u8AEQEAAYkBJQQY
|
||||
AQIADwUCUea5FwIbDAUJAeEzgAAKCRBfP3910hByTXpIB/0RhvyqszTWmDWSgIx2
|
||||
oYibWEXX4SrCWtQ69LTEy49vv7gcfT+hzgfayQv1WzMIgS91F1+WUM833el2iriS
|
||||
JK+VwX4emsZ/yYO0ailtbhqKg52wDMk84Jk1pagZQLoFzSwYgAt4p9NP/M1ToTIn
|
||||
8T8/MH7upsrCSZK3uTBLQjI97Nj/kKrjIfS+S3MHuwj78NFx68Lrr918VkXESbtq
|
||||
gJXr8RJ/bPAnO4/5DI9EXaEr9WYpYMi3BlBZ8ViMVDDkIV52O7kgBtlaIEXipQMn
|
||||
RqJ8cYPEAMjxU5YYO7KJNXByZEEeYqOpn7Qaq/YkKg6T1mCVaj3MwrquiM7s2Gdw
|
||||
1zzs
|
||||
=izbf
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
Before Width: | Height: | Size: 17 KiB |
@@ -1 +0,0 @@
|
||||
flake8 --ignore=E501 mayan/apps | grep -v "F401 'models' imported but unused" | grep -v "F811 redefinition of unused 'models'"| grep -v "F401 'db' imported but unused" | grep -v "F812 list comprehension redefines 'user_id'" | grep -v "F812 list comprehension redefines 'document_id'" |less
|
||||
@@ -1,25 +0,0 @@
|
||||
!/bin/bash
|
||||
Directories[0]="."
|
||||
|
||||
# Setup find correctly.
|
||||
export IFS=$'\n'
|
||||
|
||||
# Loop through our array.
|
||||
for x in ${Directories[@]}
|
||||
do
|
||||
# Find all directories & subdirectories
|
||||
for i in $(find $x -type d)
|
||||
do
|
||||
# Fix Permissions
|
||||
chmod -c 775 $i
|
||||
chown -c www-data:www-data $i
|
||||
done
|
||||
|
||||
# Find all Files
|
||||
for i in $(find $x -type f)
|
||||
do
|
||||
# Fix Permissions
|
||||
chmod -c 664 $i
|
||||
chown -c www-data:www-data $i
|
||||
done
|
||||
done
|
||||
@@ -1,72 +0,0 @@
|
||||
#!/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
|
||||
@@ -1,171 +0,0 @@
|
||||
#!/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 collectstatic --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
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
python setup.py sdist
|
||||
pip wheel --no-index --no-deps --wheel-dir dist dist/*.tar.gz
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/bin/sh
|
||||
find 'fabfile' -depth -name '*.pyc' -exec rm {} \;
|
||||
tar -czvf contrib/fabfile.tar.gz fabfile
|
||||
@@ -1,114 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
import os
|
||||
import optparse
|
||||
|
||||
import sh
|
||||
|
||||
APP_LIST = (
|
||||
'acls', 'appearance', 'authentication', 'checkouts', 'common',
|
||||
'converter', 'django_gpg', 'document_comments', 'document_indexing',
|
||||
'document_signatures', 'document_states', 'documents', 'dynamic_search',
|
||||
'events', 'folders', 'installation', 'linking', 'lock_manager', 'mailer',
|
||||
'metadata', 'mirroring', 'motd', 'navigation', 'ocr', 'permissions',
|
||||
'rest_api', 'smart_settings', 'sources', 'statistics', 'storage', 'tags',
|
||||
'user_management'
|
||||
)
|
||||
|
||||
LANGUAGE_LIST = (
|
||||
'ar', 'bg', 'bs_BA', 'da', 'de_DE', 'en', 'es', 'fa', 'fr', 'hu', 'id',
|
||||
'it', 'nl_NL', 'pl', 'pt', 'pt_BR', 'ro_RO', 'ru', 'sl_SI', 'vi_VN',
|
||||
'zh_CN',
|
||||
)
|
||||
|
||||
makemessages = sh.Command('django-admin.py')
|
||||
makemessages = makemessages.bake('makemessages')
|
||||
|
||||
compilemessages = sh.Command('django-admin.py')
|
||||
compilemessages = compilemessages.bake('compilemessages')
|
||||
|
||||
transifex_client = sh.Command('tx')
|
||||
pull_translations = transifex_client.bake('pull')
|
||||
push_translations = transifex_client.bake('push')
|
||||
|
||||
BASE_DIR = os.path.abspath(
|
||||
os.path.join(os.path.dirname(__file__), '..', '..', 'mayan')
|
||||
)
|
||||
|
||||
|
||||
def process(command, app_list, language_list):
|
||||
if command == makemessages:
|
||||
print 'Making messages'
|
||||
elif command == compilemessages:
|
||||
print 'Compiling messages'
|
||||
elif command == pull_translations:
|
||||
print 'Pulling translation files'
|
||||
elif command == push_translations:
|
||||
print 'Pushing translation files'
|
||||
|
||||
if command in [compilemessages, makemessages]:
|
||||
for app in app_list:
|
||||
print 'Processing app: %s...' % app
|
||||
app_path = os.path.join(BASE_DIR, 'apps', app)
|
||||
os.chdir(app_path)
|
||||
for lang in language_list:
|
||||
print 'Doing language: %s' % lang
|
||||
command(locale=lang)
|
||||
elif command == pull_translations:
|
||||
for lang in language_list:
|
||||
print 'Doing language: %s' % lang
|
||||
command('-f', '-l', lang)
|
||||
elif command == push_translations:
|
||||
for lang in language_list:
|
||||
print 'Doing language: %s' % lang
|
||||
command('-s', '-l', lang)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = optparse.OptionParser()
|
||||
parser.add_option(
|
||||
'-m', '--make', help='create message sources file', dest='make',
|
||||
default=False, action='store_true'
|
||||
)
|
||||
parser.add_option(
|
||||
'-c', '--compile', help='compile message files', dest='compile',
|
||||
default=False, action='store_true'
|
||||
)
|
||||
parser.add_option(
|
||||
'-p', '--pull', help='pull translation files', dest='pull',
|
||||
default=False, action='store_true'
|
||||
)
|
||||
parser.add_option(
|
||||
'-u', '--push', help='push translation files', dest='push',
|
||||
default=False, action='store_true'
|
||||
)
|
||||
parser.add_option(
|
||||
'-a', '--app', help='specify which app to process', dest='app',
|
||||
action='store', metavar='appname'
|
||||
)
|
||||
parser.add_option(
|
||||
'-l', '--lang', help='specify which language to process', dest='lang',
|
||||
action='store', metavar='language'
|
||||
)
|
||||
(opts, args) = parser.parse_args()
|
||||
|
||||
if not opts.make and not opts.compile:
|
||||
parser.print_help()
|
||||
|
||||
if opts.app:
|
||||
app_list = [opts.app]
|
||||
else:
|
||||
app_list = APP_LIST
|
||||
|
||||
if opts.lang:
|
||||
language_list = [opts.lang]
|
||||
else:
|
||||
language_list = LANGUAGE_LIST
|
||||
|
||||
if opts.make:
|
||||
process(makemessages, app_list, language_list)
|
||||
elif opts.compile:
|
||||
process(compilemessages, app_list, language_list)
|
||||
elif opts.pull:
|
||||
process(pull_translations, app_list, language_list)
|
||||
elif opts.push:
|
||||
process(push_translations, app_list, language_list)
|
||||
@@ -1,35 +0,0 @@
|
||||
#!/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
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
from .local import *
|
||||
|
||||
CELERY_ALWAYS_EAGER = False
|
||||
BROKER_URL = 'redis://127.0.0.1:6379/0'
|
||||
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0'
|
||||
@@ -1,26 +0,0 @@
|
||||
[program:mayan-worker]
|
||||
command = /usr/share/mayan-edms/bin/python /usr/share/mayan-edms/bin/mayan-edms.py celery --settings=mayan.settings.production worker -Ofair -l ERROR
|
||||
directory = /usr/share/mayan-edms
|
||||
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 = /usr/share/mayan-edms/bin/python /usr/share/mayan-edms/bin/mayan-edms.py celery --settings=mayan.settings.production beat -l ERROR
|
||||
directory = /usr/share/mayan-edms
|
||||
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
|
||||
@@ -1,6 +0,0 @@
|
||||
[program:mayan-uwsgi]
|
||||
command = /usr/share/mayan-edms/bin/uwsgi --ini /usr/share/mayan-edms/uwsgi.ini
|
||||
user = root
|
||||
autostart = true
|
||||
autorestart = true
|
||||
redirect_stderr = true
|
||||
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
project: web application template
|
||||
author: luka cvrk (www.solucija.com)
|
||||
*/
|
||||
|
||||
*{ margin: 0; padding: 0; }*
|
||||
body { margin: 50px 0 0; background: #fff url(../images/bg.gif) repeat-x; font: .74em "Trebuchet MS", Arial, Sans-Serif; color: #444; }
|
||||
h1 { font-size: 3em; font-weight: normal; float: left; }
|
||||
h1 a { text-decoration: none; }
|
||||
h2 { font-size: 2em; color: #FFF2B3; font-weight: normal; margin: 0 0 .8em; }
|
||||
h3 { font-size: 1.5em; border-bottom: 1px solid #eee; margin: 0 0 .8em; }
|
||||
h4 { font-size: 1.2em; margin: 0 0 .4em;}
|
||||
h5 { font-size: 1.1em; margin: 0 0 .3em; text-decoration: underline;}
|
||||
p { margin: 0 0 1em 0; line-height: 1.6em;}
|
||||
em { border-bottom: 1px dotted #fff; cursor: pointer; }
|
||||
a { color: #9D2900; }
|
||||
a:hover { color: #A0000E; text-decoration: none; }
|
||||
img { border: 0; }
|
||||
.red { color: #9D2900; }
|
||||
|
||||
.wrap { width: 900px; margin: 0 auto; }
|
||||
|
||||
#header { width: 900px; height: 50px; margin: 0 auto; }
|
||||
#menu { float: right; padding: 6px 0 0 0; list-style: none; }
|
||||
#menu li { display: inline; }
|
||||
#menu a { display: block; float: left; margin-left: 30px; padding: 7px; text-decoration: none; font-size: 13px; color: #000000; }
|
||||
#menu a:hover { color: #000; border-bottom: 2px solid #ccc; }
|
||||
#menu .active a { border-bottom: 2px solid #C70012; color: #9D2900;}
|
||||
|
||||
#teaser { clear: both; height: 259px; background: #fff url(../images/teaserbg.jpg) repeat-x; }
|
||||
.box { float: left; padding: 66px 0 0; width: 480px; color: #C7E3EE; }
|
||||
#image { float: right; width: 388px; position: relative; top: 16px; background: url(../images/logotype.jpg) no-repeat top right; height: 258px; }
|
||||
|
||||
#bar { height: 40px; margin: 0 0 30px; padding: 8px 0 0 0; background: url(../images/bar.gif) repeat-x; }
|
||||
.step { color: #FAFDDD; padding: 4px 0 0 11px; margin: 0 35px 0 0; font-size: 1.4em; float: left; text-align: center; background: url(../images/step.gif) no-repeat; height: 30px; }
|
||||
.step a { color: #fff; margin: 0 10px 0 0; }
|
||||
|
||||
.col { float: left; width: 276px; margin: 0 30px 16px 0; }
|
||||
.last { float: right; margin: 0; }
|
||||
.info { border: 1px solid #e0e0e0; background: #f4f4f4; padding: 7px; }
|
||||
|
||||
#footer { clear: both; width: 900px; margin: 0 auto; padding: 15px; border-top: 1px solid #e0e0e0; background: #fff url(../images/small_logotype.jpg) no-repeat right 13px; }
|
||||
#footer .right { float: right; margin: 0 55px 0 0; }
|
||||
#footer a { color: #808080; font-weight: bold; }
|
||||
|
||||
|
||||
.screenshot {
|
||||
border: 1px solid black;
|
||||
}
|
||||
|
||||
pre { background: #000; color: #fff; padding: 15px; margin-left: 0px; padding:0px;}
|
||||
|
||||
.center {display: block; margin-left: auto; margin-right: auto;}
|
||||
|
||||
.tc {text-align: center;}
|
||||
|
||||
ul.piramid_bullets > li {
|
||||
list-style-image:url("../images/bullet.png");
|
||||
margin-left: 20px;
|
||||
list-style-type:square;
|
||||
}
|
||||
ul.news > li {margin-bottom: 4em;}
|
||||
ul.support > li {margin-bottom: 3em;}
|
||||
ul.other_site > li {margin-bottom: 3em;}
|
||||
ul {
|
||||
list-style:circle;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.gplus { margin-left: 10px; }
|
||||
|
||||
|
||||
.horizontal li
|
||||
{
|
||||
display: inline;
|
||||
list-style-type: none;
|
||||
padding-right: 20px;
|
||||
}
|
||||
@@ -1,133 +0,0 @@
|
||||
# Makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
# You can set these variables from the command line.
|
||||
SPHINXOPTS =
|
||||
SPHINXBUILD = sphinx-build
|
||||
PAPER =
|
||||
BUILDDIR = _build
|
||||
|
||||
# Internal variables.
|
||||
PAPEROPT_a4 = -D latex_paper_size=a4
|
||||
PAPEROPT_letter = -D latex_paper_size=letter
|
||||
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
|
||||
|
||||
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
|
||||
|
||||
help:
|
||||
@echo "Please use \`make <target>' where <target> is one of"
|
||||
@echo " html to make standalone HTML files"
|
||||
@echo " dirhtml to make HTML files named index.html in directories"
|
||||
@echo " singlehtml to make a single large HTML file"
|
||||
@echo " pickle to make pickle files"
|
||||
@echo " json to make JSON files"
|
||||
@echo " htmlhelp to make HTML files and a HTML help project"
|
||||
@echo " qthelp to make HTML files and a qthelp project"
|
||||
@echo " devhelp to make HTML files and a Devhelp project"
|
||||
@echo " epub to make an epub"
|
||||
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
|
||||
@echo " latexpdf to make LaTeX files and run them through pdflatex"
|
||||
@echo " text to make text files"
|
||||
@echo " man to make manual pages"
|
||||
@echo " changes to make an overview of all changed/added/deprecated items"
|
||||
@echo " linkcheck to check all external links for integrity"
|
||||
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
|
||||
|
||||
clean:
|
||||
-rm -rf $(BUILDDIR)/*
|
||||
|
||||
html:
|
||||
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
||||
@echo
|
||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
||||
|
||||
dirhtml:
|
||||
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
|
||||
@echo
|
||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
|
||||
|
||||
singlehtml:
|
||||
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
|
||||
@echo
|
||||
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
|
||||
|
||||
pickle:
|
||||
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
|
||||
@echo
|
||||
@echo "Build finished; now you can process the pickle files."
|
||||
|
||||
json:
|
||||
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
|
||||
@echo
|
||||
@echo "Build finished; now you can process the JSON files."
|
||||
|
||||
htmlhelp:
|
||||
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
|
||||
@echo
|
||||
@echo "Build finished; now you can run HTML Help Workshop with the" \
|
||||
".hhp project file in $(BUILDDIR)/htmlhelp."
|
||||
|
||||
qthelp:
|
||||
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
|
||||
@echo
|
||||
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
|
||||
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
|
||||
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/MayanEDMS.qhcp"
|
||||
@echo "To view the help file:"
|
||||
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/MayanEDMS.qhc"
|
||||
|
||||
devhelp:
|
||||
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
|
||||
@echo
|
||||
@echo "Build finished."
|
||||
@echo "To view the help file:"
|
||||
@echo "# mkdir -p $$HOME/.local/share/devhelp/MayanEDMS"
|
||||
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/MayanEDMS"
|
||||
@echo "# devhelp"
|
||||
|
||||
epub:
|
||||
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
|
||||
@echo
|
||||
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
|
||||
|
||||
latex:
|
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||
@echo
|
||||
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
|
||||
@echo "Run \`make' in that directory to run these through (pdf)latex" \
|
||||
"(use \`make latexpdf' here to do that automatically)."
|
||||
|
||||
latexpdf:
|
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||
@echo "Running LaTeX files through pdflatex..."
|
||||
make -C $(BUILDDIR)/latex all-pdf
|
||||
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
||||
|
||||
text:
|
||||
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
|
||||
@echo
|
||||
@echo "Build finished. The text files are in $(BUILDDIR)/text."
|
||||
|
||||
man:
|
||||
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
|
||||
@echo
|
||||
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
|
||||
|
||||
changes:
|
||||
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
|
||||
@echo
|
||||
@echo "The overview file is in $(BUILDDIR)/changes."
|
||||
|
||||
linkcheck:
|
||||
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
|
||||
@echo
|
||||
@echo "Link check complete; look for any errors in the above output " \
|
||||
"or in $(BUILDDIR)/linkcheck/output.txt."
|
||||
|
||||
doctest:
|
||||
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
|
||||
@echo "Testing of doctests in the sources finished, look at the " \
|
||||
"results in $(BUILDDIR)/doctest/output.txt."
|
||||
|
||||
livehtml:
|
||||
sphinx-autobuild -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
||||
@@ -1,229 +0,0 @@
|
||||
"""
|
||||
Sphinx plugins for Django documentation.
|
||||
"""
|
||||
import os
|
||||
import re
|
||||
|
||||
from docutils import nodes, transforms
|
||||
try:
|
||||
import json
|
||||
except ImportError:
|
||||
try:
|
||||
import simplejson as json
|
||||
except ImportError:
|
||||
try:
|
||||
from django.utils import simplejson as json
|
||||
except ImportError:
|
||||
json = None
|
||||
|
||||
from sphinx import addnodes, roles, __version__ as sphinx_ver
|
||||
from sphinx.builders.html import StandaloneHTMLBuilder
|
||||
from sphinx.writers.html import SmartyPantsHTMLTranslator
|
||||
from sphinx.util.console import bold
|
||||
from sphinx.util.compat import Directive
|
||||
|
||||
# RE for option descriptions without a '--' prefix
|
||||
simple_option_desc_re = re.compile(
|
||||
r'([-_a-zA-Z0-9]+)(\s*.*?)(?=,\s+(?:/|-|--)|$)')
|
||||
|
||||
def setup(app):
|
||||
app.add_crossref_type(
|
||||
directivename = "setting",
|
||||
rolename = "setting",
|
||||
indextemplate = "pair: %s; setting",
|
||||
)
|
||||
app.add_crossref_type(
|
||||
directivename = "templatetag",
|
||||
rolename = "ttag",
|
||||
indextemplate = "pair: %s; template tag"
|
||||
)
|
||||
app.add_crossref_type(
|
||||
directivename = "templatefilter",
|
||||
rolename = "tfilter",
|
||||
indextemplate = "pair: %s; template filter"
|
||||
)
|
||||
app.add_crossref_type(
|
||||
directivename = "fieldlookup",
|
||||
rolename = "lookup",
|
||||
indextemplate = "pair: %s; field lookup type",
|
||||
)
|
||||
app.add_description_unit(
|
||||
directivename = "django-admin",
|
||||
rolename = "djadmin",
|
||||
indextemplate = "pair: %s; django-admin command",
|
||||
parse_node = parse_django_admin_node,
|
||||
)
|
||||
app.add_description_unit(
|
||||
directivename = "django-admin-option",
|
||||
rolename = "djadminopt",
|
||||
indextemplate = "pair: %s; django-admin command-line option",
|
||||
parse_node = parse_django_adminopt_node,
|
||||
)
|
||||
app.add_config_value('django_next_version', '0.0', True)
|
||||
app.add_directive('versionadded', VersionDirective)
|
||||
app.add_directive('versionchanged', VersionDirective)
|
||||
app.add_builder(DjangoStandaloneHTMLBuilder)
|
||||
|
||||
|
||||
class VersionDirective(Directive):
|
||||
has_content = True
|
||||
required_arguments = 1
|
||||
optional_arguments = 1
|
||||
final_argument_whitespace = True
|
||||
option_spec = {}
|
||||
|
||||
def run(self):
|
||||
env = self.state.document.settings.env
|
||||
arg0 = self.arguments[0]
|
||||
is_nextversion = env.config.django_next_version == arg0
|
||||
ret = []
|
||||
node = addnodes.versionmodified()
|
||||
ret.append(node)
|
||||
if not is_nextversion:
|
||||
if len(self.arguments) == 1:
|
||||
linktext = 'Please see the release notes </releases/%s>' % (arg0)
|
||||
xrefs = roles.XRefRole()('doc', linktext, linktext, self.lineno, self.state)
|
||||
node.extend(xrefs[0])
|
||||
node['version'] = arg0
|
||||
else:
|
||||
node['version'] = "Development version"
|
||||
node['type'] = self.name
|
||||
if len(self.arguments) == 2:
|
||||
inodes, messages = self.state.inline_text(self.arguments[1], self.lineno+1)
|
||||
node.extend(inodes)
|
||||
if self.content:
|
||||
self.state.nested_parse(self.content, self.content_offset, node)
|
||||
ret = ret + messages
|
||||
env.note_versionchange(node['type'], node['version'], node, self.lineno)
|
||||
return ret
|
||||
|
||||
|
||||
class DjangoHTMLTranslator(SmartyPantsHTMLTranslator):
|
||||
"""
|
||||
Django-specific reST to HTML tweaks.
|
||||
"""
|
||||
|
||||
# Don't use border=1, which docutils does by default.
|
||||
def visit_table(self, node):
|
||||
self._table_row_index = 0 # Needed by Sphinx
|
||||
self.body.append(self.starttag(node, 'table', CLASS='docutils'))
|
||||
|
||||
# <big>? Really?
|
||||
def visit_desc_parameterlist(self, node):
|
||||
self.body.append('(')
|
||||
self.first_param = 1
|
||||
self.param_separator = node.child_text_separator
|
||||
|
||||
def depart_desc_parameterlist(self, node):
|
||||
self.body.append(')')
|
||||
|
||||
if sphinx_ver < '1.0.8':
|
||||
#
|
||||
# Don't apply smartypants to literal blocks
|
||||
#
|
||||
def visit_literal_block(self, node):
|
||||
self.no_smarty += 1
|
||||
SmartyPantsHTMLTranslator.visit_literal_block(self, node)
|
||||
|
||||
def depart_literal_block(self, node):
|
||||
SmartyPantsHTMLTranslator.depart_literal_block(self, node)
|
||||
self.no_smarty -= 1
|
||||
|
||||
#
|
||||
# Turn the "new in version" stuff (versionadded/versionchanged) into a
|
||||
# better callout -- the Sphinx default is just a little span,
|
||||
# which is a bit less obvious that I'd like.
|
||||
#
|
||||
# FIXME: these messages are all hardcoded in English. We need to change
|
||||
# that to accomodate other language docs, but I can't work out how to make
|
||||
# that work.
|
||||
#
|
||||
version_text = {
|
||||
'deprecated': 'Deprecated in Django %s',
|
||||
'versionchanged': 'Changed in Django %s',
|
||||
'versionadded': 'New in Django %s',
|
||||
}
|
||||
|
||||
def visit_versionmodified(self, node):
|
||||
self.body.append(
|
||||
self.starttag(node, 'div', CLASS=node['type'])
|
||||
)
|
||||
title = "%s%s" % (
|
||||
self.version_text[node['type']] % node['version'],
|
||||
len(node) and ":" or "."
|
||||
)
|
||||
self.body.append('<span class="title">%s</span> ' % title)
|
||||
|
||||
def depart_versionmodified(self, node):
|
||||
self.body.append("</div>\n")
|
||||
|
||||
# Give each section a unique ID -- nice for custom CSS hooks
|
||||
def visit_section(self, node):
|
||||
old_ids = node.get('ids', [])
|
||||
node['ids'] = ['s-' + i for i in old_ids]
|
||||
node['ids'].extend(old_ids)
|
||||
SmartyPantsHTMLTranslator.visit_section(self, node)
|
||||
node['ids'] = old_ids
|
||||
|
||||
def parse_django_admin_node(env, sig, signode):
|
||||
command = sig.split(' ')[0]
|
||||
env._django_curr_admin_command = command
|
||||
title = "django-admin.py %s" % sig
|
||||
signode += addnodes.desc_name(title, title)
|
||||
return sig
|
||||
|
||||
def parse_django_adminopt_node(env, sig, signode):
|
||||
"""A copy of sphinx.directives.CmdoptionDesc.parse_signature()"""
|
||||
from sphinx.domains.std import option_desc_re
|
||||
count = 0
|
||||
firstname = ''
|
||||
for m in option_desc_re.finditer(sig):
|
||||
optname, args = m.groups()
|
||||
if count:
|
||||
signode += addnodes.desc_addname(', ', ', ')
|
||||
signode += addnodes.desc_name(optname, optname)
|
||||
signode += addnodes.desc_addname(args, args)
|
||||
if not count:
|
||||
firstname = optname
|
||||
count += 1
|
||||
if not count:
|
||||
for m in simple_option_desc_re.finditer(sig):
|
||||
optname, args = m.groups()
|
||||
if count:
|
||||
signode += addnodes.desc_addname(', ', ', ')
|
||||
signode += addnodes.desc_name(optname, optname)
|
||||
signode += addnodes.desc_addname(args, args)
|
||||
if not count:
|
||||
firstname = optname
|
||||
count += 1
|
||||
if not firstname:
|
||||
raise ValueError
|
||||
return firstname
|
||||
|
||||
|
||||
class DjangoStandaloneHTMLBuilder(StandaloneHTMLBuilder):
|
||||
"""
|
||||
Subclass to add some extra things we need.
|
||||
"""
|
||||
|
||||
name = 'djangohtml'
|
||||
|
||||
def finish(self):
|
||||
super(DjangoStandaloneHTMLBuilder, self).finish()
|
||||
if json is None:
|
||||
self.warn("cannot create templatebuiltins.js due to missing simplejson dependency")
|
||||
return
|
||||
self.info(bold("writing templatebuiltins.js..."))
|
||||
xrefs = self.env.domaindata["std"]["objects"]
|
||||
templatebuiltins = {
|
||||
"ttags": [n for ((t, n), (l, a)) in xrefs.items()
|
||||
if t == "templatetag" and l == "ref/templates/builtins"],
|
||||
"tfilters": [n for ((t, n), (l, a)) in xrefs.items()
|
||||
if t == "templatefilter" and l == "ref/templates/builtins"],
|
||||
}
|
||||
outfilename = os.path.join(self.outdir, "templatebuiltins.js")
|
||||
f = open(outfilename, 'wb')
|
||||
f.write('var django_template_builtins = ')
|
||||
json.dump(templatebuiltins, f)
|
||||
f.write(';\n')
|
||||
f.close();
|
||||
|
Before Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 628 KiB |
|
Before Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 67 KiB |
@@ -1,4 +0,0 @@
|
||||
<h3>Support</h3>
|
||||
<p>
|
||||
Consulting, support, customization, rebranding, and plug-in development are available. Email for information to: <a href='mailto:info@mayan-edms.com'>info@mayan-edms.com</a>
|
||||
</p>
|
||||
@@ -1,252 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
#
|
||||
# Mayan EDMS documentation build configuration file, created by
|
||||
# sphinx-quickstart on Fri Aug 19 05:13:38 2011.
|
||||
#
|
||||
# This file is execfile()d with the current directory set to its containing dir.
|
||||
#
|
||||
# Note that not all possible configuration values are present in this
|
||||
# autogenerated file.
|
||||
#
|
||||
# All configuration values have a default; values that are commented out
|
||||
# serve to show the default.
|
||||
|
||||
import sys, os
|
||||
|
||||
sys.path.insert(0, os.path.abspath('..'))
|
||||
|
||||
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")))
|
||||
|
||||
# -- General configuration -----------------------------------------------------
|
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here.
|
||||
#needs_sphinx = '1.0'
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be extensions
|
||||
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
||||
#extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode']
|
||||
#extensions = ["djangodocs", "sphinx.ext.intersphinx"]
|
||||
extensions = ['djangodocs', 'sphinxcontrib.blockdiag']
|
||||
|
||||
blockdiag_antialias = True
|
||||
blockdiag_html_image_format = "SVG"
|
||||
blockdiag_latex_image_format = "PDF"
|
||||
blockdiag_tex_image_format = "PDF"
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
||||
# The suffix of source filenames.
|
||||
source_suffix = '.rst'
|
||||
|
||||
# The encoding of source files.
|
||||
# source_encoding = 'utf-8-sig'
|
||||
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = mayan.__title__
|
||||
copyright = mayan.__copyright__
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = mayan.__version__
|
||||
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = version
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
#language = None
|
||||
|
||||
# There are two options for replacing |today|: either, you set today to some
|
||||
# non-false value, then it is used:
|
||||
#today = ''
|
||||
# Else, today_fmt is used as the format for a strftime call.
|
||||
#today_fmt = '%B %d, %Y'
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
exclude_patterns = ['_build']
|
||||
|
||||
# The reST default role (used for this markup: `text`) to use for all documents.
|
||||
#default_role = None
|
||||
|
||||
# If true, '()' will be appended to :func: etc. cross-reference text.
|
||||
add_function_parentheses = True
|
||||
|
||||
# If true, the current module name will be prepended to all description
|
||||
# unit titles (such as .. function::).
|
||||
add_module_names = False
|
||||
|
||||
# If true, sectionauthor and moduleauthor directives will be shown in the
|
||||
# output. They are ignored by default.
|
||||
show_authors = False
|
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use.
|
||||
pygments_style = 'sphinx'
|
||||
|
||||
# A list of ignored prefixes for module index sorting.
|
||||
#modindex_common_prefix = []
|
||||
|
||||
|
||||
# -- Options for HTML output ---------------------------------------------------
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
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 = {}
|
||||
|
||||
# Add any paths that contain custom themes here, relative to this directory.
|
||||
#html_theme_path = []
|
||||
|
||||
# The name for this set of Sphinx documents. If None, it defaults to
|
||||
# "<project> v<release> documentation".
|
||||
#html_title = None
|
||||
|
||||
# A shorter title for the navigation bar. Default is the same as html_title.
|
||||
#html_short_title = None
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top
|
||||
# of the sidebar.
|
||||
#html_logo = None
|
||||
|
||||
# The name of an image file (within the static path) to use as favicon of the
|
||||
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
||||
# pixels large.
|
||||
#html_favicon = None
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
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'
|
||||
|
||||
# If true, SmartyPants will be used to convert quotes and dashes to
|
||||
# typographically correct entities.
|
||||
#html_use_smartypants = True
|
||||
|
||||
# Custom sidebar templates, maps document names to template names.
|
||||
#html_sidebars = {}
|
||||
|
||||
# Additional templates that should be rendered to pages, maps page names to
|
||||
# template names.
|
||||
#html_additional_pages = {}
|
||||
|
||||
# If false, no module index is generated.
|
||||
#html_domain_indices = True
|
||||
|
||||
# If false, no index is generated.
|
||||
#html_use_index = True
|
||||
|
||||
# If true, the index is split into individual pages for each letter.
|
||||
#html_split_index = False
|
||||
|
||||
# If true, links to the reST sources are added to the pages.
|
||||
#html_show_sourcelink = True
|
||||
|
||||
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
|
||||
#html_show_sphinx = True
|
||||
|
||||
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
|
||||
#html_show_copyright = True
|
||||
|
||||
# If true, an OpenSearch description file will be output, and all pages will
|
||||
# contain a <link> tag referring to it. The value of this option must be the
|
||||
# base URL from which the finished HTML is served.
|
||||
#html_use_opensearch = ''
|
||||
|
||||
# This is the file name suffix for HTML files (e.g. ".xhtml").
|
||||
#html_file_suffix = None
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'MayanEDMSdoc'
|
||||
|
||||
|
||||
# -- Options for LaTeX output --------------------------------------------------
|
||||
|
||||
# The paper size ('letter' or 'a4').
|
||||
#latex_paper_size = 'letter'
|
||||
|
||||
# The font size ('10pt', '11pt' or '12pt').
|
||||
#latex_font_size = '10pt'
|
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title, author, documentclass [howto/manual]).
|
||||
latex_documents = [
|
||||
('index', 'MayanEDMS.tex', 'Mayan EDMS Documentation',
|
||||
mayan.__author__, 'manual'),
|
||||
]
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
# the title page.
|
||||
#latex_logo = None
|
||||
|
||||
# For "manual" documents, if this is true, then toplevel headings are parts,
|
||||
# not chapters.
|
||||
#latex_use_parts = False
|
||||
|
||||
# If true, show page references after internal links.
|
||||
#latex_show_pagerefs = False
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
#latex_show_urls = False
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
#latex_preamble = ''
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
#latex_appendices = []
|
||||
|
||||
# If false, no module index is generated.
|
||||
#latex_domain_indices = True
|
||||
|
||||
|
||||
# -- Options for manual page output --------------------------------------------
|
||||
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
('index', 'mayanedms', 'Mayan EDMS Documentation',
|
||||
[mayan.__author__], 1)
|
||||
]
|
||||
|
||||
|
||||
# -- Custom options
|
||||
import alabaster
|
||||
|
||||
html_theme_path = [alabaster.get_path()]
|
||||
extensions.append('alabaster')
|
||||
html_theme = 'alabaster'
|
||||
html_sidebars = {
|
||||
'**': [
|
||||
'about.html', 'donate.html', 'navigation.html', 'searchbox.html',
|
||||
]
|
||||
}
|
||||
html_theme_options = {
|
||||
'description': mayan.__description__,
|
||||
'github_button': False,
|
||||
'travis_button': False,
|
||||
'gratipay_user': 'rosarior',
|
||||
'github_banner': False,
|
||||
}
|
||||
|
||||
html_logo = '_static/logo_pyramid_only.png'
|
||||
@@ -1,47 +0,0 @@
|
||||
Welcome to Mayan EDMS!
|
||||
======================
|
||||
|
||||
Mayan EDMS is a `Free Open Source`_ `Electronic Document Management System`_, coded in
|
||||
the Python language using the Django_ web application framework and released
|
||||
under the `Apache 2.0 License`_. It provides an electronic vault or repository for electronic documents.
|
||||
|
||||
The easiest way to use Mayan EDMS is by using a Debian based Linux distribution
|
||||
and install it from PyPI with the following commands:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo apt-get install libjpeg-dev libmagic1 libpng-dev libreoffice libtiff-dev gcc ghostscript gpgv python-dev python-virtualenv tesseract-ocr poppler-utils -y
|
||||
virtualenv venv
|
||||
source venv/bin/activate
|
||||
pip install mayan-edms
|
||||
mayan-edms.py initialsetup
|
||||
mayan-edms.py runserver
|
||||
|
||||
Point your browser to 127.0.0.1:8000 and use the automatically created admin
|
||||
account.
|
||||
|
||||
.. image:: /_static/overview.gif
|
||||
:alt: Overview
|
||||
|
||||
.. toctree::
|
||||
:hidden:
|
||||
|
||||
Features <topics/features>
|
||||
Installation <topics/installation>
|
||||
Deploying <topics/deploying>
|
||||
Release notes and upgrading <releases/index>
|
||||
Concepts <topics/index>
|
||||
Development <topics/development>
|
||||
App creation <topics/app_creation>
|
||||
Roadmap <topics/roadmap>
|
||||
Translations <topics/translations>
|
||||
Contributors <topics/contributors>
|
||||
Screenshots <topics/screenshots>
|
||||
Licensing <topics/license>
|
||||
FAQ <topics/faq>
|
||||
Contact <topics/contact>
|
||||
|
||||
.. _Django: http://www.djangoproject.com/
|
||||
.. _Free Open Source: http://en.wikipedia.org/wiki/Open_source
|
||||
.. _Electronic Document Management System: https://en.wikipedia.org/wiki/Document_management_system
|
||||
.. _Apache 2.0 License: https://www.apache.org/licenses/LICENSE-2.0.txt
|
||||
@@ -1,155 +0,0 @@
|
||||
@ECHO OFF
|
||||
|
||||
REM Command file for Sphinx documentation
|
||||
|
||||
if "%SPHINXBUILD%" == "" (
|
||||
set SPHINXBUILD=sphinx-build
|
||||
)
|
||||
set BUILDDIR=_build
|
||||
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
|
||||
if NOT "%PAPER%" == "" (
|
||||
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
|
||||
)
|
||||
|
||||
if "%1" == "" goto help
|
||||
|
||||
if "%1" == "help" (
|
||||
:help
|
||||
echo.Please use `make ^<target^>` where ^<target^> is one of
|
||||
echo. html to make standalone HTML files
|
||||
echo. dirhtml to make HTML files named index.html in directories
|
||||
echo. singlehtml to make a single large HTML file
|
||||
echo. pickle to make pickle files
|
||||
echo. json to make JSON files
|
||||
echo. htmlhelp to make HTML files and a HTML help project
|
||||
echo. qthelp to make HTML files and a qthelp project
|
||||
echo. devhelp to make HTML files and a Devhelp project
|
||||
echo. epub to make an epub
|
||||
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
|
||||
echo. text to make text files
|
||||
echo. man to make manual pages
|
||||
echo. changes to make an overview over all changed/added/deprecated items
|
||||
echo. linkcheck to check all external links for integrity
|
||||
echo. doctest to run all doctests embedded in the documentation if enabled
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "clean" (
|
||||
for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
|
||||
del /q /s %BUILDDIR%\*
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "html" (
|
||||
%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in %BUILDDIR%/html.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "dirhtml" (
|
||||
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "singlehtml" (
|
||||
%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "pickle" (
|
||||
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
|
||||
echo.
|
||||
echo.Build finished; now you can process the pickle files.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "json" (
|
||||
%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
|
||||
echo.
|
||||
echo.Build finished; now you can process the JSON files.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "htmlhelp" (
|
||||
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
|
||||
echo.
|
||||
echo.Build finished; now you can run HTML Help Workshop with the ^
|
||||
.hhp project file in %BUILDDIR%/htmlhelp.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "qthelp" (
|
||||
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
|
||||
echo.
|
||||
echo.Build finished; now you can run "qcollectiongenerator" with the ^
|
||||
.qhcp project file in %BUILDDIR%/qthelp, like this:
|
||||
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\MayanEDMS.qhcp
|
||||
echo.To view the help file:
|
||||
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\MayanEDMS.ghc
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "devhelp" (
|
||||
%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
|
||||
echo.
|
||||
echo.Build finished.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "epub" (
|
||||
%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
|
||||
echo.
|
||||
echo.Build finished. The epub file is in %BUILDDIR%/epub.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "latex" (
|
||||
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
|
||||
echo.
|
||||
echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "text" (
|
||||
%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
|
||||
echo.
|
||||
echo.Build finished. The text files are in %BUILDDIR%/text.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "man" (
|
||||
%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
|
||||
echo.
|
||||
echo.Build finished. The manual pages are in %BUILDDIR%/man.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "changes" (
|
||||
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
|
||||
echo.
|
||||
echo.The overview file is in %BUILDDIR%/changes.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "linkcheck" (
|
||||
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
|
||||
echo.
|
||||
echo.Link check complete; look for any errors in the above output ^
|
||||
or in %BUILDDIR%/linkcheck/output.txt.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "doctest" (
|
||||
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
|
||||
echo.
|
||||
echo.Testing of doctests in the sources finished, look at the ^
|
||||
results in %BUILDDIR%/doctest/output.txt.
|
||||
goto end
|
||||
)
|
||||
|
||||
:end
|
||||
@@ -1,10 +0,0 @@
|
||||
Version 0.10.1
|
||||
--------------
|
||||
* Upgraded django-compressor to version 1.1.1, run::
|
||||
|
||||
$ pip install --upgrade -r requirements/production.txt
|
||||
|
||||
to upgrade
|
||||
|
||||
* django-compressor is now disabled by default, users must explicitly
|
||||
enable it adding COMPRESS_ENABLED=True to their settings_local.py file
|
||||
@@ -1,51 +0,0 @@
|
||||
Version 0.10
|
||||
------------
|
||||
* Added a proper setup views for the document grouping functionality.
|
||||
* Document grouping is now called smart linking as it relates better to
|
||||
how it actually works. The data base schema was changed and users must
|
||||
do the required::
|
||||
|
||||
$ ./manager syncdb
|
||||
|
||||
for the new tables to be created.
|
||||
* Grappelli is no longer required as can be uninstalled.
|
||||
* New smarter document preview widget that doesn't allow zooming or viewing
|
||||
unknown or invalid documents.
|
||||
* New office document converter, requires:
|
||||
|
||||
* LibreOffice (https://www.libreoffice.org/)
|
||||
* unoconv [version 0.5] (https://github.com/dagwieers/unoconv)
|
||||
|
||||
* The new office documents converter won't convert files with the extension
|
||||
.docx because these files are recognized as zip files instead. This
|
||||
is an issue of the libmagic library.
|
||||
|
||||
* New configuration option added ``CONVERTER_UNOCONV_USE_PIPE`` that controls
|
||||
how unoconv handles the communication with LibreOffice. The default of
|
||||
``True`` causes unoconv to use **pipes**, this approach is slower than using
|
||||
**TCP/IP** ports but it is more stable.
|
||||
|
||||
* Initial `REST` `API` that exposes documents properties and one method, this
|
||||
new `API` is used by the new smart document widget and requires the
|
||||
package ``djangorestframework``, users must issue a::
|
||||
|
||||
$ pip install -r requirements/production.txt
|
||||
|
||||
to install this new requirement.
|
||||
|
||||
* MIME type detection and caching performance updates.
|
||||
* Updated the included version of ``jQuery`` to 1.7
|
||||
* Updated the included version of ``JqueryAsynchImageLoader`` to 0.9.7
|
||||
* Document image serving response now specifies a MIME type for increased
|
||||
browser compatibility.
|
||||
* Small change in the scheduler that increases stability.
|
||||
* Russian translation updates Sergey Glita
|
||||
* Improved and generalized the OCR queue locking mechanism, this should
|
||||
eliminate any posibility of race conditions between Mayan EDMS OCR nodes.
|
||||
* Added support for signals to the OCR queue, this results in instant OCR
|
||||
processing upon submittal of a document to the OCR queue, this works in
|
||||
addition to the current polling processing which eliminates the
|
||||
posibility of stale documents in the OCR queue.
|
||||
* Added multiple document OCR submit link
|
||||
* Re enabled tesseract language specific OCR processing and added a one
|
||||
(1) time language neutral retry for failed language specific OCR
|
||||
@@ -1,8 +0,0 @@
|
||||
Version 0.11.1
|
||||
--------------
|
||||
* Fixed a document deletion regression
|
||||
* Improves error detection when importing keys from a keyserver, catching
|
||||
the exception KeyImportError and not KeyFetchingError
|
||||
* Fixes a wrong method call when verifying signatures for the first time upon document uploading
|
||||
* django-compress is now disabled by default to avoid problems when deploying with DjangoZoom
|
||||
* Improve post metadata set delete redirection
|
||||
@@ -1,34 +0,0 @@
|
||||
Version 0.11
|
||||
------------
|
||||
* Support for signed documents verification added, embedded and detached
|
||||
signatures are supported. When verifying a document Mayan EDMS will
|
||||
try to fetch the public key from the list of keyservers provided in the
|
||||
configuration option SIGNATURES_KEYSERVERS (which defaults to
|
||||
'pool.sks-keyservers.net'). A public key management view has been added
|
||||
to the setup menu as well as a key query and fetching view to manually
|
||||
import keys from a keyserver.
|
||||
* Added support for document versions. Users can upload unlimited amount
|
||||
of versions for a document using a very flexible document version numbering
|
||||
system, users can also revert to a previous document version.
|
||||
* OCR queue processing improvements.
|
||||
* Office documents handling improvements.
|
||||
* Text extraction support for office documents.
|
||||
* RTF text documents are now handled as office documents.
|
||||
* 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 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 appropiate
|
||||
migrate commands::
|
||||
|
||||
$ pip install -r requirements/production.txt
|
||||
$ ./manager syncdb
|
||||
$ ./manage.py migrate documents 0001 --fake
|
||||
$ ./manage.py migrate documents
|
||||
|
||||
* Added new office document mimetype
|
||||
* application/vnd.ms-office
|
||||
* Fixed documents not saving the file encoding
|
||||
* Removed extra slash in ajax-loader.gif URL fixes #15, thanks to
|
||||
IHLeanne for finding this one
|
||||
@@ -1,116 +0,0 @@
|
||||
================================
|
||||
Mayan EDMS v0.12.1 release notes
|
||||
================================
|
||||
|
||||
*May 2012*
|
||||
|
||||
This is the first maintenance release of the 0.12 series.
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
While bug fixes and minor feature were the focus for this release, some
|
||||
bigger changes were included because of their importance. The parsing of
|
||||
documents saw a complete rewrite being now class based and allows for more
|
||||
than one parser per mimetype with sequencial fallback. This provides the
|
||||
best text extraction on deployments where users have control over the
|
||||
installation and basic extraction when deploying on the cloud or other
|
||||
environments where users don't have the ability to install OS level
|
||||
binaries.
|
||||
|
||||
|
||||
What's new in Mayan EDMS v0.12.1
|
||||
================================
|
||||
|
||||
Fabric file (fabfile)
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
A Fabric file is included to help users not very familiar with Ubuntu,
|
||||
Python and Django install Mayan EDMS, or for system administrators
|
||||
looking to automate the install whether in local or remote systems.
|
||||
At the moment the fabfile will install Mayan EDMS in the same configurations
|
||||
listed in this documentation, that is: (Ubuntu/Debian/Fedora) + virtualenv + Apache + MySQL.
|
||||
Feel free to submit your configuration settings and files for different databases,
|
||||
webserver or Linux distribution. More configurations will be added to
|
||||
the fabfile as more are tested.
|
||||
|
||||
Documentation update
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
The installation instructions were updated to include the installation of
|
||||
the libpng-dev and libjpeg-dev libraries as well as the installation of
|
||||
the poppler-utils package. An additional step to help users test their
|
||||
new installation of Mayan EDMS was also added.
|
||||
|
||||
Translations
|
||||
~~~~~~~~~~~~
|
||||
The Italian translation has been synchronized with the source files at
|
||||
Transifex and finished to %100 completion.
|
||||
|
||||
Usability improvements
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
The index instance view now feature the same multi document action
|
||||
buttons (Submit to OCR, delete, download, etc) as the mail and recent
|
||||
document views.
|
||||
|
||||
Better office document conversion
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
A new method of converting office documents has been implemented, this
|
||||
new method doesn't require the use of the command line utility ``UNOCONV``.
|
||||
If this new method proves to work better than previous solutions the use
|
||||
of ``UNOCONV`` may be deprecated in the future. The conversion method
|
||||
adds just one new configuration option: `CONVERTER_LIBREOFFICE_PATH`
|
||||
which defaults to '/usr/bin/libreoffice'.
|
||||
|
||||
Better PDF text parsing
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Brian E. submitted a patch to use the Poppler package pdftotext utility to
|
||||
extract text from PDF files. This is now the default method Mayan EDMS
|
||||
will execute to try to extract text from a PDF and failing that will
|
||||
fallback to the previous method. This change add a new configuration
|
||||
option: `OCR_PDFTOTEXT_PATH` to specify the location of the ``pdftotext``
|
||||
executable, it defaults to '/usr/bin/pdftotext'. Be sure to install the
|
||||
``poppler-utils`` os package to take advantage of this new parser.
|
||||
|
||||
Changed defaults
|
||||
~~~~~~~~~~~~~~~~
|
||||
The OCR queue is now active by default when first created during the
|
||||
``syncdb`` phase and the `OCR_AUTOMATIC_OCR` option now defaults
|
||||
to ``True``. These two changes are made to reduce the steps required for
|
||||
new users to start enjoying the benefits of automatic text extraction from
|
||||
uploaded documents without having to read the documentation and have a more
|
||||
functional default install.
|
||||
|
||||
Upgrading from a previous version
|
||||
=================================
|
||||
|
||||
Start off by adding the new requirements::
|
||||
|
||||
$ pip install -r requirements/production.txt
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ ./manage.py migrate documents
|
||||
|
||||
Install the ``poppler-utils`` package:
|
||||
|
||||
* Ubuntu, Debian::
|
||||
|
||||
$ apt-get install -y poppler-utils
|
||||
|
||||
* Fedora::
|
||||
|
||||
$ yum install -y poppler-utils
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
* None
|
||||
|
||||
Bugs fixed
|
||||
==========
|
||||
* Issue #25 "Office document conversion error"
|
||||
|
||||
Stuff removed
|
||||
=============
|
||||
* None
|
||||
@@ -1,115 +0,0 @@
|
||||
================================
|
||||
Mayan EDMS v0.12.2 release notes
|
||||
================================
|
||||
|
||||
*June 2012*
|
||||
|
||||
This is the second maintenance release of the 0.12 series.
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
|
||||
As with the previous release bug fixes and minor feature were the focus
|
||||
for this release too. `issue #24`_ has been fixed and document
|
||||
check outs have been added too as per the feature request posted as `issue #26`_.
|
||||
The way the history events for a document are presented has been improved and
|
||||
it is now more useful as it provides filtering by event type. To improve
|
||||
the diagnosis of installation of runtime error a simple view showing the
|
||||
number of internal interval jobs being used by Mayan EDMS as well as a
|
||||
new app which shows a detail of the current installation enviroment were added.
|
||||
|
||||
What's new in Mayan EDMS v0.12.2
|
||||
================================
|
||||
|
||||
Smarter auto admin creation
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Mayan EDMS creates a administrator user during the
|
||||
database creation phase to reduce the amount of steps required for a
|
||||
functional install. The creation of this account is controlled by the configuration
|
||||
option `COMMON_AUTO_CREATE_ADMIN`, the username of the account is
|
||||
specified with the configuration option `COMMON_AUTO_ADMIN_USERNAME`
|
||||
and the password of this account by the option `COMMON_AUTO_ADMIN_PASSWORD`.
|
||||
Previously the `COMMON_AUTO_ADMIN_PASSWORD` defaulted to 'admin' which
|
||||
created an administrator account of username 'admin' with a password of
|
||||
'admin'. The new default is to randomize an initial password and show this password
|
||||
at the login screen until the administrator password is changed.
|
||||
|
||||
Document check outs
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
As per the feature request filed under `issue #26`_, a new document
|
||||
check out and check in functionality has been added. Users can now
|
||||
check out a document and lock new version of it from being uploaded to avoid
|
||||
editing conflicts. Document check outs have an expiration period after which
|
||||
Mayan EDMS will automatically check them back in to avoid a permanent
|
||||
document lockout. Only the user who has checked out a document can upload
|
||||
new versions of it or check the document back in before the expiration period,
|
||||
unless being granted the ``Allow overriding check out restrictions`` or
|
||||
``Forcefully check in documents`` permission respectively.
|
||||
|
||||
Installation environment app
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Diagnosting remote installations of web based applications without access to the
|
||||
command line can be a bit hard, to alleviate this situation a new installation
|
||||
environment details app has been added. The purpose of this app is to provide
|
||||
support staff information about the physical environment where Mayan EDMS has
|
||||
been installed. To avoid possible security compromises only administrators
|
||||
can access this app.
|
||||
|
||||
Editable compressed documents filename
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Previously when downloading more than one document in a compressed manner,
|
||||
Mayan EDMS would produce a file with the name ``document_bundle.zip`` for
|
||||
download. A different filename can now be specified at the same download dialog.
|
||||
|
||||
German translation
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
A German language translation has been added thanks to Tetja Rediske
|
||||
and Tilmann Sittig.
|
||||
|
||||
Statistics gathering
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
Previous attempts at gathering usage statistics have been met with deficient results.
|
||||
User participation in surveys as well as the quality of the data entered by users
|
||||
was disappointing. That is why this version of Mayan EDMS features an
|
||||
anonymous statistics gathering functionality.
|
||||
|
||||
|
||||
Upgrading from a previous version
|
||||
=================================
|
||||
|
||||
Start off by adding the new requirements::
|
||||
|
||||
$ pip install -r requirements/production.txt
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ ./manage.py migrate common 0001 --fake
|
||||
$ ./manage.py migrate common
|
||||
$ ./manage.py migrate checkouts
|
||||
$ ./manage.py migrate installation
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ ./manage.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
* None
|
||||
|
||||
Bugs fixed
|
||||
==========
|
||||
* `issue #24`_ "Duplicated filename extension when uploading a new version of a document"
|
||||
* `issue #26`_ "checkout feature request"
|
||||
|
||||
Stuff removed
|
||||
=============
|
||||
* Feedback app
|
||||
|
||||
|
||||
|
||||
.. _issue #24: https://github.com/rosarior/mayan/issues/24
|
||||
.. _issue #26: https://github.com/rosarior/mayan/issues/26
|
||||
@@ -1,231 +0,0 @@
|
||||
==============================
|
||||
Mayan EDMS v0.12 release notes
|
||||
==============================
|
||||
|
||||
*February 2012*
|
||||
|
||||
Welcome to Mayan EDMS v0.12!
|
||||
|
||||
This release commemorates Mayan EDMS first aniversary!
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
Aside from new features, the focus of this release of Mayan EDMS also
|
||||
been about improving the code and documentation quality standard
|
||||
even further. The permission system has been completely overhauled to make
|
||||
it entire class based. The other big change is the addition of object
|
||||
level permissions, with this new system being applied to documents,
|
||||
folder, tags and smart links. There is also a small batch of navigation
|
||||
improvements. Big code cleanup and lots of changes 'under the hood',
|
||||
most of these are not visible to the end user, but make the code cleaner
|
||||
and more manageable so that more and better features can be added in future
|
||||
releases:
|
||||
|
||||
* Absolute imports used throught the code
|
||||
* All app permissions have been move to a separate permissions.py file
|
||||
per app
|
||||
* Complete permission system refactor.
|
||||
* Document signining code move to it's own app
|
||||
* Initial unit tests
|
||||
* A lot of logging used throught the entire project.
|
||||
* Much functionality moved to model managers.
|
||||
* A lot of code converted into classes.
|
||||
* Coding style improvements.
|
||||
* Template user authentication state logic improvements, for stonger
|
||||
prevention against intrusion or unintentional display or access
|
||||
of restricted data.
|
||||
* Removal of remarked code.
|
||||
|
||||
|
||||
What's new in Mayan EDMS v0.12
|
||||
==============================
|
||||
|
||||
ACL support
|
||||
~~~~~~~~~~~
|
||||
* Object level access control is now in place for documents, folders,
|
||||
tags and smart links. What this means is that administrators can now
|
||||
grant permissions to users, groups or roles on for specific objects.
|
||||
A more in-depth explanation of how this new ACL system can be found in
|
||||
the :doc:`3 tier access control <../topics/permissions>` section of the
|
||||
permissions chapter.
|
||||
|
||||
* Default class ACL support. Administrators can setup the access control
|
||||
lists that new documents, folders and tags will automatically inheric
|
||||
when created. Aside from asigning permission to users, groups and roles
|
||||
to specific objects, there is a special user called `Creator`, use to
|
||||
allow the access control list that the actual creator of an object will
|
||||
inherit.
|
||||
|
||||
Anonymous user support
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
Anonymous user support is a two tier function, first is the addition of
|
||||
the `COMMON_ALLOW_ANONYMOUS_ACCESS` configuration option that
|
||||
allows non authenticated user to browse all the pages of a Mayan EDMS installation.
|
||||
The second part of this support is the ability to assign permissions
|
||||
or individual access to objects to anonymous users.
|
||||
|
||||
Translations
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
A new Italian translation is available, provided by SeeOpen.IT
|
||||
(www.seeopen.it, info@seeopen.it) as well as complete Russian translation
|
||||
update by Sergei Glita. Included in this release also the initial translation
|
||||
to Polish by mic.
|
||||
|
||||
Usability improvements
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
* Detached signature behavior improved, uploading a new detached signature
|
||||
erases the previous one.
|
||||
* Usability improvement in the role member's add/removal form, by using
|
||||
HTML's option groups tag property
|
||||
|
||||
2 Step download process
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
The code for downloading single and multiple document and document versions
|
||||
has been merged with compression support also added. This allows for the
|
||||
download of documents in their original format or compressed and well as
|
||||
the download of several documents in a single compressed file.
|
||||
|
||||
Customizable GPG home directory
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Addition of the `SIGNATURES_GPG_HOME` configuration option to let
|
||||
administrators set Mayan EDMS's GPG instance home directory, used to
|
||||
store keyrings and other GPG configuration files.
|
||||
|
||||
Out of process bulk uploading
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
A management command has been added to help upload a large number of documents
|
||||
from a compressed file. For information about this new feature check the Initial data loading chapter.
|
||||
|
||||
|
||||
Out of process user import
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
A management command has been added to import a large number users
|
||||
from a CSV file. More information about this new feature can also be found
|
||||
in the Initial data loading chapter.
|
||||
|
||||
|
||||
Refactored document indexing
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
:doc:`The document indexing <../topics/indexes>` functionality has been
|
||||
improved and moved from experimental
|
||||
stage to beta stage. Index configuration menus are now available on the
|
||||
``Setup`` menu and allows administrators to create skeleton trees that will
|
||||
be populated with document links depending on their metadata and properties.
|
||||
These populated trees can also be mirrored on the physical filesystem and shared
|
||||
using Samba or another filesharing server giving users a structured view
|
||||
of the documents contained within Mayan EDMS from the ``Indexes`` tab
|
||||
or from a mirrored index shared via the network. A new configuration option
|
||||
has been added, `DOCUMENT_INDEXING_FILESYSTEM_SERVING`, which maps
|
||||
the index internal name with the physical directory where such index will be
|
||||
mirrored on disk.
|
||||
|
||||
Help shape Mayan EDMS's future
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Included in this version is a small feedback application, found under the
|
||||
``About`` main menu, where users by just answering some questions can
|
||||
help determine the priority of the next planned features on the pipeline,
|
||||
or even help add new features if enough requests are received. All questions
|
||||
are optional but answering as many as possible will help greatly understand
|
||||
the need of the Mayan EDMS user base.
|
||||
|
||||
Staging file previews
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
The staging file previews now show the filename for easier
|
||||
identification and speedier upload selection. The staging files previews
|
||||
are now treated as a gallery which means that users can preview an entire
|
||||
page of staging files without having to click and close each one
|
||||
individually.
|
||||
|
||||
|
||||
Upgrading from a previous version
|
||||
=================================
|
||||
|
||||
Start off by adding the new requirements::
|
||||
|
||||
$ pip install -r requirements/production.txt
|
||||
|
||||
Then create the new database structures with::
|
||||
|
||||
$ ./manage.py syncdb
|
||||
|
||||
Afterwards migrate existing database schema with::
|
||||
|
||||
$ ./manage.py migrate permissions 0001 --fake
|
||||
$ ./manage.py migrate permissions
|
||||
|
||||
|
||||
When the following message appears
|
||||
|
||||
::
|
||||
|
||||
The following content types are stale and need to be deleted:
|
||||
|
||||
permissions | permission
|
||||
|
||||
Any objects related to these content types by a foreign key will also
|
||||
be deleted. Are you sure you want to delete these content types?
|
||||
If you're unsure, answer 'no'.
|
||||
|
||||
Type 'yes' to continue, or 'no' to cancel:
|
||||
|
||||
Type ``yes`` and press **Enter**
|
||||
|
||||
And continue migrating database schema with::
|
||||
|
||||
$ ./manage.py migrate documents
|
||||
$ ./manage.py migrate document_signatures
|
||||
$ ./manage.py migrate folders 0001 --fake
|
||||
$ ./manage.py migrate folders
|
||||
$ ./manage.py migrate document_indexing 0001 --fake
|
||||
$ ./manage.py migrate document_indexing
|
||||
$ ./manage.py migrate sources 0001 --fake
|
||||
$ ./manage.py migrate sources
|
||||
|
||||
Again when a similar messages appears
|
||||
::
|
||||
|
||||
The following content types are stale and need to be deleted:
|
||||
|
||||
document_indexing | indexinstance
|
||||
|
||||
Any objects related to these content types by a foreign key will also
|
||||
be deleted. Are you sure you want to delete these content types?
|
||||
If you're unsure, answer 'no'.
|
||||
|
||||
Type 'yes' to continue, or 'no' to cancel:
|
||||
|
||||
Type ``yes`` and press **Enter**
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
The permission system has been completely reworked so sadly this is a
|
||||
place where even data migration can't help and the permissions assigned
|
||||
to roles will be lost during the upgrade to version 0.12. Users, groups
|
||||
and roles will be preserved only permissions need to be assigned again,
|
||||
so write down your role permission setup before upgrading.
|
||||
|
||||
Bugs fixed
|
||||
==========
|
||||
* Issue #17, special thanks to Dave Herring for all the help including
|
||||
access to a machine suffering with the issue, and to Sergei Glita for
|
||||
his research and eventual find of the core cause.
|
||||
* Statistics fixes.
|
||||
* Fixed get_image_cache_name regression in the OCR app.
|
||||
|
||||
Stuff removed
|
||||
=============
|
||||
* Support for Celery and Sentry has been drop
|
||||
for now.
|
||||
* Removed the 'db_index' argument from Text fields definition and
|
||||
migrations as it was causing error messages for MySQL users, thanks to
|
||||
Sergei Glita for reporting this one.
|
||||
* Configuration options removed:
|
||||
|
||||
* OCR_CACHE_URI
|
||||
* DOCUMENT_INDEXING_FILESYSTEM_FILESERVING_PATH - Use the newest `DOCUMENT_INDEXING_FILESYSTEM_SERVING`
|
||||
* DOCUMENT_INDEXING_FILESYSTEM_FILESERVING_ENABLE - Use the newest `DOCUMENT_INDEXING_FILESYSTEM_SERVING`
|
||||
|
||||
@@ -1,162 +0,0 @@
|
||||
================================
|
||||
Mayan EDMS v0.13 release notes
|
||||
================================
|
||||
|
||||
*December 2012*
|
||||
|
||||
Welcome to Mayan EDMS v0.13!
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
Initially this version was meant as a the third maintenance release of
|
||||
the 0.12 series, but with the amount of changes and updates that were included
|
||||
it was obvious this was not just a bug fix version anymore hence the version
|
||||
jump to 0.13 instead of 0.12.3
|
||||
|
||||
|
||||
What's new in Mayan EDMS v0.13
|
||||
================================
|
||||
|
||||
Django 1.3.5
|
||||
~~~~~~~~~~~~
|
||||
This release updates the required version of Django to 1.3.5 to take advantage
|
||||
of the security fixes added to that version of the framework.
|
||||
|
||||
Bulk document tagging and untagging
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
As requested by issue `issue #31`_ this feature has been implemented and enabled in this version.
|
||||
Attaching or removing tags from a large number of documents is now much easier.
|
||||
|
||||
Registration
|
||||
~~~~~~~~~~~~
|
||||
Based on requests made by the community for greater commercial support and services for
|
||||
Mayan EDMS, a new feature has been added that allows users to register their
|
||||
copies of Mayan EDMS and better help users with commercial support packages.
|
||||
Registration for non commercial users is voluntary and optional, and in no way
|
||||
affects the functionality of Mayan EDMS. However even for non commercial users
|
||||
registration offers the advantage of automatically branding the user's copy
|
||||
of Mayan EDMS with their name or the company name in the title area.
|
||||
|
||||
Per document type indexing
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Index can now be restricted to update only on specific document types, this
|
||||
greatly increases the usefulness of indexes, and prevents unwanted index
|
||||
updates.
|
||||
|
||||
Bootstrap
|
||||
~~~~~~~~~
|
||||
Setting up Mayan EDMS after installation has been indetified by users as the
|
||||
main difficulty when knowledge about Mayan EDMS is relatively low. To
|
||||
address this situation a new feature that provides preconfigured setups has been
|
||||
added. These preconfigured setups are published in the Mayan EDMS website and
|
||||
upon synchonization are available to users, this gives users access and integrators
|
||||
access to new setups without having to wait for new versions of Mayan EDMS.
|
||||
Aside from including preconfigured setups, the new bootstrap app
|
||||
has the ability of dumping an user's current setup into a serialized text file
|
||||
which can be tweaked by hand and sent via email to other users. The possibilities
|
||||
enabled by this range from company wide defaults setups to consultants providing
|
||||
their clients with customized setups without having to access their clients'
|
||||
Mayan EDMS instances. ``JSON``, ``YAML`` and a custom ``YAML`` format
|
||||
(http://djangosnippets.org/snippets/2461/) are supported by this new app.
|
||||
|
||||
Add documents to folders in bulk
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
As requested, the ability to add more than one document at a time to a selected
|
||||
folder has been added.
|
||||
|
||||
Translation updates
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
The translation for all the current languages were synchronized to the
|
||||
latest transifex project sources.
|
||||
|
||||
Model updates
|
||||
~~~~~~~~~~~~~
|
||||
Several small fixes to the behavior of some model were added, namely that
|
||||
the names of some models should be unique. The document type name as well
|
||||
as the metadata set name were two models that were updated to behave this way.
|
||||
|
||||
Navigation updates
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
There were some additions and changes to the navigation to make it more intuitive
|
||||
or to add an alternate way to access the same information better. The bulk
|
||||
attachment of tags was one of these. Previously users were added or removed from groups,
|
||||
now users can be assigned to groups without leaving the user view. The name of an
|
||||
existing metadata set can now be edited and what was previously called metadata set edit
|
||||
is now more aptly named metadata members which adds or removes metadata types into a
|
||||
single organizational unit. An error that caused a duplicate menu link in the
|
||||
document type filename view was also fixed.
|
||||
|
||||
Support for UNOCONV dropped
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Support for converting office documents by calling LibreOffice via UNOCONV
|
||||
has been disabled for a while ever since LibreOffice start including
|
||||
document conversion support from the command line. This version completly
|
||||
removes any traces of code and configuration options related to UNOCONV.
|
||||
|
||||
Optimizations
|
||||
~~~~~~~~~~~~~
|
||||
Inspired by the idea of getting Mayan EDMS running effectively on low power hardware such as
|
||||
the Raspberry Pi, several rounds or profiling and optimization were done.
|
||||
|
||||
Some caching optimization were introduced to the permission model, resulting in
|
||||
a speed increase of 33% in rendering time on views with heavy permission checking
|
||||
and a 18% query reduction on cache hits.
|
||||
|
||||
Upgrading from a previous version
|
||||
=================================
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the existing installation.
|
||||
|
||||
Next add the new requirements::
|
||||
|
||||
$ pip install -r requirements/production.txt
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ ./manage.py migrate document_indexing
|
||||
$ ./manage.py migrate metadata 0001 --fake
|
||||
$ ./manage.py migrate metadata
|
||||
$ ./manage.py migrate bootstrap
|
||||
$ ./manage.py migrate documents
|
||||
$ ./manage.py migrate registration
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ ./manage.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
* `issue #28`_ "Document indexing based on filesystem problem"
|
||||
* `issue #29`_ Default ACL documentation
|
||||
* `issue #30`_ "Ubuntu 12.0.4 LTS complaining about mising 'fabfile/templates/settings_local.py' (master branch)"
|
||||
* `issue #31`_ "Bulk add tags Feature request"
|
||||
* `issue #32`_ "Error run $python manage.py syncdb"
|
||||
* `issue #33`_ "Fetches translations from Transifex. "
|
||||
* `issue #34`_ "Initial syncdb fails because of import time database access"
|
||||
* `issue #35`_ "Fix first install syncdb on Postgres"
|
||||
* `issue #37`_ "When 19 >= &document_type_id >= 10 in url, error page not found"
|
||||
* `issue #39`_ Feature request "Bulk move folders"
|
||||
|
||||
|
||||
.. _issue #28: https://github.com/rosarior/mayan/issues/28
|
||||
.. _issue #29: https://github.com/rosarior/mayan/issues/29
|
||||
.. _issue #30: https://github.com/rosarior/mayan/issues/30
|
||||
.. _issue #31: https://github.com/rosarior/mayan/issues/31
|
||||
.. _issue #32: https://github.com/rosarior/mayan/issues/32
|
||||
.. _issue #33: https://github.com/rosarior/mayan/issues/33
|
||||
.. _issue #34: https://github.com/rosarior/mayan/issues/34
|
||||
.. _issue #35: https://github.com/rosarior/mayan/issues/35
|
||||
.. _issue #37: https://github.com/rosarior/mayan/issues/37
|
||||
.. _issue #39: https://github.com/rosarior/mayan/issues/39
|
||||
@@ -1,10 +0,0 @@
|
||||
Version 0.5.1
|
||||
-------------
|
||||
* Applied initial merge of the new subtemplate renderer
|
||||
* Fixed tag removal logic
|
||||
* Initial commit to support document comments
|
||||
* Updated so that loading spinner is displayed always
|
||||
* Exclude tags from the local document upload form
|
||||
* Added document tagging support
|
||||
|
||||
- Requires installing ``django-taggit`` and doing a ``sync-db``
|
||||
@@ -1,300 +0,0 @@
|
||||
Version 0.5
|
||||
-----------
|
||||
* Added tag list view and global tag delete support
|
||||
* Added tag editing view and listing documents with an specific tag
|
||||
* Changed the previewing and deleting staging files views to required
|
||||
``DOCUMENT_CREATE`` permission
|
||||
* Added no-parent-history class to document page links so that iframe clicking doesn't affect the parent window history
|
||||
|
||||
- Fixes back button issue on Chrome 9 & 10
|
||||
|
||||
* Added per app version display tag
|
||||
* Added loading spinner animation
|
||||
* Messages tweaks and translation updates
|
||||
* Converter app cleanups, document pre-cache, magic number removal
|
||||
* Added OCR view displaying all active OCR tasks from all cluster nodes
|
||||
* Disabled ``CELERY_DISABLE_RATE_LIMITS`` by default
|
||||
* Implement local task locking using Django locmem cache backend
|
||||
* Added doc extension to office document format list
|
||||
* Removed redundant transformation calculation
|
||||
* Make sure OCR in processing documents cannot be deleted
|
||||
* PEP8, pylint cleanups and removal of relative imports
|
||||
* Removed the obsolete ``DOCUMENTS_GROUP_MAX_RESULTS`` setting option
|
||||
* Improved visual appearance of messages by displaying them outside the
|
||||
main form
|
||||
* Added link to close all notifications with one click
|
||||
* Made the queue processing interval configurable by means of a new
|
||||
setting: ``OCR_QUEUE_PROCESSING_INTERVAL``
|
||||
* Added detection and reset of orphaned ocr documents being left as
|
||||
'processing' when celery dies
|
||||
* Improved unknown format detection in the graphicsmagick backend
|
||||
* Improved document convertion API
|
||||
* Added initial support for converting office documents (only ods and
|
||||
docx tested)
|
||||
* Added sample configuration files for supervisor and apache under
|
||||
contrib/
|
||||
* Avoid duplicates in recent document list
|
||||
* Added the configuration option CONVERTER_GM_SETTINGS to pass
|
||||
GraphicsMagicks specific commands the the GM backend
|
||||
* Lower image convertion quality if the format is jpg
|
||||
* Inverted the rotation button, more intuitive this way
|
||||
* Merged and reduced the document page zoom and rotation views
|
||||
* Increased permissions app permission's label field size
|
||||
|
||||
- DB Update required
|
||||
|
||||
* Added support for metadata group actions
|
||||
* Reduced the document pages widget size
|
||||
* Display the metadata group numeric total in the metadata group form
|
||||
title
|
||||
* Reorganized page detail icons
|
||||
* Added first & last page navigation links to document page view
|
||||
* Added interactive zoom support to document page detail view
|
||||
* Spanish translation updates
|
||||
* Added ``DOCUMENTS_ZOOM_PERCENT_STEP``, ``DOCUMENTS_ZOOM_MAX_LEVEL``,
|
||||
``DOCUMENTS_ZOOM_MIN_LEVEL`` configuration options to allow detailed
|
||||
zoom control
|
||||
* Added interactive document page view rotation support
|
||||
* Changed the side bar document grouping with carousel style document
|
||||
grouping form widget
|
||||
* Removed the obsolete ``DOCUMENTS_TRANFORMATION_PREVIEW_SIZE`` and
|
||||
``DOCUMENTS_GROUP_SHOW_THUMBNAIL`` setting options
|
||||
* Improved double submit prevention
|
||||
* Added a direct rename field to the local update and staging upload
|
||||
forms
|
||||
* Separated document page detail view into document text and document
|
||||
image views
|
||||
* Added grab-scroll to document page view
|
||||
* Disabled submit buttons and any buttons when during a form submit
|
||||
* Updated the page preview widget to display a infinite-style horizontal
|
||||
carousel of page previews
|
||||
* Added support user document folders
|
||||
|
||||
- Must do a ``syncdb`` to add the new tables
|
||||
|
||||
* Added support for listing the most recent accessed documents per user
|
||||
* Added document page navigation
|
||||
* Fixed diagnostics url resolution
|
||||
* Added confirmation dialog to document's find missing document file
|
||||
diagnostic
|
||||
* Added a document page edit view
|
||||
* Added support for the command line program pdftotext from the
|
||||
poppler-utils packages to extract text from PDF documents without
|
||||
doing OCR
|
||||
* Fixed document description editing
|
||||
* Replaced page break text with page number when displaying document
|
||||
content
|
||||
* Implemented detail form readonly fields the correct way, this fixes
|
||||
copy & paste issues with Firefox
|
||||
* New document page view
|
||||
* Added view to add or remove user to a specific role
|
||||
* Updated the jQuery packages with the web_theme app to version 1.5.2
|
||||
* Made ``AVAILABLE_INDEXING_FUNCTION`` setting a setting of the documents
|
||||
app instead of the filesystem_serving app
|
||||
* Fixed document download in FireFox for documents containing spaces in
|
||||
the filename
|
||||
* If mime detection fails set mime type to '' instead of 'unknown'
|
||||
* Use document MIME type when downloading otherwise use
|
||||
'application/octet-stream' if none
|
||||
* Changed the way document page count is parsed from the graphics
|
||||
backend, fixing issue #7
|
||||
* Optimized document metadata query and display
|
||||
* Implemented OCR output cleanups for English and Spanish
|
||||
* Redirect user to the website entry point if already logged and lands
|
||||
in the login template
|
||||
* Changed from using SimpleUploadedFile class to stream file to the
|
||||
simpler File class wrapper
|
||||
* Updated staging files previews to use sendfile instead of serve_file
|
||||
* Moved staging file preview creation logic from documents.views to
|
||||
staging.py
|
||||
* When deleting staging file, it's cached preview is also deleted
|
||||
* Added a new setup option:
|
||||
|
||||
- ``FILESYSTEM_INDEXING_AVAILABLE_FUNCTIONS`` - a dictionary to allow users
|
||||
to add custom functions
|
||||
|
||||
* Made automatic OCR a function of the OCR app and not of Documents app (via signals)
|
||||
|
||||
- Renamed setup option ``DOCUMENT_AUTOMATIC_OCR`` to ``OCR_AUTOMATIC_OCR``
|
||||
|
||||
* Clear node name when requeueing a document for OCR
|
||||
* Added support for editing the metadata of multiple documents at the
|
||||
same time
|
||||
* Added Graphics magick support by means of user selectable graphic convertion backends
|
||||
|
||||
- Some settings renamed to support this change:
|
||||
|
||||
+ ``CONVERTER_CONVERT_PATH`` is now ``CONVERTER_IM_CONVERT_PATH``
|
||||
+ ``CONVERTER_IDENTIFY_PATH`` is now ``CONVERTER_IM_IDENTIFY_PATH``
|
||||
|
||||
- Added options:
|
||||
|
||||
+ ``CONVERTER_GM_PATH`` - File path to graphicsmagick's program.
|
||||
+ ``CONVERTER_GRAPHICS_BACKEND`` - Backend to use: ``ImageMagick`` or
|
||||
``GraphicMagick``
|
||||
|
||||
* Raise ImportError and notify user when specifying a non existant
|
||||
converter graphics backend
|
||||
* Fixed issue #4, avoid circular import in permissions/__init__.py
|
||||
* Add a user to a default role only when the user is created
|
||||
* Added total page count to statistics view
|
||||
* Added support to disable the default scrolling JS code included in
|
||||
web_theme app, saving some KBs in transfer
|
||||
* Clear last ocr results when requeueing a document
|
||||
* Removed the 'exists' column in document list view, diagnostics
|
||||
superceded this
|
||||
* Added 3rd party sendfile app (support apache's X-sendfile)
|
||||
* Updated the get_document_image view to use the new sendfile app
|
||||
* Fixed the issue of the strip spaces middleware conflicting with
|
||||
downloads
|
||||
* Removed custom IE9 tags
|
||||
* Closed Issue #6
|
||||
* Allow deletion of non existing documents from OCR queue
|
||||
* Allow OCR requeue of pending documents
|
||||
* Invalid page numbers now raise Http404, not found instead of error
|
||||
* Added an additional check to lower the chance of OCR race conditions
|
||||
between nodes
|
||||
* Introduce a random delay to each node to further reduce the chance of
|
||||
a race condition, until row locking can be implemented or is
|
||||
implemented by Django
|
||||
* Moved navigation code to its own app
|
||||
* Reimplemented OCR delay code, only delay new document
|
||||
Added a new field: delay, update your database schema accordingly
|
||||
* Made the concurrent ocr code more granular, per node, every node can
|
||||
handle different amounts of concurrent ocr tasks
|
||||
Added a new field: node_name, update your database schema acordinging
|
||||
* Reduced default ocr delay time
|
||||
* Added a new diagnostics tab under the tools menu
|
||||
* Added a new option ``OCR_REPLICATION_DELAY`` to allow the storage some
|
||||
time for replication before attempting to do OCR to a document
|
||||
* Added OCR multi document re-queue and delete support
|
||||
* Added simple statistics page (total used storage, total docs, etc)
|
||||
* Implemented form based and button based multi item actions (button
|
||||
based by default)
|
||||
* Added multi document delete
|
||||
* Fixed a few HTML validation errors
|
||||
* Issues are now tracked using github
|
||||
* Added indexing flags to ocr model
|
||||
* Small optimization in document list view
|
||||
* Small search optimization
|
||||
* Display "DEBUG mode" string in title if ``DEBUG`` variable is set to True
|
||||
* Added the fix-permissions bash script under misc/ folder
|
||||
* Plugged another file descriptor leak
|
||||
* Show class name in config settings view
|
||||
* Added missing config option from the setup menu
|
||||
* Close file descriptor to avoid leaks
|
||||
* Don't allow duplicate documents in queues
|
||||
* Don't raise ``PermissionDenied`` exception in ``PermissionDenied middleware``,
|
||||
even while debugging
|
||||
* Fixed page number detection
|
||||
* Created 'simple document' for non technical users with all of a
|
||||
document pages content
|
||||
* Use document preview code for staging file also
|
||||
* Error picture literal name removal
|
||||
* Spanish translation updates
|
||||
* Show document file path in regards of its storage
|
||||
* Added new setting: side bar search box
|
||||
* Implemented new ``PermissioDenied`` exception middleware handler
|
||||
* Permissions app api now returns a ``PermissionDenied`` exception instead
|
||||
of a custom one
|
||||
* Added new 403 error template
|
||||
* Updated the 404 template to display only a not found message
|
||||
* Moved the login required middleware to the common app
|
||||
* Fixed search app's model.objects.filter indentation, improved result
|
||||
count calculation
|
||||
* Added dynamic comparison types to search app
|
||||
* Separated search code from view code
|
||||
* Correctly calculate show result count for multi model searches
|
||||
* Fixed OCR queue list showing wrong thumbnail
|
||||
* Fixed staging file preview
|
||||
* Show current metadata in document upload view sidebar
|
||||
* Show sentry login for admin users
|
||||
* Do not reinitialize document queue and/or queued document on reentry
|
||||
* Try extra hard not to assign same uuid to two documents
|
||||
* Added new transformation preview size setting
|
||||
* Renamed document queue state links
|
||||
* Changed ocr status display sidebar from form based to text based
|
||||
* Added document action to clear all the document's page transformations
|
||||
* Allow search across related fields
|
||||
* Optimzed search for speed and memory footprint
|
||||
* Added ``LIMIT`` setting to search
|
||||
* Show search elapsed time on result page
|
||||
* Converter now differentiates between unknown file format and convert
|
||||
errors
|
||||
* Close file descriptors when executing external programs to
|
||||
prevent/reduce file descriptior leaks
|
||||
* Improved exception handling of external programs
|
||||
* Show document thumbnail in document ocr queue list
|
||||
* Make ocr document date submitted column non breakable
|
||||
* Fix permissions, directories set to mode 755 and files to mode 644
|
||||
* Try to fix issue #2, "random ORM field error on search while doing OCR"
|
||||
* Added configurable location setting for file based storage
|
||||
* Prepend storage name to differentiate config options
|
||||
* Fixed duplicated document search
|
||||
* Optimized document duplicate search
|
||||
* Added locale middleware, menu bar language switching works now
|
||||
* Only show language selection list if localemiddleware is active
|
||||
* Spanish translation updates
|
||||
* Added links, views and permissions to disable or enable an OCR queue
|
||||
* Enabled Django's template caching
|
||||
* Added document queue property side bar window to the document queue
|
||||
list view
|
||||
* Added HTML spaceless middleware to remove whitespace in HTML code
|
||||
* If current user is superuser or staff show thumbnail & preview
|
||||
generation error messages
|
||||
* Added a setting to show document thumbnail in metadata group list
|
||||
* Started adding configurations setting descriptions
|
||||
* Initial GridFS storage support
|
||||
* Implemented size and delete methods for GridFS
|
||||
* Implement GridFS storage user settings
|
||||
* Added document link in the OCR document queue list
|
||||
* Link to manually re queue failed OCR
|
||||
* Don't separate links (encose object list links with white-space:
|
||||
nowrap;)
|
||||
* Added document description to the field search list
|
||||
* Sort OCR queued documents according to submitted date & time
|
||||
* Document filesystem serving is now a separate app
|
||||
|
||||
- Steps to update (Some warnings may be returned, but these are not
|
||||
fatal as they might be related to missing metadata in some documents):
|
||||
|
||||
+ rename the following settings:
|
||||
|
||||
+ ``DOCUMENTS_FILESYSTEM_FILESERVING_ENABLE`` to ``FILESYSTEM_FILESERVING_ENABLE``
|
||||
+ ``DOCUMENTS_FILESYSTEM_FILESERVING_PATH`` to ``FILESYSTEM_FILESERVING_PATH``
|
||||
+ ``DOCUMENTS_FILESYSTEM_SLUGIFY_PATHS`` to ``FILESYSTEM_SLUGIFY_PATHS``
|
||||
+ ``DOCUMENTS_FILESYSTEM_MAX_RENAME_COUNT`` to ``FILESYSTEM_MAX_RENAME_COUNT``
|
||||
|
||||
+ Do a ./manage.py syncdb
|
||||
+ Execute 'Recreate index links' locate in the tools menu
|
||||
+ Wait a few minutes
|
||||
|
||||
* Added per document duplicate search and a tools menu option to seach
|
||||
all duplicated documents
|
||||
* Added document tool that deletes and re-creates all documents
|
||||
filesystem links
|
||||
* Increased document's and document metadata index filename field's size
|
||||
to 255 characters
|
||||
* Added sentry to monitor and store error for later debugging
|
||||
* Zip files can now be uncompressed in memory and their content uploaded
|
||||
individually in one step
|
||||
* Added support for concurrent, queued OCR processing using celery
|
||||
* Apply default transformations to document before OCR
|
||||
* Added unpaper to the OCR convertion pipe
|
||||
* Added views to create, edit and grant/revoke permissions to roles
|
||||
* Added multipage documents support (only tested on pdfs)
|
||||
|
||||
- To update a previous database do: [d.update_page_count() for d in Document.objects.all()]
|
||||
|
||||
* Added support for document page transformation (no GUI yet)
|
||||
* Added permissions and roles support
|
||||
* Added python-magic for smarter MIME type detection
|
||||
(https://github.com/ahupp/python-magic).
|
||||
* Added a new Document model field: file_mime_encoding.
|
||||
* Show only document metadata in document list view.
|
||||
* If one document type exists, the create document wizard skips the
|
||||
first step.
|
||||
* Changed to a liquid css grid
|
||||
* Added the ability to group documents by their metadata
|
||||
* New abstracted options to adjust document conversion quality (default,
|
||||
low, high)
|
||||
@@ -1,32 +0,0 @@
|
||||
Version 0.7.3
|
||||
-------------
|
||||
* Refactored main menu navigation and converted all apps to this new
|
||||
system
|
||||
* Multi item links are now displayed on top of generic lists as well as
|
||||
on the bottom
|
||||
* Spanish translation updates
|
||||
* Updated requirements to use the latest development version of
|
||||
django-mptt
|
||||
* Improved user folder document removal views
|
||||
* Added ability to specify default metadata or metadataset per
|
||||
document type
|
||||
* Converted filename handling to use os.path library for improved
|
||||
portability
|
||||
* Added edit source object attribute difference detection and logging
|
||||
to history app
|
||||
* Missing metadata type in a document during a multi document editing doesn't raise errors anymore.
|
||||
|
||||
- This allows for multi document heterogeneous metadata editing in a single step.
|
||||
|
||||
* Added document multi item links in search results
|
||||
|
||||
- Direct editing can be done from the search result list
|
||||
|
||||
* Permissions are now grouped and assigned a group name
|
||||
* Improved role management views
|
||||
* Document type is now an optional document property
|
||||
|
||||
- Documents can be created without an explicit document type
|
||||
|
||||
* Added support for per user staging directories
|
||||
* Updated logos
|
||||
@@ -1,6 +0,0 @@
|
||||
Version 0.7.4
|
||||
-------------
|
||||
* Renamed 'secondary actions' to 'secondary menu'
|
||||
* Added document type setup views to the setup menu
|
||||
* Added document type file name editing views to the setup menu
|
||||
* Fixed document queue properties sidebar template not showing
|
||||
@@ -1,16 +0,0 @@
|
||||
Version 0.7.5
|
||||
-------------
|
||||
* Added a help messages to the sidebar of some views
|
||||
* Renamed some forms submit button to more intuitive one
|
||||
|
||||
- 'Search' on the submit button of the search form
|
||||
- 'Next step' on the document creation wizard
|
||||
|
||||
* Added view to list supported file formats and reported by the
|
||||
converter backend
|
||||
* Added redirection support to multi object action views
|
||||
* Renamed 'document list' link to 'all documents' and
|
||||
'recent document list' to 'recent documents'
|
||||
* Removed 'change password' link next to the current user's name and
|
||||
added a few views to handle the current user's password, details and
|
||||
details editing
|
||||
@@ -1,23 +0,0 @@
|
||||
Version 0.7.6
|
||||
-------------
|
||||
* Added recent searches per user support
|
||||
|
||||
- The ammount of searches stored is controlled by the setup option
|
||||
``SEARCH_RECENT_COUNT``
|
||||
|
||||
* The document page zoom button are now disabled when reaching the minimum
|
||||
or maximum zoom level
|
||||
* The document page navigation links are now disabled when view the first
|
||||
and last page of a document
|
||||
* Document page title now displays the current page vs the total page
|
||||
count
|
||||
* Document page title now displays the current zoom level and rotation
|
||||
degrees
|
||||
* Added means set the expansion compressed files during document creation,
|
||||
via web interface removing the need for the configuration options:
|
||||
``UNCOMPRESS_COMPRESSED_LOCAL_FILES`` and ``UNCOMPRESS_COMPRESSED_STAGING_FILES``
|
||||
* Added 'search again' button to the advances search results view
|
||||
* Implementes an advanced search feature, which allows for individual field terms
|
||||
|
||||
- Search fields supported: document type, MIME type, filename,
|
||||
extension, metadata values, content, description, tags, comments
|
||||
@@ -1,13 +0,0 @@
|
||||
Version 0.7
|
||||
-----------
|
||||
* Added confirmation dialogs icons
|
||||
* Added comment app with support for adding and deleting comments to
|
||||
and from documents
|
||||
* Updated requirements files as per issue #9
|
||||
* Show tagged item count in the tag list view
|
||||
* Show tagget document link in the tags subtemplate of documents
|
||||
* Made comment sorted by oldest first, made comment subtemplate
|
||||
scrollable
|
||||
* Rename comments app to document_comment to avoid conflict with
|
||||
Django's comment app
|
||||
* Made document comments searchable
|
||||
@@ -1,32 +0,0 @@
|
||||
Version 0.8.1
|
||||
-------------
|
||||
* Tags can now also be created from the main menu
|
||||
* Added item count column to index instance list view
|
||||
* Updated document indexing widget to show different icon for indexes or
|
||||
indexes that contain documents
|
||||
* Replaced the Textarea widget with the TextAreaDiv widget on document
|
||||
and document page detail views
|
||||
|
||||
- This change will allow highlighting search terms in the future
|
||||
|
||||
* Unknown document file format page count now defaults to 1
|
||||
|
||||
- When uploading documents which the selected converted backend doesn't
|
||||
understand, the total page count will fallback to 1 page to at least
|
||||
show some data, and a comment will be automatically added to the
|
||||
document description
|
||||
|
||||
* Added new MAIN_DISABLE_ICONS to turn off all icons
|
||||
|
||||
- This options works very well when using the ``default`` theme
|
||||
|
||||
* The default theme is now ``activo``
|
||||
* Improved document page views and document page transformation views
|
||||
navigation
|
||||
* Added OCR queue document transformations
|
||||
|
||||
- Use this for doing resizing or rotation fixes to improve OCR results
|
||||
|
||||
* Added reset view link to the document page view to reset the zoom
|
||||
level and page rotation
|
||||
* Staging files now show a thumbnail preview instead of preview link
|
||||
@@ -1,24 +0,0 @@
|
||||
Version 0.8.2
|
||||
-------------
|
||||
* Moved code to Django 1.3
|
||||
|
||||
- Users have to use the ``collectstatic`` management command::
|
||||
|
||||
$ ./manage.py collectstatic
|
||||
|
||||
- The ``site_media`` directory is no more, users must update the media
|
||||
serving directives in current deployments and point them to the
|
||||
``static`` directory instead
|
||||
|
||||
* The changelog is now available under the ``about`` main menu
|
||||
* ``Grappelli`` no longer bundled with Mayan
|
||||
|
||||
- Users must install Grappelli or execute::
|
||||
|
||||
$ pip install --upgrade -r requirements/production.txt
|
||||
|
||||
* Even easier UI language switching
|
||||
* Added email login method, to enable it, set::
|
||||
|
||||
AUTHENTICATION_BACKENDS = ('common.auth.email_auth_backend.EmailAuthBackend',)
|
||||
COMMON_LOGIN_METHOD = 'email'
|
||||
@@ -1,29 +0,0 @@
|
||||
Version 0.8.3
|
||||
-------------
|
||||
* Added a Contributors file under the docs directory
|
||||
* Moved the document grouping subtemplate windows into a document
|
||||
information tab
|
||||
* Change the mode the setup options are shown, opting to use a more of a
|
||||
dashboard style now
|
||||
* Changed the tool menu to use the same button layout of the setup menu
|
||||
* Moved OCR related handling to the tools main menu
|
||||
* Improved the metadata type and metadata set selection widget during
|
||||
the document upload wizard
|
||||
* Added a view to the about menu to read the LICENSE file included with
|
||||
Mayan
|
||||
* Added converter backend agnostic image file format descriptions
|
||||
* Disable whitelist and blacklist temporarily, removed document_type
|
||||
field from interactive sources
|
||||
* Fully disabled watch folders until they are working correctly
|
||||
* Updated the project title to 'Mayan EDMS'
|
||||
* If ghostscript is installed add PDF and PS to the list of file formats
|
||||
by the python converter backend
|
||||
* Use Pillow (http://pypi.python.org/pypi/Pillow) instead of PIL
|
||||
|
||||
- Pillow is a fork of PIL with several updated including better jpeg and png library detection
|
||||
- Users must uninstall PIL before installing Pillow
|
||||
|
||||
* Updated the static media url in the login excempt url list
|
||||
* Added remediatory code to sidestep issue #10 caused by DjangoZoom's deployment script executing the collectstatic command before creating the database structure with syncdb. Thanks to Joost Cassee (https://github.com/jcassee) for reporting this one.
|
||||
* Perform extra validation of the image cache directory and fallback to creating a temporary directory on validation failure
|
||||
* Fixed a source creation bug, that caused invalid links to a non existing source transformation to appear on the sidebar
|
||||
@@ -1,62 +0,0 @@
|
||||
Version 0.8
|
||||
-----------
|
||||
* Distributed OCR queue processing via celery is disabled for the time
|
||||
being
|
||||
* Added support for local scheduling of jobs
|
||||
|
||||
- This addition removes celery beat requirement, and make is optional
|
||||
|
||||
* Improve link highlighting
|
||||
* Navigation improvements
|
||||
* Documents with an unknown file format now display a mime type place
|
||||
holder icon instead of a error icon
|
||||
* Mayan now does pre caching of document visual representation improving
|
||||
overall thumbnail, preview and display speed
|
||||
|
||||
- Page image rotation and zooming is faster too with this update
|
||||
|
||||
* Removed all QUALITY related settings
|
||||
* ``COMMON_TEMPORARY_DIRECTORY`` is now validated when Mayan starts and if
|
||||
not valid falls back to creating it's own temporary folder
|
||||
* Added PDF file support to the python converter backend via ghostscript
|
||||
|
||||
- This requires the installation of:
|
||||
|
||||
+ ghostscript python package
|
||||
+ ghostscript system binaries and libraries
|
||||
|
||||
* Added PDF text parsing support to the python converter backend
|
||||
|
||||
- This requires the installation of:
|
||||
|
||||
+ pdfminer python package
|
||||
|
||||
* Added PDF page count support to the python converter backend
|
||||
* Added python only converter backend supporting resizing, zooming and rotation
|
||||
|
||||
- This backend required the installation of the python image library (PIL)
|
||||
- This backend is useful when Graphicsmagick or Imagemagick can not be installed for some reason
|
||||
- If understand fewer file format than the other 2 backends
|
||||
|
||||
* Added default tranformation support to document sources
|
||||
* Removed ``DOCUMENT_DEFAULT_TRANSFORMATIONS`` setup options
|
||||
* Document sources are now defined via a series of view under the setup main menu
|
||||
* This removes all the ``DOCUMENT_STAGING`` related setup options
|
||||
|
||||
- Two document source types are supported local (via a web form),
|
||||
and staging
|
||||
- However multiple document sources can be defined each with their own
|
||||
set of transformations and default metadata selection
|
||||
|
||||
* Use ``python-magic`` to determine a document's mimetype otherwise
|
||||
fallback to use python's mimetypes library
|
||||
* Remove the included sources for ``python-magic`` instead it is now fetched
|
||||
from github by pip
|
||||
* Removed the document subtemplates and changed to a tabbed style
|
||||
* Added link to document index content view to navigate the tree upwards
|
||||
* Added new option ``MAIN_DISABLE_HOME_VIEW`` to disable the home main menu
|
||||
tab and save some space
|
||||
* Added new option to the web theme app, ``WEB_THEME_VERBOSE_LOGIN``
|
||||
that display a more information on the login screen
|
||||
(version, copyright, logos)
|
||||
* Added a confirmation dialog to the document tag removal view
|
||||
@@ -1,7 +0,0 @@
|
||||
Version 0.9.1
|
||||
-------------
|
||||
* Added handling percent encoded unicode query strings in search URL,
|
||||
thanks to Sergei Glita for reporting.
|
||||
* Added a FAQ explaing how to fix MySQL collation related error when
|
||||
doing searches also thanks to Sergei Glita for
|
||||
reporting this one.
|
||||
@@ -1,44 +0,0 @@
|
||||
Version 0.9
|
||||
-----------
|
||||
* Simplified getting mimetypes from files by merging 2 implementations
|
||||
(document based and file based)
|
||||
* Updated python converter backend, document model and staging module
|
||||
to use the new get_mimetype API
|
||||
* Only allow clickable thumbnails for document and staging files with a
|
||||
valid image
|
||||
* Removed tag count from the group document list widget to conserve
|
||||
vertical space
|
||||
* Updated required Django version to 1.3.1
|
||||
* Removed the included 3rd party module django-sendfile, now added to
|
||||
the requirement files.
|
||||
|
||||
* User should do a pip install -r requirements/production.txt to update
|
||||
|
||||
* Changed to Semantic Versioning (http://semver.org/), with
|
||||
recommendations 7, 8 and 9 causing the most effect in the versioning number.
|
||||
* Added Russian locale post OCR cleanup backend Sergei Glita
|
||||
* Reduced severity of the messages displayed when no OCR cleanup backend
|
||||
is found for a language
|
||||
* Complete Portuguese translation (Emerson Soares and Renata Oliveira)
|
||||
* Complete Russian translation Sergei Glita)
|
||||
* Added animate.css to use CSS to animate flash messages with better
|
||||
fallback on non JS browsers
|
||||
* The admin and sentry links are no longer hard-coded (Meurig Freeman)
|
||||
* Improved appearance of the document tag widget
|
||||
(https://p.twimg.com/Ac0Q0b-CAAE1lfA.png:large)
|
||||
* Added django_compress and cssmin to the requirements files and enabled
|
||||
django_compress for CSS and JS files
|
||||
* Added granting and revoking permission methods to the permission model
|
||||
* Correctly calculate the mimetype icons paths when on development mode
|
||||
* Added a new more comprehensive method of passing multiple variables
|
||||
per item in multi item selection views
|
||||
* Used new multi parameter passing method to improve the usability of
|
||||
the grant/revoke permission view, thanks to Cezar Jenkins
|
||||
(https://twitter.com/#!/emperorcezar) for the suggestion
|
||||
* Added step to the documentation explaining how to install Mayan EDMS
|
||||
on Webfaction
|
||||
* Added an entry in the documentation to the screencast explaining how
|
||||
to install Mayan EDMS on DjangoZoom
|
||||
* Added required changes to add Mayan EDMS to Transifex.com
|
||||
* Fixed the apache contrib file static file directory name
|
||||
* Added improved documentation
|
||||
@@ -1,190 +0,0 @@
|
||||
=============================
|
||||
Mayan EDMS v1.0 release notes
|
||||
=============================
|
||||
|
||||
*August 26, 2014*
|
||||
|
||||
Welcome to Mayan EDMS v1.0!
|
||||
|
||||
Overview
|
||||
========
|
||||
After a year of low activity the focus of this release was to get the code
|
||||
updated to work with the most recent version of Django and the most recent
|
||||
version of the dependencies Mayan EDMS uses. The goal was to have a strong
|
||||
and stable 1.0 release so reduction, trimming, warning reductions and bug
|
||||
fixes were the primary focus of this cycle. Because of this not much
|
||||
emphasis was placed on adding new features, or at least new features
|
||||
that could have the potential to break things.
|
||||
|
||||
What's new in Mayan EDMS v1.0
|
||||
=============================
|
||||
|
||||
New home
|
||||
~~~~~~~~
|
||||
The growth and reach of the project has necessitaded for a while the move
|
||||
of the project to its own organization in Github. This move has finally been
|
||||
done, the new URL of the project is: https://github.com/mayan-edms/mayan-edms
|
||||
|
||||
Django 1.6
|
||||
~~~~~~~~~~
|
||||
This release updates the required version of Django to 1.6, bringing with it
|
||||
not only new features, but also a lot of security updates, a new project
|
||||
directory structure and new deployment methods.
|
||||
|
||||
Translation updates
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
The translation for all languages were synchronized to the latest transifex project sources.
|
||||
Translation completion as reported by Transifex:
|
||||
|
||||
* English - 100%
|
||||
* Spanish - 100%
|
||||
* Arabic - 96%
|
||||
* Bosnian - 96%
|
||||
* French - 96%
|
||||
* German - 96%
|
||||
* Romanian - 96%
|
||||
* Russian - 96%
|
||||
* Italian - 77%
|
||||
* Portuguese - 76%
|
||||
* Dutch - 68%
|
||||
* Portugese (Brazil) - 67%
|
||||
* Bulgarian - 62%
|
||||
* Danish - 42%
|
||||
* Vietnamese - 40%
|
||||
* Polish - 39%
|
||||
* Hungarian - 27%
|
||||
* Indonesian - 18%
|
||||
* Slovenian - 17%
|
||||
* Persian - 6%
|
||||
* Croatian - 3%
|
||||
* Turkish - 3%
|
||||
|
||||
Model updates
|
||||
~~~~~~~~~~~~~
|
||||
There were some convenience properties created to allow quick access to
|
||||
a document's version and pages. These custom properties were removed and
|
||||
an official method to access these properties as provided by Django is now
|
||||
used.
|
||||
|
||||
Source code improvements
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
A circular import of metadata and document_index apps code from the documents app
|
||||
was removed. Document index updates are now handled via signals, not called
|
||||
directly as before. Hundreds of PEP8 style fixes, unused import removals,
|
||||
unused variables removals and removal of remarked or unused code. Removal of the
|
||||
DEVELOPMENT flag (was used to trigger static media serving during development),
|
||||
this is now handled by the DEBUG flag. The DEBUG flag is now set to `True` by
|
||||
default as per Django 1.6 defaults. Removed usage of Django's JSON libraries
|
||||
using Python's JSON library instead. Update of time and date use to use Django's
|
||||
new timezone aware data and time handling. Removal of custom code in favor of using
|
||||
modules provided by Django or by existing 3rd party libraries. Unification of code
|
||||
used for equal or similar purpose in various modules.
|
||||
|
||||
Removal of included 3rd party modules
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
One last 3rd party module was included with the source code of Mayan EDMS.
|
||||
This module is now available on PyPI and fetched during the installation instead
|
||||
of being included.
|
||||
|
||||
Automatic testing and code coverage check
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Some initial tests were added, which will help with the detection of
|
||||
regressions or bugs when adding new features. More tests are needed, but
|
||||
the initial work has being started.
|
||||
|
||||
Update of required modules and libraries versions
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Many of the required modules and libraries have been updated to a more
|
||||
recent version if not to their most recent released version.
|
||||
|
||||
Database connection leaks
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Stale database connection being left open by scheduler tasks are now explictly
|
||||
closed. This avoids consumption of the pool of database connections, increases
|
||||
stability and reduces memory usage.
|
||||
|
||||
Deletion of detached signatures
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Detached signatures can now be deleted, if accidentally added to the wrong document.
|
||||
|
||||
Removal of fabric based installations
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
These files are now part of their own project and located at https://github.com/mayan-edms/mayan-fabric
|
||||
|
||||
Pluggable OCR backends
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
A commonly requested feature, it is now possible to write backends drivers
|
||||
to do document OCR using software or services other than Tesseract.
|
||||
|
||||
OCR improvements
|
||||
~~~~~~~~~~~~~~~~
|
||||
OCR queue state is now reset when reloading Mayan EMDS, avoiding the OCR queue
|
||||
to remain locked. `unpaper` binary is now an optional pre OCR requirement, the OCR
|
||||
queue will now continue working is `unpaper` is not installed. Addition of post
|
||||
OCR processing support for French and German.
|
||||
|
||||
License change
|
||||
~~~~~~~~~~~~~~
|
||||
Mayan EDMS is now licensed under the Apache 2.0 license. This means many
|
||||
things but the main change is that inclusion of Mayan EDMS into
|
||||
commercial products is now explicitly allowed.
|
||||
|
||||
PyPI package
|
||||
~~~~~~~~~~~~
|
||||
Mayan EDMS has been packaged and submitted to the PyPI_ Python Package Index
|
||||
making it even easier to install and use.
|
||||
|
||||
New REST API
|
||||
~~~~~~~~~~~~
|
||||
This release feature a completely new REST API and automatic API documentation.
|
||||
This new API is also used internally by *Mayan EDMS* itself.
|
||||
|
||||
Other changes
|
||||
~~~~~~~~~~~~~
|
||||
More office document types are now recognized and supported. More file types are now
|
||||
supported as text files and properly previewed and parsed. Removal of the legacy
|
||||
runserver.sh and runserver_plus.sh scripts. New document preview generation and
|
||||
display pipeline, faster, simpler. Inclusion of a proof of concept compressed storage
|
||||
backend.
|
||||
|
||||
Upgrading from a previous version
|
||||
=================================
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py migrate acls 0001 --fake
|
||||
$ mayan-edms.py migrate taggit 0001 --fake
|
||||
$ mayan-edms.py migrate ocr 0001 --fake
|
||||
$ mayan-edms.py migrate
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
* If using the SQLite3 database option, rename the file named `mayan.sqlite` file to `db.sqlite3` and
|
||||
move it to the new `media` provided folder.
|
||||
* Also move to the `media` folder any `gpg_home`, `document_storage` and `image_cache` folders
|
||||
from your previous installation.
|
||||
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
* None
|
||||
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,72 +0,0 @@
|
||||
===============================
|
||||
Mayan EDMS v1.1.1 release notes
|
||||
===============================
|
||||
|
||||
Released: May 21, 2015
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
Update to Django 1.6.11
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
The required version of Django has been updated to version 1.6.11_.
|
||||
|
||||
Minor changes
|
||||
~~~~~~~~~~~~~
|
||||
- Fix make_dist.sh script
|
||||
- Add test for issue #163
|
||||
- Activate tests for the sources app
|
||||
- Removal of the registration app
|
||||
- New simplified official project description
|
||||
- Improvements to the index admin interface
|
||||
- Removal of installation statistics gathering
|
||||
- Remove unused folder tag
|
||||
- Fix usage of ugettext to ugettext_lazy
|
||||
- Increase size of the lock name field
|
||||
- New style documentation
|
||||
|
||||
Upgrading from a previous version
|
||||
=================================
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install mayan-edms==1.1.1
|
||||
|
||||
the requirements will also be updated.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
None
|
||||
|
||||
.. _1.6.11: https://docs.djangoproject.com/en/1.8/releases/1.6.11/
|
||||
@@ -1,372 +0,0 @@
|
||||
=============================
|
||||
Mayan EDMS v1.1 release notes
|
||||
=============================
|
||||
|
||||
Released: February 10, 2015
|
||||
|
||||
Welcome to Mayan EDMS v1.1
|
||||
|
||||
|
||||
What's new in Mayan EDMS v1.1
|
||||
=============================
|
||||
|
||||
Celery
|
||||
~~~~~~
|
||||
All background tasks processing has been converted to use Celery_. By default
|
||||
Mayan EDMS runs in "Eager" until a broker and result backend are configured
|
||||
as per `Celery's documentation`_. This change made the built-in scheduler and
|
||||
job_processing apps obsolete, both were removed.
|
||||
|
||||
|
||||
Views namespaces
|
||||
~~~~~~~~~~~~~~~~
|
||||
All views are namespaced_ with the name of the app which defines them. If you have
|
||||
developed 3rd party apps for Mayan EDMS be sure to update any reference to a view
|
||||
by prepending the app name to the view name.
|
||||
|
||||
|
||||
Removal of the splash screen
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
The static image home screen has been replaced with a quick links view, showing
|
||||
the most used actions: Uploading documents, viewing recent documents, viewing
|
||||
all documents and searching documents.
|
||||
|
||||
|
||||
Sending and receiving documents via email
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
A link or entire documents can be sent as attachments via email. Documents can
|
||||
also be received via email with the addition of two document sources named IMAP and POP3
|
||||
which correspond to the mail protocol used to fetch the documents. Read Django's
|
||||
`email configuration settings documentation`_ for more details on how to set up
|
||||
mail serving.
|
||||
|
||||
|
||||
Update to Django 1.6.8
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
Mayan EDMS has been updated to use Django 1.6.8.
|
||||
|
||||
|
||||
Events app
|
||||
~~~~~~~~~~
|
||||
The built-in history app has been removed in favor of a new events wrapper app
|
||||
for `Django activity stream`_
|
||||
|
||||
|
||||
Watch folders
|
||||
~~~~~~~~~~~~~
|
||||
Filesystem folders can be monitored for change and their files automatically
|
||||
uploaded as documents in Mayan EDMS.
|
||||
|
||||
|
||||
Vagrant file included
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
A vagrant file is now included to allow developers to provision a virtual machine
|
||||
with the latest development version of Mayan EDMS.
|
||||
|
||||
|
||||
User locale profile (language and timezone)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Interface language and locale setting can now be setup for each user and are not
|
||||
installation wide as before. Date and times offsets are automatically ajusted to
|
||||
each user's timezone settings.
|
||||
|
||||
|
||||
Document states
|
||||
~~~~~~~~~~~~~~~
|
||||
A new simple workflow app that can represent document states has been included.
|
||||
|
||||
|
||||
Explicit document types needed per index
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Indexes can now be tied to document types, eliminating the need to update
|
||||
indexes for every document update. Indexes will only update when a document of
|
||||
the type to which they are associated is updated.
|
||||
|
||||
|
||||
Optional and required metadata types
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Metadata types can now be assigned in two ways to documents types, as optional or
|
||||
required. Values for required metadata types as the name implies, must be entered
|
||||
for documents to be able to be uploaded. Optional metadata types on the other hand
|
||||
can be left blank by the user.
|
||||
|
||||
|
||||
Bulk document type change
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
It is now possible to change the document type of previously uploaded documents.
|
||||
When the document type of a document is changed the metadata values are reset and
|
||||
the metadata types of the new document type are automatically assigned.
|
||||
|
||||
|
||||
New release cycle
|
||||
~~~~~~~~~~~~~~~~~
|
||||
Starting with this version a new release cycle methodology will come into effect.
|
||||
The goal of this release cycle is to allow two series of versions of Mayan EDMS to be
|
||||
active at a given time: A new major version with new functionality and a minor version
|
||||
providing upgrades and fixes. This release (1.1) will be active and supported
|
||||
during releases of versions 2.x, but will go into end-of-life as soon as
|
||||
version 3.0 is released, at which time version series 2.x will go into
|
||||
maintenance mode.
|
||||
|
||||
|
||||
Deprecation of Python 2.6
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Series 1.0 of Mayan EDMS will be the last series supporting Python 2.6. Series
|
||||
2.0 will be using Django 1.7.x which itself requires Python 2.7 or later.
|
||||
|
||||
|
||||
Improved testings
|
||||
~~~~~~~~~~~~~~~~~
|
||||
Mayan EDMS is now automatically tested against SQLite, MySQL and PostgreSQL.
|
||||
|
||||
|
||||
API updates
|
||||
~~~~~~~~~~~
|
||||
Many new API endpoints have been added exposing the majority of Mayan EDMS functionality.
|
||||
|
||||
|
||||
Messages contextual improvements
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Many updates and simplifications were made to the source text messages to reduce the
|
||||
difficulty of translating Mayan EDMS and maintaing the contextual meaning of the
|
||||
text messages.
|
||||
|
||||
Improved method for custom settings
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Custom settings now use a string based value, it is longer needed to import
|
||||
classes when customizing a setting::
|
||||
|
||||
from custom_app.backends import CustomStorageBackend
|
||||
DOCUMENTS_STORAGE_BACKEND = CustomStorageBackend
|
||||
|
||||
Instead the fully qualified name of the class must be passed as the setting value::
|
||||
|
||||
DOCUMENTS_STORAGE_BACKEND = 'custom_app.backends.CustomStorageBackend'
|
||||
|
||||
|
||||
Removal of the OCR config setting
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
OCR behavior is now a document type property meaning that it can be turned
|
||||
on or off for specific document types.
|
||||
|
||||
|
||||
Per document language setting
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Previously the document language used for OCR was specified for the entire
|
||||
installation. If documents in multiple languages were uploaded some suffered
|
||||
lower success rates. Now the language of each document can be specified.
|
||||
|
||||
|
||||
Metadata validation and parsing support
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
It is now possible to create functions to validate metadata value input or
|
||||
parse and store corrected values. Three sample metadata validations functions
|
||||
are included: ``Parse date and time``, ``Parse date`` and ``Parse time``.
|
||||
|
||||
|
||||
Removal of 960 grid system in favor Pure CSS's grid system
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
By using Pure CSS's columns based grid system, the move towards a
|
||||
Bootstrap UI migration has advanced greatly.
|
||||
|
||||
|
||||
Simplified UI
|
||||
~~~~~~~~~~~~~
|
||||
All user actions as well as the logout button are now under the user functions
|
||||
section.
|
||||
|
||||
|
||||
Stable PDF previews generation
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
The way PDF were being generated has been improved greatly eliminating
|
||||
spurious segmentation faults at the expense of a small speed penalty.
|
||||
|
||||
|
||||
More technical documentation
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Many new sub topics were added to the development section of the documentation
|
||||
to allow developers to better understand the inner workings and philosophies
|
||||
of Mayan EDMS.
|
||||
|
||||
|
||||
Other changes
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
* Removal of the MAIN_SIDE_BAR_SEARCH setting
|
||||
* Removal of THEMES and themes support
|
||||
* Removal of VERBOSE_LOGIN setting
|
||||
* Removal of graphics backend supported file format list view
|
||||
* Removal of the MAIN_DISABLE_ICONS setting
|
||||
* Removal of specialized Sentry support
|
||||
* Removal of the MAIN_ENABLE_SCROLL_JS setting
|
||||
* Remove hardcoded root (/) redirections
|
||||
* Removal of APSCheduler as a requirement
|
||||
* Removal of the scheduled jobs view
|
||||
* Removal of the web_theme app
|
||||
* Removal of the sources icon selection support
|
||||
* Removal of the in-app help panels
|
||||
* Removal of the duplicate document search feature
|
||||
* Removal of filesystem document indexes mirroring feature
|
||||
* Improve sources app model sub classes and inheritance handling
|
||||
* Addition of CORS support to the API
|
||||
|
||||
|
||||
Upgrading from a previous version
|
||||
=================================
|
||||
IMPORTANT! Before running the upgrade make sure none of your documents have
|
||||
duplicated metadata types, meaning that the same metadata type must not appear
|
||||
twice for any given document.
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py migrate dynamic_search 0001 --fake
|
||||
$ mayan-edms.py migrate history 0001 --fake
|
||||
$ mayan-edms.py migrate linking 0001 --fake
|
||||
$ mayan-edms.py migrate lock_manager 0001 --fake
|
||||
$ mayan-edms.py migrate tags 0001 --fake
|
||||
$ mayan-edms.py migrate
|
||||
|
||||
|
||||
During the migration several messages of stale content types can occur:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
The following content types are stale and need to be deleted:
|
||||
|
||||
metadata | documenttypedefaults
|
||||
metadata | metadataset
|
||||
metadata | metadatasetitem
|
||||
ocr | documentqueue
|
||||
ocr | queuedocument
|
||||
sources | watchfolder
|
||||
sources | outofprocess
|
||||
sources | webform
|
||||
sources | stagingfolder
|
||||
tags | tagproperties
|
||||
|
||||
Any objects related to these content types by a foreign key will also
|
||||
be deleted. Are you sure you want to delete these content types?
|
||||
If you're unsure, answer 'no'.
|
||||
|
||||
Type 'yes' to continue, or 'no' to cancel:
|
||||
|
||||
|
||||
You can safely answer "yes".
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
Remove unused dependencies::
|
||||
|
||||
$ pip uninstall APScheduler
|
||||
$ pip uninstall django-taggit
|
||||
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* You will have to redefine your document sources due to the new extended models
|
||||
for this app.
|
||||
* Check your configurations of smart links and indexes to use the newly provided
|
||||
arguments.
|
||||
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* `issue #30 <https://github.com/mayan-edms/mayan-edms/issues/30>`_ Document workflows
|
||||
* `issue #32 <https://github.com/mayan-edms/mayan-edms/issues/32>`_ Watched folders
|
||||
* `issue #34 <https://github.com/mayan-edms/mayan-edms/issues/34>`_ Postprocessing document queue
|
||||
* `issue #35 <https://github.com/mayan-edms/mayan-edms/issues/35>`_ Metadata validation
|
||||
* `issue #37 <https://github.com/mayan-edms/mayan-edms/issues/37>`_ Add from __future__ import unicode_literals
|
||||
* `issue #39 <https://github.com/mayan-edms/mayan-edms/issues/39>`_ Capitalization of messages
|
||||
* `issue #40 <https://github.com/mayan-edms/mayan-edms/issues/40>`_ Update references to root ('/') path
|
||||
* `issue #46 <https://github.com/mayan-edms/mayan-edms/issues/46>`_ Advanced search past 1st page
|
||||
* `issue #49 <https://github.com/mayan-edms/mayan-edms/issues/49>`_ Problems with large pdf files
|
||||
* `issue #50 <https://github.com/mayan-edms/mayan-edms/issues/50>`_ raise CommandNotFound(path)
|
||||
* `issue #51 <https://github.com/mayan-edms/mayan-edms/issues/51>`_ Search with ANONYMOUS error
|
||||
* `issue #55 <https://github.com/mayan-edms/mayan-edms/issues/55>`_ Document approval cicle?
|
||||
* `issue #56 <https://github.com/mayan-edms/mayan-edms/issues/56>`_ Removal of non essential features, views, models
|
||||
* `issue #57 <https://github.com/mayan-edms/mayan-edms/issues/57>`_ Migrate to Celery for task query and periodic tasks
|
||||
* `issue #64 <https://github.com/mayan-edms/mayan-edms/issues/64>`_ Pluralize messages properly
|
||||
* `issue #65 <https://github.com/mayan-edms/mayan-edms/issues/65>`_ Backport the ability to receive documents via email
|
||||
* `issue #66 <https://github.com/mayan-edms/mayan-edms/issues/66>`_ Python 3 compatibility: Add from __future__ import unicode_literals and remove all u''
|
||||
* `issue #68 <https://github.com/mayan-edms/mayan-edms/issues/68>`_ Revise and update the use gettext vs. gettext_lazy
|
||||
* `issue #69 <https://github.com/mayan-edms/mayan-edms/issues/69>`_ Feature removal: remove "Unregistered" message from the title bar
|
||||
* `issue #71 <https://github.com/mayan-edms/mayan-edms/issues/71>`_ Add retry support to the converter task
|
||||
* `issue #72 <https://github.com/mayan-edms/mayan-edms/issues/72>`_ Delete unused static icons
|
||||
* `issue #74 <https://github.com/mayan-edms/mayan-edms/issues/74>`_ Cache a document's first document version
|
||||
* `issue #75 <https://github.com/mayan-edms/mayan-edms/issues/75>`_ Move automatic OCR queueing from a configuration settings to a property of Document Type model
|
||||
* `issue #77 <https://github.com/mayan-edms/mayan-edms/issues/77>`_ Add document view permission support to the search app
|
||||
* `issue #78 <https://github.com/mayan-edms/mayan-edms/issues/78>`_ COMMON_TEMPORARY_DIRECTORY seems not to be used everywhere
|
||||
* `issue #79 <https://github.com/mayan-edms/mayan-edms/issues/79>`_ Error installing
|
||||
* `issue #82 <https://github.com/mayan-edms/mayan-edms/issues/82>`_ Make document type a required field
|
||||
* `issue #83 <https://github.com/mayan-edms/mayan-edms/issues/83>`_ Simplify source app views and navigation
|
||||
* `issue #84 <https://github.com/mayan-edms/mayan-edms/issues/84>`_ Remove template context variable 'object_name' to improve translations
|
||||
* `issue #85 <https://github.com/mayan-edms/mayan-edms/issues/85>`_ Reset page count for a single document
|
||||
* `issue #86 <https://github.com/mayan-edms/mayan-edms/issues/86>`_ Move migrations to new 'south_migrations' folders
|
||||
* `issue #87 <https://github.com/mayan-edms/mayan-edms/issues/87>`_ Per document language selection
|
||||
* `issue #88 <https://github.com/mayan-edms/mayan-edms/issues/88>`_ Remove metadata type selection from the upload wizard
|
||||
* `issue #89 <https://github.com/mayan-edms/mayan-edms/issues/89>`_ Allow metadata types to be required for specific document types
|
||||
* `issue #90 <https://github.com/mayan-edms/mayan-edms/issues/90>`_ Remove the app_registry app
|
||||
* `issue #91 <https://github.com/mayan-edms/mayan-edms/issues/91>`_ Don't preserve the ?page= URL query string value when switching sources during document upload
|
||||
* `issue #92 <https://github.com/mayan-edms/mayan-edms/issues/92>`_ Make register_multi_item_links class aware
|
||||
* `issue #95 <https://github.com/mayan-edms/mayan-edms/issues/95>`_ Installation error on Mac OSX; OSError: [Errno 2] No such file or directory
|
||||
* `issue #96 <https://github.com/mayan-edms/mayan-edms/issues/96>`_ Remove hard code User model references
|
||||
* `issue #97 <https://github.com/mayan-edms/mayan-edms/issues/97>`_ Make multi item links a drop down list
|
||||
* `issue #104 <https://github.com/mayan-edms/mayan-edms/issues/104>`_ Finish polishing metadata validation patch
|
||||
* `issue #105 <https://github.com/mayan-edms/mayan-edms/issues/105>`_ Tie smart links setups to document types
|
||||
* `issue #106 <https://github.com/mayan-edms/mayan-edms/issues/106>`_ Convert document indexing app actions to Celery
|
||||
* `issue #107 <https://github.com/mayan-edms/mayan-edms/issues/107>`_ Restrict document metadata addition and removal
|
||||
* `issue #108 <https://github.com/mayan-edms/mayan-edms/issues/108>`_ New home screen
|
||||
* `issue #109 <https://github.com/mayan-edms/mayan-edms/issues/109>`_ Add Roles API endpoints
|
||||
* `issue #111 <https://github.com/mayan-edms/mayan-edms/issues/111>`_ Add Checkouts API endpoints
|
||||
* `issue #112 <https://github.com/mayan-edms/mayan-edms/issues/112>`_ Add OCR API endpoints
|
||||
* `issue #114 <https://github.com/mayan-edms/mayan-edms/issues/114>`_ Implement UI language as user preference
|
||||
* `issue #116 <https://github.com/mayan-edms/mayan-edms/issues/116>`_ Add documentation topic explicitly noting the binary requirements
|
||||
* `issue #118 <https://github.com/mayan-edms/mayan-edms/issues/118>`_ When a metadata type is removed from a document type, remove it from all the documents of that type
|
||||
* `issue #119 <https://github.com/mayan-edms/mayan-edms/issues/119>`_ When a required metadata type is added to a document type, add it to all documents of that type
|
||||
* `issue #126 <https://github.com/mayan-edms/mayan-edms/issues/126>`_ Failing migration with SQLite
|
||||
* `issue #127 <https://github.com/mayan-edms/mayan-edms/issues/127>`_ Failing migration with Postgres
|
||||
* `issue #128 <https://github.com/mayan-edms/mayan-edms/issues/128>`_ Add Indexes API endpoints
|
||||
* `issue #129 <https://github.com/mayan-edms/mayan-edms/issues/129>`_ Search api shouldn't memorize requested page as part of the query
|
||||
* `issue #130 <https://github.com/mayan-edms/mayan-edms/issues/130>`_ Users API is not working correctly
|
||||
* `issue #131 <https://github.com/mayan-edms/mayan-edms/issues/131>`_ Is there an API to update a user's password?
|
||||
* `issue #137 <https://github.com/mayan-edms/mayan-edms/issues/137>`_ Enhancement of language selection
|
||||
* `issue #138 <https://github.com/mayan-edms/mayan-edms/issues/138>`_ Possibility to keep zoom factor
|
||||
* `issue #139 <https://github.com/mayan-edms/mayan-edms/issues/139>`_ Translatability of language selection
|
||||
* `issue #140 <https://github.com/mayan-edms/mayan-edms/issues/140>`_ Thumbnail creation for ods crashing
|
||||
* `issue #143 <https://github.com/mayan-edms/mayan-edms/issues/143>`_ Exception Value: 'exceptions.ValueError' object has no attribute 'messages'
|
||||
* `issue #144 <https://github.com/mayan-edms/mayan-edms/issues/144>`_ Behavior of 'Edit metadata' (Recent Documents)
|
||||
* `issue #146 <https://github.com/mayan-edms/mayan-edms/issues/146>`_ Periodic task not initiated for mail boxes and watch folders
|
||||
* `issue #149 <https://github.com/mayan-edms/mayan-edms/issues/149>`_ Attribute error in document download
|
||||
* `issue #150 <https://github.com/mayan-edms/mayan-edms/issues/150>`_ Double second menu entry
|
||||
* `issue #152 <https://github.com/mayan-edms/mayan-edms/issues/152>`_ Document content empty
|
||||
* `issue #153 <https://github.com/mayan-edms/mayan-edms/issues/153>`_ south migration with postgres: documents: 031_remove_orphan_documents
|
||||
* `issue #154 <https://github.com/mayan-edms/mayan-edms/issues/154>`_ south migration with postgres: tags: 0002_auto__add_tag__chg_field_tagproperties_tag
|
||||
* `issue #157 <https://github.com/mayan-edms/mayan-edms/issues/157>`_ upload new version of a document not working
|
||||
* `issue #158 <https://github.com/mayan-edms/mayan-edms/issues/158>`_ Plural form not matching singular form in ocr app bug i18n
|
||||
|
||||
|
||||
.. _Celery: http://www.celeryproject.org/
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
.. _Celery's documentation: http://celery.readthedocs.org/en/latest/configuration.html
|
||||
.. _namespaced: https://docs.djangoproject.com/en/1.6/topics/http/urls/#url-namespaces
|
||||
.. _email configuration settings documentation: https://docs.djangoproject.com/en/1.6/ref/settings/#email-host
|
||||
.. _Django activity stream: https://github.com/justquick/django-activity-stream
|
||||
|
||||
@@ -1,99 +0,0 @@
|
||||
===============================
|
||||
Mayan EDMS v2.0.1 release notes
|
||||
===============================
|
||||
|
||||
Released: January 22, 2016
|
||||
|
||||
Welcome to Mayan EDMS v2.0.1
|
||||
|
||||
|
||||
What's new in Mayan EDMS v2.0.1
|
||||
===============================
|
||||
|
||||
Required metadata was not enforce correctly
|
||||
-------------------------------------------
|
||||
Fixed a situation where documents having required metadata could still be
|
||||
uploaded without entering a value for the required metadata.
|
||||
|
||||
Fix multiple document metadata adding
|
||||
-------------------------------------
|
||||
Fixed a bug when adding metadata to multiple documents.
|
||||
|
||||
Fix multiple document metadata editing
|
||||
--------------------------------------
|
||||
Fixed a bug that made it impossible to edit multiple documents' metadata values
|
||||
if one of the documents had no previous value for it's metadata.
|
||||
|
||||
Updated Vagrant file
|
||||
--------------------
|
||||
The included Vagrant file now provide 2 boxes: development and production.
|
||||
Selection which kind of box to provision is as easy as executing::
|
||||
|
||||
vagrant up development
|
||||
|
||||
or
|
||||
|
||||
vagrant up production
|
||||
|
||||
|
||||
Other changes
|
||||
-------------
|
||||
* None
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* `GitLab issue #243 <https://gitlab.com/mayan-edms/mayan-edms/issues/243>`_ System allows a user to skip entering values for a required metadata field while uploading a new document
|
||||
* `GitLab issue #245 <https://gitlab.com/mayan-edms/mayan-edms/issues/245>`_ Add multiple metadata not possible
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,94 +0,0 @@
|
||||
===============================
|
||||
Mayan EDMS v2.0.2 release notes
|
||||
===============================
|
||||
|
||||
Released: February 15, 2016
|
||||
|
||||
Welcome to Mayan EDMS v2.0.2
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
Fine tune "Update" checkbox from the metadata entry form
|
||||
--------------------------------------------------------
|
||||
Previously the update checkbox was ignored during the metadata step of the
|
||||
document upload wizard with the wizard always creating a metadata entry for the
|
||||
new document even if the entry was left blank. The checkbox now controls whether
|
||||
or not the wizard will store try to create the metadata entry.
|
||||
|
||||
Fix empty optional lookup metadata fields behavior
|
||||
--------------------------------------------------
|
||||
An edge case was fixed that caused validation to be executed for empty metadata
|
||||
fields that had a value lookup list.
|
||||
|
||||
Remove Docker files
|
||||
-------------------
|
||||
Included Docker and Docker Compose files were removed since the Mayan EDMS Docker
|
||||
(https://gitlab.com/mayan-edms/mayan-edms-docker) repository is stable.
|
||||
|
||||
Other changes
|
||||
-------------
|
||||
- Only extract validation error messages from ValidationError exception instances.
|
||||
- Add 2 second delay to document version tests to workaround MySQL not storing
|
||||
the millisecond part of the document version's timestamp.
|
||||
- Install testing dependencies when installing development dependencies.
|
||||
- Fix OCR API test for document version page OCR content.
|
||||
- Move metadata form value validation to .clean() method.
|
||||
- Add HTML tags stripping to the browser title generation template.
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* `GitLab issue #250 <https://gitlab.com/mayan-edms/mayan-edms/issues/250>`_ Empty optional lookup metadata trigger validation error.
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,87 +0,0 @@
|
||||
===============================
|
||||
Mayan EDMS v2.1.1 release notes
|
||||
===============================
|
||||
|
||||
Released: May 17, 2016
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
This is a bugfix release and all users are encouraged to upgrade.
|
||||
|
||||
Fix object column resolution issue in navigation app
|
||||
----------------------------------------------------
|
||||
Version 2.1 includes a navigation feature that allows model instances from a
|
||||
queryset generated using the .defer() or .only() Django filter optimization
|
||||
features to resolve to their parent class transparently. This optimization
|
||||
caused problems with the sources app which uses a
|
||||
|
||||
Missing Tesseract language files
|
||||
--------------------------------
|
||||
The Tesseract OCR backend now reports if the tesseract language file is missing
|
||||
for the requested document's language.
|
||||
|
||||
Other changes
|
||||
-------------
|
||||
|
||||
- Ensure the automatic default index is created after the default document type.
|
||||
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* `GitLab issue #288 <https://gitlab.com/mayan-edms/mayan-edms/issues/288>`_ Can't add sources in mayan-edms 2.1.
|
||||
* `GitLab issue #289 <https://gitlab.com/mayan-edms/mayan-edms/issues/289>`_ OCR fails with Exception.
|
||||
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,86 +0,0 @@
|
||||
===============================
|
||||
Mayan EDMS v2.1.2 release notes
|
||||
===============================
|
||||
|
||||
Released: May 20, 2016
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
This is a bugfix release and all users are encouraged to upgrade.
|
||||
|
||||
Language list sorting
|
||||
---------------------
|
||||
The document language list and the user locale profile language list are now
|
||||
sorted to make it easier to find the desired language.
|
||||
|
||||
Fixed the metadata lookup options: {{ users }} and {{ groups }}
|
||||
---------------------------------------------------------------
|
||||
When configuring metadata type lookup options the {{ users }} and {{ groups }}
|
||||
special options can be used to display a list of users or a list of groups.
|
||||
These options where producing a list in the wrong format and were updated.
|
||||
|
||||
|
||||
Other changes
|
||||
-------------
|
||||
- Add Makefile for common development tasks
|
||||
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* `GitLab issue #290 <https://gitlab.com/mayan-edms/mayan-edms/issues/290>`_ Unicode characters not supported as metadata values
|
||||
* `GitLab issue #292 <https://gitlab.com/mayan-edms/mayan-edms/issues/292>`_ Sort languages by name not by abbreviation
|
||||
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,238 +0,0 @@
|
||||
=============================
|
||||
Mayan EDMS v2.1 release notes
|
||||
=============================
|
||||
|
||||
Released: May 14, 2016
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
Upgrade to use Django 1.8.13
|
||||
----------------------------
|
||||
With the end of life support for Django 1.7, moving to the next Mayan EDMS
|
||||
minor version was a target for this release. The Django minor release chosen was
|
||||
1.8 as it is very compatible with 1.7 and required minimal changes. Django 1.8
|
||||
is an LTS release (Long Term Support) meaning that is no new big feature of a
|
||||
new Django version is required, the project can stay in Django 1.8 for a good
|
||||
amount of time with no downsides.
|
||||
|
||||
Remove remaining references to Django's User model
|
||||
--------------------------------------------------
|
||||
The few remaining hard code references to Django's User model that were missed
|
||||
in a previous release have been removed. Using a custom User model with Mayan
|
||||
should present very little if any obstacles.
|
||||
|
||||
Remove included login required middleware
|
||||
-----------------------------------------
|
||||
The custom middleware include with Mayan EDMS that forces user to be
|
||||
authenticated before being able to access any view has been removed in favor of
|
||||
a dedicated 3rd party Django app for that purpose. The app chosen was
|
||||
django-stronghold (http://mikegrouchy.com/django-stronghold/).
|
||||
|
||||
Improve generation of success and error messages for class based views
|
||||
----------------------------------------------------------------------
|
||||
In the past success messages for actions would show a generic mention to the
|
||||
object being manipulated (document, folder, tag). Now the errors and success
|
||||
messages with be more explicit in describing what the view has or was trying
|
||||
to manipulate.
|
||||
|
||||
Remove ownership concept from folders
|
||||
-------------------------------------
|
||||
Currently Folders in Mayan EDMS have a field that stores a reference to the
|
||||
user that has created that folders. One of the design decisions of Mayan EDMS
|
||||
is that there should never be any explicit ownership of any object. Ownership
|
||||
is relative and is defined by the Access Control List of an object. The
|
||||
removal of the user field from the Folders model brings this app in line with
|
||||
the defined behavior.
|
||||
|
||||
Replacement of strip_spaces middleware with the spaceless template tag
|
||||
----------------------------------------------------------------------
|
||||
As a size optimization technique HTML content was dynamically stripped of spaces
|
||||
as it was being served. The technique used involved detecting the MIME type of
|
||||
the content being served and if found to be of text/HTML type spaces between
|
||||
tags were stripped. An edge case was found where this did not worked always.
|
||||
The approached has been changed to use Django's official tag to strip spaces.
|
||||
In addition to using an official approach, the removal of spaces only happens
|
||||
when the template is compiled and not at each HTTP response. The optimization
|
||||
is minimal but since it happened at every response a small increase in speed
|
||||
is expected for all deployment scenarios.
|
||||
|
||||
Deselect the update checkbox for optional metadata by default
|
||||
-------------------------------------------------------------
|
||||
During the last releases the behavior of the of metadata edit checkbox has seen
|
||||
several tune ups. Thanks to community feedback one small change has been
|
||||
introduced. The edit checkbox will be deselected by default for all optional
|
||||
document type metadata entries.
|
||||
|
||||
Implement per document type document creation permission
|
||||
--------------------------------------------------------
|
||||
If is now possible to grant the document creation permission to a role for a
|
||||
document type. Previously document creation was a "blanket" permission. Having
|
||||
the permission meant that user could create any type of document. With this
|
||||
change it is now possible to restrict which types of document users of a
|
||||
specific role can create.
|
||||
|
||||
Make document type delete time period optional
|
||||
----------------------------------------------
|
||||
The entries that defined after how long a document in the trash would be
|
||||
permanently deleted have been made optional. This means that if a document
|
||||
type has this option blank, the corresponding document of this type would never
|
||||
be deleted from the trash can.
|
||||
|
||||
Fixed date locale handling in document properties, checkout and user detail views
|
||||
---------------------------------------------------------------------------------
|
||||
A few releases back the ability to for users to set their timezone was added.
|
||||
This change also included a smart date rendering update to adjust the dates
|
||||
and times fields to the user's timezone. Some users reported a few views where
|
||||
this timezone adjustment was not happening, this has been fully fixed.
|
||||
|
||||
Default index
|
||||
-------------
|
||||
During new installations a default index that organizes document by year/month
|
||||
when they were uploaded will be created to help users better understand the
|
||||
concept of indexes in Mayan EDMS.
|
||||
|
||||
HTML5 upload widget
|
||||
-------------------
|
||||
A common request is the ability to just drap and drop documents from other
|
||||
windows into Mayan EDMS's document upload wizard. This release includes that
|
||||
capability and will also show a completion bar for the upload. Document
|
||||
uploading is sped up dramatically with this change.
|
||||
|
||||
Message of the Day app
|
||||
----------------------
|
||||
Administrators wanting to display announcements has no other way to do so
|
||||
than to customize the login template. To avoid this a new app has been added
|
||||
that allows for the creation of messages to be shown at the user login
|
||||
screen. These messages can have an activation and an expiration date and
|
||||
time. These messages are useful for display company access policies,
|
||||
maintenance announcement, etc.
|
||||
|
||||
Document signing
|
||||
----------------
|
||||
The biggest change for this release if the addition of document signing from
|
||||
within the UI. Enterprise users request this feature very often as in those
|
||||
environments cryptographic signatures are a basic requirement. Previously
|
||||
Mayan EDMS had the ability to automatically check if a document was signed and
|
||||
if signed, verify the validity of the signature. However, to sign documents
|
||||
user had to download the document, sign the document offline, and either
|
||||
re-upload the signed document as a new version or upload a detached
|
||||
signature for the existing document version. Aside from being now able to sign
|
||||
documents from the web user interface, the way keys are handled has been
|
||||
rewritten from scratch to support distributed key storage. This means that
|
||||
a key uploaded in one computer by one user can be used transparently by
|
||||
other users in other computers to sign documents. The relevant access control
|
||||
updates were added to the new document signing system. Users wanting to sign a
|
||||
document need the singing permission for the document (or document type),
|
||||
for the private key they intend to use, and the passphrase (if the key has one).
|
||||
Finally documents are now checked just once for signatures and not every time
|
||||
they are accessed, this provides a very sizable speed improvement in document
|
||||
access and availability.
|
||||
|
||||
Other changes
|
||||
=============
|
||||
- Upgrade Python requirements to recent versions.
|
||||
- Rename 'Content' search box to 'OCR'.
|
||||
- Silence all Django 1.8 model import warnings.
|
||||
- Add icons to the document face menu links.
|
||||
- Increase icon to text spacing to 3px.
|
||||
- Add new permission: checkout details view.
|
||||
- Add HTML tags stripping to the browser title generation template.
|
||||
- Folder and Tag creation API calls now return the id of the created instances.
|
||||
- Update Document model's uuid field to use Django's native UUIDField class.
|
||||
- Add new split view index navigation
|
||||
- Newly uploaded documents appear in the Recent document list of the user.
|
||||
- Start migration from django-sendfile to django-downloadview.
|
||||
- Index more model fields.
|
||||
- Navigation system support querysets using .defer() or .only() optimizations.
|
||||
- API fixes and improvements.
|
||||
- Increase total test count to 311.
|
||||
- Increase test coverage to 77%.
|
||||
- Documentation improvements.
|
||||
- Handle unicode filenames in staging folders.
|
||||
- Add staging file deletion permission.
|
||||
- New document_signature_view permission.
|
||||
- Instead of multiple keyservers only one keyserver is now supported.
|
||||
- Replace document type selection widget with an opened selection list.
|
||||
- Add roadmap documentation chapter.
|
||||
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* `GitLab issue #137 <https://gitlab.com/mayan-edms/mayan-edms/issues/137>`_ Add app creation chapter to documentation.
|
||||
* `GitLab issue #147 <https://gitlab.com/mayan-edms/mayan-edms/issues/147>`_ Add in app document signing.
|
||||
* `GitLab issue #161 <https://gitlab.com/mayan-edms/mayan-edms/issues/161>`_ Email backend setup documentation.
|
||||
* `GitLab issue #162 <https://gitlab.com/mayan-edms/mayan-edms/issues/162>`_ Add HTML5 file uploader.
|
||||
* `GitLab issue #191 <https://gitlab.com/mayan-edms/mayan-edms/issues/191>`_ Split index contents title into title and path/breadcrumb widget.
|
||||
* `GitLab issue #206 <https://gitlab.com/mayan-edms/mayan-edms/issues/206>`_ Support for dynamic LOGIN_EXEMPT_URLS.
|
||||
* `GitLab issue #208 <https://gitlab.com/mayan-edms/mayan-edms/issues/208>`_ Add tagging step to upload wizard.
|
||||
* `GitLab issue #218 <https://gitlab.com/mayan-edms/mayan-edms/issues/218>`_ Cookie cutter template for Mayan apps.
|
||||
* `GitLab issue #222 <https://gitlab.com/mayan-edms/mayan-edms/issues/222>`_ Add notice board or Message of the Day.
|
||||
* `GitLab issue #225 <https://gitlab.com/mayan-edms/mayan-edms/issues/225>`_ Remove hard coded User model.
|
||||
* `GitLab issue #232 <https://gitlab.com/mayan-edms/mayan-edms/issues/232>`_ "Create documents" is a blanket permission for a user to create a document of any document type.
|
||||
* `GitLab issue #246 <https://gitlab.com/mayan-edms/mayan-edms/issues/246>`_ Upgrade to Django version 1.8 as Django 1.7 is end-of-life.
|
||||
* `GitLab issue #251 <https://gitlab.com/mayan-edms/mayan-edms/issues/251>`_ Add method to disable metadata edit form "update" checkbox when not needed.
|
||||
* `GitLab issue #255 <https://gitlab.com/mayan-edms/mayan-edms/issues/255>`_ UnicodeDecodeError in apps/common/middleware/strip_spaces_widdleware.py.
|
||||
* `GitLab issue #256 <https://gitlab.com/mayan-edms/mayan-edms/issues/256>`_ typo in locale settings (Dutch).
|
||||
* `GitLab issue #261 <https://gitlab.com/mayan-edms/mayan-edms/issues/261>`_ Feature: Document Access Audit Logging.
|
||||
* `GitLab issue #265 <https://gitlab.com/mayan-edms/mayan-edms/issues/265>`_ Indexes show list (show indexe only if the user has ACLs on document type).
|
||||
* `GitLab issue #266 <https://gitlab.com/mayan-edms/mayan-edms/issues/266>`_ Smart links : Dynamic label with Postgresql.
|
||||
* `GitLab issue #267 <https://gitlab.com/mayan-edms/mayan-edms/issues/267>`_ Release 2.1 RC1 : Notes and ideas.
|
||||
* `GitLab issue #268 <https://gitlab.com/mayan-edms/mayan-edms/issues/268>`_ Release 2.1 RC1 : Bug to access inside an indexes.
|
||||
* `GitLab issue #270 <https://gitlab.com/mayan-edms/mayan-edms/issues/270>`_ Release 2.1 RC1 : Bug statistics.
|
||||
* `GitLab issue #274 <https://gitlab.com/mayan-edms/mayan-edms/issues/274>`_ [Release 2.1 RC2] Web Tests.
|
||||
* `GitLab issue #275 <https://gitlab.com/mayan-edms/mayan-edms/issues/275>`_ [Release 2.1 RC2] Notes.
|
||||
* `GitLab issue #276 <https://gitlab.com/mayan-edms/mayan-edms/issues/276>`_ [Release 2.1 RC2] API Tests.
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,108 +0,0 @@
|
||||
=============
|
||||
Release notes
|
||||
=============
|
||||
|
||||
Release notes for the official Mayan EDMS releases. Each release note will tell you
|
||||
what's new in each version, and will also describe any backwards-incompatible
|
||||
changes made in that version.
|
||||
|
||||
For those upgrading to a new version of Mayan EDMS, you will need to check
|
||||
all the backwards-incompatible changes and deprecated features for
|
||||
each 'final' release from the one after your current Mayan EDMS version,
|
||||
up to and including the latest version.
|
||||
|
||||
Final releases
|
||||
==============
|
||||
|
||||
Below are release notes through Mayan EDMS |version| and its minor releases. Newer
|
||||
versions of the documentation contain the release notes for any later releases.
|
||||
|
||||
2.0 series
|
||||
----------
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
2.1.2
|
||||
2.1.1
|
||||
2.1
|
||||
2.0.2
|
||||
2.0.1
|
||||
2.0
|
||||
|
||||
1.0 series
|
||||
----------
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
1.1.1
|
||||
1.1
|
||||
1.0
|
||||
|
||||
0.13 release
|
||||
------------
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
0.13
|
||||
|
||||
0.12 release
|
||||
------------
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
0.12.2
|
||||
0.12.1
|
||||
0.12
|
||||
|
||||
0.11 release
|
||||
------------
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
0.11.1
|
||||
0.11
|
||||
|
||||
0.10 release
|
||||
------------
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
0.10.1
|
||||
0.10
|
||||
|
||||
0.9 release
|
||||
-----------
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
0.9.1
|
||||
0.9
|
||||
|
||||
0.8 release
|
||||
-----------
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
0.8.3
|
||||
0.8.2
|
||||
0.8.1
|
||||
0.8
|
||||
|
||||
0.7 release
|
||||
-----------
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
0.7.6
|
||||
0.7.5
|
||||
0.7.4
|
||||
0.7.3
|
||||
0.7
|
||||
|
||||
0.5 release
|
||||
-----------
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
0.5.1
|
||||
0.5
|
||||
@@ -1,73 +0,0 @@
|
||||
====================
|
||||
Access control lists
|
||||
====================
|
||||
|
||||
Besides the permissions system explained in :doc:`permissions`, Mayan EDMS
|
||||
provides per object permission granting. This feature is used to grant a
|
||||
permission to a role, but this permission can only be executed for a limited
|
||||
number of objects (documents, folders, tags) instead of being effective
|
||||
system-wide.
|
||||
|
||||
.. blockdiag::
|
||||
|
||||
blockdiag {
|
||||
document [ label = 'Document' ];
|
||||
role [ label = 'Role' ];
|
||||
permission [ label = 'Permission' ];
|
||||
|
||||
role -> document <- permission;
|
||||
}
|
||||
|
||||
Example:
|
||||
|
||||
.. blockdiag::
|
||||
|
||||
blockdiag {
|
||||
document [ label = '2015 Payroll report.txt', width=200 ];
|
||||
role [ label = 'Accountants' ];
|
||||
permission [ label = 'View document' ];
|
||||
|
||||
role -> document <- permission;
|
||||
}
|
||||
|
||||
In this scenario only users in groups belonging to the ``Accountants`` role
|
||||
would be able to view the ``2015 Payroll report.txt`` document.
|
||||
|
||||
Inherited access control
|
||||
========================
|
||||
|
||||
It is also possible to grant a permission to a role for a specific document type (:doc:`document_types`).
|
||||
Under this scheme all users in groups belonging to that role will inherit that
|
||||
permission for all documents of that type.
|
||||
|
||||
.. blockdiag::
|
||||
|
||||
blockdiag {
|
||||
document_type [ label = 'Document type' ];
|
||||
role [ label = 'Role' ];
|
||||
permission [ label = 'Permission' ];
|
||||
|
||||
role -> document_type <- permission;
|
||||
}
|
||||
|
||||
Example:
|
||||
|
||||
.. blockdiag::
|
||||
|
||||
blockdiag {
|
||||
document_type [ label = 'Payroll reports', width=200 ];
|
||||
role [ label = 'Accountants' ];
|
||||
permission [ label = 'View document' ];
|
||||
|
||||
role -> document_type <- permission;
|
||||
}
|
||||
|
||||
The role ``Accountants`` is given the permission ``document view`` for the
|
||||
document type ``Payroll reports``. Now all users in groups belonging to the
|
||||
``Accountants`` role can view all documents of the type ``Payroll reports``
|
||||
without needing to have that permissions granted for each particular
|
||||
``Payroll reports`` type document.
|
||||
|
||||
If access control for the ``Payroll reports`` documents needs to be updated it
|
||||
only needs to be done for the document type and not for each document of the type
|
||||
``Payroll reports``.
|
||||
@@ -1,143 +0,0 @@
|
||||
============
|
||||
App creation
|
||||
============
|
||||
|
||||
Mayan EDMS apps are essentially Django app with some extra code to register
|
||||
navigation, permissions and other relationships.
|
||||
|
||||
|
||||
App modules
|
||||
===========
|
||||
|
||||
- __init__.py
|
||||
|
||||
Should be empty if possible. No initialization code should be here, use the
|
||||
ready() method of the MayanAppConfig class in the apps.py module.
|
||||
|
||||
- admin.py
|
||||
|
||||
Standard Django app module to define how models are to be presented in the
|
||||
admin interface.
|
||||
|
||||
- api_views.py
|
||||
|
||||
REST API views go here. Mayan EDMS uses Django REST Framework API view
|
||||
classes.
|
||||
|
||||
- apps.py
|
||||
|
||||
Contains the MayanAppConfig subclass as required by Django 1.7 and up. This
|
||||
is a place to define the app name and translatable verbose name as well as
|
||||
code to be execute when the modules of the app are ready.
|
||||
|
||||
- classes.py
|
||||
|
||||
Hold python classes to be used internally or externally. Any class defined by
|
||||
the app that is not a model.
|
||||
|
||||
- events.py
|
||||
|
||||
Define event class instances that are later committed to a log by custom
|
||||
code.
|
||||
|
||||
- exceptions.py
|
||||
|
||||
Custom exceptions defined by the app.
|
||||
|
||||
- fields.py
|
||||
|
||||
Place any custom form field classed you define here.
|
||||
|
||||
- forms.py
|
||||
|
||||
Standard Django app module that hold custom form classes.
|
||||
|
||||
- handlers.py
|
||||
|
||||
Contains the signal handlers, functions that will process a given signal
|
||||
emitted from this or other apps. Connect the handler functions to the
|
||||
corresponding signal in the ready() method of the MayanAppConfig subclass in
|
||||
apps.py
|
||||
|
||||
- links.py
|
||||
|
||||
Defines the links to be used by the app. Import only from the navigation app
|
||||
and the local permissions.py file.
|
||||
|
||||
- literals.py
|
||||
|
||||
Stores magic numbers, module choices (if static), settings defaults, and
|
||||
constants. Should contain all capital case variables. Must not import from
|
||||
any other module.
|
||||
|
||||
- managers.py
|
||||
|
||||
Standard Django app module that hold custom model managers. These act as
|
||||
model class method to performs actions in a series of model instances or
|
||||
utilitarian actions on external models instances.
|
||||
|
||||
- models.py
|
||||
|
||||
Standard Django app module that defines ORM persistent data schema.
|
||||
|
||||
- permissions.py
|
||||
|
||||
Defines the permissions to be used to validate user access by links and views.
|
||||
Imports only from the permissions app. Link or view conditions such as
|
||||
testing for is_staff or is_super_user flag are defined in this same module.
|
||||
|
||||
- runtime.py
|
||||
|
||||
Use this module when you need the same instance of a class for the entire app.
|
||||
This module acts as a shared memory space for the other modules of the app or
|
||||
other apps.
|
||||
|
||||
- serializers.py
|
||||
|
||||
Hold Django REST Framework serializers used by the api_views.py module.
|
||||
|
||||
- settings.py
|
||||
|
||||
Define the configuration settings instances that the app will use.
|
||||
|
||||
- signals.py
|
||||
|
||||
Any custom defined signal goes here.
|
||||
|
||||
- statistics.py
|
||||
|
||||
Provides functions that will compute any sort of statistical information on
|
||||
the app’s data.
|
||||
|
||||
- tasks.py
|
||||
|
||||
Code to be execute in the background or as an out-of-process action.
|
||||
|
||||
- tests/ directory
|
||||
|
||||
Hold test modules. There should be one test_*.py module for each aspect being
|
||||
tested, examples: test_api.py, test_views.py, test_parsers.py, test_permissions.py
|
||||
Any shared constant data used by the tests should be added to tests/literals.py
|
||||
|
||||
- utils.py
|
||||
|
||||
Holds utilitarian code that doesn't fit on any other app module or that is
|
||||
used by several modules in the app. Anything used internally by the app that
|
||||
is not a class or a literal (should be as little as possible)
|
||||
|
||||
- widgets.py
|
||||
|
||||
HTML widgets go here. This should be the only place with presentation
|
||||
directives in the app (aside the templates).
|
||||
|
||||
|
||||
Views
|
||||
=====
|
||||
|
||||
The module common.generics provides custom generic class based views to be used.
|
||||
The basic views used to create, edit, view and delete objects in Mayan EDMS
|
||||
are: SingleObjectCreateView, SingleObjectDetailView, SingleObjectEditView,
|
||||
and SingleObjectListView
|
||||
|
||||
These views handle aspects relating to view permissions, object permissions,
|
||||
post action redirection and template context generation.
|
||||
@@ -1,16 +0,0 @@
|
||||
=======
|
||||
Backups
|
||||
=======
|
||||
|
||||
To backup your install of Mayan EDMS just copy the actual document files and
|
||||
the database content. If you are using the default storage backend, the
|
||||
document files should be found in ``mayan/media/document_storage/``.
|
||||
|
||||
To dump the content of your database manager refer to the documentation chapter
|
||||
regarding database data "dumping".
|
||||
|
||||
Example:
|
||||
|
||||
- Postgresl: http://www.postgresql.org/docs/current/static/backup.html
|
||||
- MySQL: https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
|
||||
- SQLite: Just copy the file ``mayan/media/db.sqlite3``
|
||||
@@ -1,14 +0,0 @@
|
||||
=========
|
||||
Checkouts
|
||||
=========
|
||||
|
||||
Checkouts are a way to block certain accesses or actions of a document for a
|
||||
period of time.
|
||||
|
||||
An user can choose to checkout a document to work on an update and block new
|
||||
versions of that document to be uploaded by other users. Document are checked
|
||||
out for a certain amount of time and if not manually checked in by the original
|
||||
user, will be checked in automatically by the system.
|
||||
|
||||
To be able to check in documents that were checked out by other users, the
|
||||
permission 'Forcefully check in documents' is required.
|
||||
@@ -1,39 +0,0 @@
|
||||
=======
|
||||
Contact
|
||||
=======
|
||||
|
||||
|
||||
FAQ
|
||||
---
|
||||
|
||||
* Try the :doc:`FAQ <faq>` -- it's got answers to many common questions.
|
||||
|
||||
Mailing list
|
||||
------------
|
||||
|
||||
Search for information in the `archives of the mayan-edms mailing list`_, or
|
||||
`post a question`_. If you prefer news servers, use the gateway provided by
|
||||
Gmane_.
|
||||
|
||||
Mayan EDMS community developers do their best to reply to basic questions.
|
||||
Be sure to check the list archives as it may already containt the answers to
|
||||
your questions.
|
||||
|
||||
Twitter
|
||||
-------
|
||||
|
||||
Mayan EDMS has an official Twitter account, `@mayanedms
|
||||
<http://twitter.com/mayanedms>`_, which is used for announcements and occasional
|
||||
related news tidbits.
|
||||
|
||||
|
||||
Bugs/ticket tracker
|
||||
-------------------
|
||||
|
||||
Report bugs with Mayan EDMS or search existing ones using Gitlab's `ticket tracker`_.
|
||||
|
||||
|
||||
.. _archives of the mayan-edms mailing list: http://groups.google.com/group/mayan-edms/
|
||||
.. _post a question: http://groups.google.com/group/mayan-edms
|
||||
.. _ticket tracker: https://gitlab.com/mayan-edms/mayan-edms/issues
|
||||
.. _Gmane: http://news.gmane.org/gmane.comp.python.django.mayan-edms
|
||||
@@ -1,38 +0,0 @@
|
||||
.. _contributors:
|
||||
|
||||
============
|
||||
Contributors
|
||||
============
|
||||
|
||||
|
||||
How to contribute?
|
||||
------------------
|
||||
|
||||
You can help further the development of Mayan EDMS by testing, reporting
|
||||
bugs, submitting documentation or code patches.
|
||||
|
||||
Lead developer
|
||||
--------------
|
||||
* Roberto Rosario (roberto.rosario@mayan-edms.com) <https://twitter.com/siloraptor>
|
||||
|
||||
Contributors (in alphabetical order)
|
||||
------------------------------------
|
||||
* Aziz M. Bookwala (https://github.com/azizmb)
|
||||
* Bertrand Bordage (https://github.com/BertrandBordage)
|
||||
* Brian E (brian@realize.org)
|
||||
* David Herring (https://github.com/abadger1406)
|
||||
* Emlyn Clay (https://github.com/EmlynC)
|
||||
* Jens Kadenbach (https://github.com/audax)
|
||||
* Kolmar Kafran
|
||||
* Helga Carrero
|
||||
* IHLeanne (https://github.com/IHLeanne)
|
||||
* Iliya Georgiev (ikgeorgiev@gmail.com)
|
||||
* Lars Kruse (devel@sumpfralle.de)
|
||||
* Mathias Behrle <mbehrle@m9s.biz>
|
||||
* Meurig Freeman (https://github.com/meurig)
|
||||
* Nate Aune (nate@appsembler.com)
|
||||
* Paul Whipp [https://github.com/pwhipp] [http://paulwhippconsulting.com]
|
||||
* Rafael Esparra <rafael.esparra1@upr.edu>
|
||||
* Sergey Glita (s.v.glita@gmail.com)
|
||||
* Simone Federici [https://twitter.com/aldaranalton] [https://github.com/simone]
|
||||
* Webfaction (https://www.webfaction.com)
|
||||
@@ -1,258 +0,0 @@
|
||||
=========
|
||||
Deploying
|
||||
=========
|
||||
|
||||
OS "bare metal"
|
||||
===============
|
||||
|
||||
Like other Django based projects Mayan EDMS can be deployed in a wide variety
|
||||
of ways. The method provided below is only a bare minimum example.
|
||||
These instructions are independent of the instructions mentioned in the
|
||||
:doc:`installation` chapter but assume you have already made a test install to
|
||||
test the compatibility of your operating system. These instruction are for
|
||||
Ubuntu 15.04.
|
||||
|
||||
Switch to superuser::
|
||||
|
||||
sudo -i
|
||||
|
||||
Install all system dependencies::
|
||||
|
||||
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 unpaper poppler-utils -y
|
||||
|
||||
Change to the directory where the project will be deployed::
|
||||
|
||||
cd /usr/share
|
||||
|
||||
Create the Python virtual environment for the installation::
|
||||
|
||||
virtualenv mayan-edms
|
||||
|
||||
Activate the virtualenv::
|
||||
|
||||
source mayan-edms/bin/activate
|
||||
|
||||
Install Mayan EDMS from PyPI::
|
||||
|
||||
pip install mayan-edms
|
||||
|
||||
Install the Python client for PostgreSQL, Redis, and uWSGI::
|
||||
|
||||
pip install psycopg2 redis uwsgi
|
||||
|
||||
Create the database for the installation::
|
||||
|
||||
sudo -u postgres createuser -P mayan (provide password)
|
||||
sudo -u postgres createdb -O mayan mayan
|
||||
|
||||
Create the directory for the log files::
|
||||
|
||||
mkdir /var/log/mayan
|
||||
|
||||
Change the current directory to be the one of the installation::
|
||||
|
||||
cd mayan-edms
|
||||
|
||||
Make a convenience symbolic link::
|
||||
|
||||
ln -s lib/python2.7/site-packages/mayan .
|
||||
|
||||
Create an initial settings file::
|
||||
|
||||
mayan-edms.py createsettings
|
||||
|
||||
Append the following to the ``mayan/settings/local.py`` file, paying attention to replace the ``PASSWORD`` value::
|
||||
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.postgresql_psycopg2',
|
||||
'NAME': 'mayan',
|
||||
'USER': 'mayan',
|
||||
'PASSWORD': '<password used when creating postgreSQL user>',
|
||||
'HOST': 'localhost',
|
||||
'PORT': '5432',
|
||||
}
|
||||
}
|
||||
|
||||
BROKER_URL = 'redis://127.0.0.1:6379/0'
|
||||
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0'
|
||||
|
||||
Migrate the database or initialize the project::
|
||||
|
||||
mayan-edms.py initialsetup
|
||||
|
||||
Disable the default NGINX site::
|
||||
|
||||
rm /etc/nginx/sites-enabled/default
|
||||
|
||||
Create a ``uwsgi.ini`` file with the following contents::
|
||||
|
||||
[uwsgi]
|
||||
chdir = /usr/share/mayan-edms/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 = /usr/share/mayan-edms/lib/python2.7/site-packages
|
||||
master = True
|
||||
max-requests = 5000
|
||||
socket = /usr/share/mayan-edms/uwsgi.sock
|
||||
uid = www-data
|
||||
vacuum = True
|
||||
wsgi-file = /usr/share/mayan-edms/lib/python2.7/site-packages/mayan/wsgi.py
|
||||
|
||||
Create the directory for the uWSGI log files::
|
||||
|
||||
mkdir /var/log/uwsgi
|
||||
|
||||
Create the NGINX site file for Mayan EDMS, ``/etc/nginx/sites-available/mayan``::
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name localhost;
|
||||
|
||||
location / {
|
||||
include uwsgi_params;
|
||||
uwsgi_pass unix:/usr/share/mayan-edms/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 /usr/share/mayan-edms/mayan/media/static;
|
||||
expires 1h;
|
||||
}
|
||||
|
||||
location /favicon.ico {
|
||||
alias /usr/share/mayan-edms/mayan/media/static/appearance/images/favicon.ico;
|
||||
expires 1h;
|
||||
}
|
||||
}
|
||||
|
||||
Enable the NGINX site for Mayan EDMS::
|
||||
|
||||
ln -s /etc/nginx/sites-available/mayan /etc/nginx/sites-enabled/
|
||||
|
||||
Create the supervisor file for the uWSGI process, ``/etc/supervisor/conf.d/mayan-uwsgi.conf``::
|
||||
|
||||
[program:mayan-uwsgi]
|
||||
command = /usr/share/mayan-edms/bin/uwsgi --ini /usr/share/mayan-edms/uwsgi.ini
|
||||
user = root
|
||||
autostart = true
|
||||
autorestart = true
|
||||
redirect_stderr = true
|
||||
|
||||
Create the supervisor file for the Celery worker, ``/etc/supervisor/conf.d/mayan-celery.conf``::
|
||||
|
||||
[program:mayan-worker]
|
||||
command = /usr/share/mayan-edms/bin/python /usr/share/mayan-edms/bin/mayan-edms.py celery --settings=mayan.settings.production worker -Ofair -l ERROR
|
||||
directory = /usr/share/mayan-edms
|
||||
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 = /usr/share/mayan-edms/bin/python /usr/share/mayan-edms/bin/mayan-edms.py celery --settings=mayan.settings.production beat -l ERROR
|
||||
directory = /usr/share/mayan-edms
|
||||
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
|
||||
|
||||
Collect the static files::
|
||||
|
||||
mayan-edms.py collectstatic --noinput
|
||||
|
||||
Make the installation directory readable and writable by the webserver user::
|
||||
|
||||
chown www-data:www-data /usr/share/mayan-edms -R
|
||||
|
||||
Restart the services::
|
||||
|
||||
/etc/init.d/nginx restart
|
||||
/etc/init.d/supervisor restart
|
||||
|
||||
Docker
|
||||
======
|
||||
|
||||
Deploy the Docker image stack::
|
||||
|
||||
docker run --name postgres -e POSTGRES_DB=mayan -e POSTGRES_USER=mayan -e POSTGRES_PASSWORD=mysecretpassword -v /var/lib/postgresql/data -d postgres
|
||||
docker run --name redis -d redis
|
||||
docker run --name mayan-edms -p 80:80 --link postgres:postgres --link redis:redis -e POSTGRES_DB=mayan -e POSTGRES_USER=mayan -e POSTGRES_PASSWORD=mysecretpassword -v /usr/local/lib/python2.7/dist-packages/mayan/media -d mayanedms/monolithic
|
||||
|
||||
After the Mayan EDMS container finishes initializing (about 5 minutes), it will
|
||||
be available by browsing to http://127.0.0.1. You can inspect the initialization
|
||||
with::
|
||||
|
||||
docker logs mayan-edms
|
||||
|
||||
|
||||
Docker Compose
|
||||
==============
|
||||
|
||||
Create a file named ``environment`` with the following content::
|
||||
|
||||
POSTGRES_DB=mayan
|
||||
POSTGRES_PASSWORD=mayanpassword
|
||||
POSTGRES_USER=mayan
|
||||
|
||||
Create a file named ``docker-compose.yml`` with the content::
|
||||
|
||||
postgres:
|
||||
env_file:
|
||||
- ./environment
|
||||
image: postgres
|
||||
volumes:
|
||||
- /var/lib/postgresql/data
|
||||
|
||||
redis:
|
||||
image: redis
|
||||
|
||||
mayan-edms:
|
||||
env_file:
|
||||
- ./environment
|
||||
image: mayanedms/monolithic
|
||||
links:
|
||||
- postgres
|
||||
- redis
|
||||
ports:
|
||||
- "80:80"
|
||||
volumes:
|
||||
- /usr/local/lib/python2.7/dist-packages/mayan/media
|
||||
|
||||
Launch the entire stack (Postgres, Redis, and Mayan EDMS) using::
|
||||
|
||||
docker-compose -f docker-compose.yml -p mayanedms up -d
|
||||
|
||||
After the Mayan EDMS container finishes initializing (about 5 minutes), it will
|
||||
be available by browsing to http://127.0.0.1. You can inspect the initialization
|
||||
with::
|
||||
|
||||
docker logs mayanedms_mayan-edms_1
|
||||
|
||||
Vagrant
|
||||
=======
|
||||
Make sure you have Vagrant and a provider properly installed as per
|
||||
https://docs.vagrantup.com/v2/installation/index.html
|
||||
Clone the repository and execute::
|
||||
|
||||
vagrant up production
|
||||
|
||||
@@ -1,425 +0,0 @@
|
||||
.. _development:
|
||||
|
||||
Development
|
||||
===========
|
||||
|
||||
Mayan EDMS is under active development, and contributions are welcome.
|
||||
|
||||
If you have a feature request, suggestion or bug report, please open a new
|
||||
issue on the `GitLab issue tracker`_. To submit patches, please send a pull
|
||||
request on GitLab_. Make sure to add yourself to the :ref:`contributors` file.
|
||||
|
||||
.. _GitLab: https://gitlab.com/mayan-edms/mayan-edms/
|
||||
.. _`GitLab issue tracker`: https://gitlab.com/mayan-edms/mayan-edms/issues
|
||||
|
||||
|
||||
Project philosophies
|
||||
--------------------
|
||||
|
||||
How to think about Mayan EDMS when doing changes or adding new features,
|
||||
why things are the way they are in Mayan EDMS.
|
||||
|
||||
- Functionality must be as market/sector independent as possible, code for the
|
||||
95% of use cases.
|
||||
- Each user must be able to configure and customize it to their needs after
|
||||
install.
|
||||
- Abstract as much as possible, each app must be an expert in just one thing,
|
||||
for other things they should use the API/classes/functions of other apps.
|
||||
- Assume as little as possible about anything outside the project
|
||||
(hardware, OS, storage).
|
||||
- Provide Python based abstraction so that a default install runs with a single
|
||||
step.
|
||||
- No hard dependencies on binaries unless there is no other choice.
|
||||
- Provide “drivers” or switchable backends to allow users to fine tune the
|
||||
installation.
|
||||
- Call to binaries only when there is no other choice or the Python choices are
|
||||
not viable/mature/efficient.
|
||||
- Each app is as independent and self contained as possible. Exceptions, the
|
||||
basic requirements: navigation, permissions, common, main.
|
||||
- If an app is meant to be used by more than one other app it should be as
|
||||
generic as possible in regard to the project and another app will bridge the functionality.
|
||||
|
||||
- Example: since indexing (document_indexing) only applies to documents, the
|
||||
app is specialized and depends on the documents app.
|
||||
|
||||
|
||||
Coding conventions
|
||||
------------------
|
||||
|
||||
Follow PEP8
|
||||
~~~~~~~~~~~
|
||||
Whenever possible, but don't obsess over things like line length.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ flake8 --ignore=E501,E128,E122 |less
|
||||
|
||||
Imports
|
||||
~~~~~~~
|
||||
|
||||
Import order should be:
|
||||
|
||||
- Standard Python modules
|
||||
- Installed Python modules
|
||||
- Core Django modules
|
||||
- Installed Django modules
|
||||
- Mayan EDMS modules
|
||||
- Local imports
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
from __future__ import absolute_import
|
||||
|
||||
# Standard Python library
|
||||
import base64
|
||||
|
||||
# 3rd party installed Python libraries
|
||||
import requests
|
||||
|
||||
# Django core modules
|
||||
from django.db.models import Q
|
||||
from django.template.defaultfilters import slugify
|
||||
from django.utils.translation import ugettext
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
# 3rd party installed Django libraries
|
||||
from rest_framework import APIView
|
||||
|
||||
# Mayan apps
|
||||
from metadata.classes import MetadataClass
|
||||
|
||||
# Local app imports (relative)
|
||||
from .conf.settings import (
|
||||
AVAILABLE_INDEXING_FUNCTIONS,
|
||||
MAX_SUFFIX_COUNT, SLUGIFY_PATHS
|
||||
)
|
||||
from .exceptions import MaxSuffixCountReached
|
||||
from .filesystem import (
|
||||
fs_create_index_directory, fs_create_document_link,
|
||||
fs_delete_document_link, fs_delete_index_directory,
|
||||
assemble_suffixed_filename
|
||||
)
|
||||
from .models import Index, IndexInstanceNode, DocumentRenameCount
|
||||
|
||||
All local app module imports are in relative form, local app module name is to
|
||||
be referenced as little as possible, unless required by a specific feature,
|
||||
trick, restriction, ie: Runtime modification of the module's attributes.
|
||||
|
||||
Incorrect:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
|
||||
# documents app views.py model
|
||||
from documents.models import Document
|
||||
|
||||
Correct:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# documents app views.py model
|
||||
from .models import Document
|
||||
|
||||
|
||||
Dependencies
|
||||
~~~~~~~~~~~~
|
||||
Mayan EDMS apps follow a hierarchical model of dependency. Apps import from
|
||||
their parents or siblings, never from their children. Think plugins. A parent
|
||||
app must never assume anything about a possible existing child app. The
|
||||
documents app and the Document model are the basic entities they must never
|
||||
import anything else. The common and main apps are the base apps.
|
||||
|
||||
|
||||
Variables
|
||||
~~~~~~~~~
|
||||
Naming of variables should follow a Major to Minor convention, usually
|
||||
including the purpose of the variable as the first piece of the name, using
|
||||
underscores as spaces. camelCase is not used in Mayan EDMS.
|
||||
|
||||
Examples:
|
||||
|
||||
Links:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
link_document_page_transformation_list = ...
|
||||
link_document_page_transformation_create = ...
|
||||
link_document_page_transformation_edit = ...
|
||||
link_document_page_transformation_delete = ...
|
||||
|
||||
Constants:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
PERMISSION_SMART_LINK_VIEW = ...
|
||||
PERMISSION_SMART_LINK_CREATE = ...
|
||||
PERMISSION_SMART_LINK_DELETE = ...
|
||||
PERMISSION_SMART_LINK_EDIT = ...
|
||||
|
||||
Classes:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
class Document(models.Model):
|
||||
class DocumentPage(models.Model):
|
||||
class DocumentPageTransformation(models.Model):
|
||||
class DocumentType(models.Model):
|
||||
class DocumentTypeFilename(models.Model):
|
||||
|
||||
|
||||
Strings
|
||||
~~~~~~~
|
||||
Quotation character used in Mayan EDMS for strings is the single quote.
|
||||
Double quote is used for multiple line comments or HTML markup.
|
||||
|
||||
Migrations
|
||||
~~~~~~~~~~
|
||||
Migrations should do only one thing (eg: either create a table, move data to a
|
||||
new table or remove an old table) to aid retrying on failure.
|
||||
|
||||
General
|
||||
~~~~~~~
|
||||
Code should appear in their modules in alphabetic order or in their order of
|
||||
importance if it makes more sense for the specific application. This makes
|
||||
visual scanning easier on modules with a large number of imports, views or
|
||||
classes. Class methods that return a value should be pretended with a
|
||||
``get_`` to differentiate from an object’s properties. When a variable refers
|
||||
to a file it should be named as follows:
|
||||
|
||||
- filename: The file’s name and extension only.
|
||||
- filepath: The entire path to the file including the filename.
|
||||
- path: A path to a directory.
|
||||
|
||||
Flash messages should end with a period as applicable for the language.
|
||||
Only exception is when the tail of the message contains an exceptions message
|
||||
as passed directly from the exception object.
|
||||
|
||||
Source Control
|
||||
--------------
|
||||
|
||||
Mayan EDMS source is controlled with Git_.
|
||||
|
||||
The project is publicly accessible, hosted and can be cloned from **GitLab** using::
|
||||
|
||||
git clone https://gitlab.com/mayan-edms/mayan-edms.git
|
||||
|
||||
|
||||
Git branch structure
|
||||
--------------------
|
||||
|
||||
Mayan EDMS follows a simplified model layout based on Vincent Driessen's
|
||||
`Successful Git Branching Model`_ blog post.
|
||||
|
||||
``develop``
|
||||
The "next release" branch, likely unstable.
|
||||
``master``
|
||||
Current production release (|version|).
|
||||
``feature/``
|
||||
Unfinished/unmerged feature.
|
||||
``series/``
|
||||
Released versions.
|
||||
|
||||
|
||||
Each release is tagged separately.
|
||||
|
||||
When submitting patches, please place your code in its own ``feature/`` branch
|
||||
prior to opening a Merge Request on GitLab_.
|
||||
|
||||
.. _Git: http://git-scm.org
|
||||
.. _`Successful Git Branching Model`: http://nvie.com/posts/a-successful-git-branching-model/
|
||||
|
||||
|
||||
Steps to deploy a development version
|
||||
-------------------------------------
|
||||
.. code-block:: bash
|
||||
|
||||
git clone https://gitlab.com/mayan-edms/mayan-edms.git
|
||||
cd mayan-edms
|
||||
git checkout development
|
||||
virtualenv venv
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
./manage.py initialsetup
|
||||
./manage.py runserver
|
||||
|
||||
|
||||
Setting up a development version using Vagrant
|
||||
----------------------------------------------
|
||||
Make sure you have Vagrant and a provider properly installed as per
|
||||
https://docs.vagrantup.com/v2/installation/index.html
|
||||
|
||||
Start and provision a machine using:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
vagrant up development
|
||||
|
||||
To launch a standalone development server
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
vagrant ssh
|
||||
vagrant@vagrant-ubuntu-trusty-32:~$ cd ~/mayan-edms/
|
||||
vagrant@vagrant-ubuntu-trusty-32:~$ source venv/bin/activate
|
||||
vagrant@vagrant-ubuntu-trusty-32:~$ ./manage.py runserver 0.0.0.0:8000
|
||||
|
||||
To launch a development server with a celery worker and Redis as broker
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
vagrant ssh
|
||||
vagrant@vagrant-ubuntu-trusty-32:~$ cd ~/mayan-edms/
|
||||
vagrant@vagrant-ubuntu-trusty-32:~$ source venv/bin/activate
|
||||
vagrant@vagrant-ubuntu-trusty-32:~$ ./manage.py runserver 0.0.0.0:8000 --settings=mayan.settings.celery_redis
|
||||
|
||||
Then on a separate console launch a celery worker from the same provisioned Vagrant machine:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
vagrant ssh
|
||||
vagrant@vagrant-ubuntu-trusty-32:~$ cd ~/mayan-edms/
|
||||
vagrant@vagrant-ubuntu-trusty-32:~$ source venv/bin/activate
|
||||
vagrant@vagrant-ubuntu-trusty-32:~$ DJANGO_SETTINGS_MODULE='mayan.settings.celery_redis' celery -A mayan worker -l DEBUG -Q checkouts,mailing,uploads,converter,ocr,tools,indexing,metadata -Ofair -B
|
||||
|
||||
|
||||
Contributing changes
|
||||
--------------------
|
||||
Once your have created and committed some new code or feature, submit a Pull
|
||||
Request. Be sure to merge with the development branch before doing a Pull
|
||||
Request so that patches apply as cleanly as possible. If there are no conflicts,
|
||||
Merge Requests can be merged directly from the website UI otherwise a manual
|
||||
command line merge has to be done and your patches might take longer to get
|
||||
merged.
|
||||
|
||||
|
||||
Debugging
|
||||
---------
|
||||
|
||||
Mayan EDMS makes extensive use of Django's new `logging capabilities`_.
|
||||
By default debug logging for all apps is turned on. If you wish to customize
|
||||
how logging is managed turn off automatic logging by setting
|
||||
`COMMON_AUTO_LOGGING` to ``False`` and add the following lines to your
|
||||
``settings/local.py`` file::
|
||||
|
||||
LOGGING = {
|
||||
'version': 1,
|
||||
'disable_existing_loggers': True,
|
||||
'formatters': {
|
||||
'verbose': {
|
||||
'format': '%(levelname)s %(asctime)s %(name)s %(process)d %(thread)d %(message)s'
|
||||
},
|
||||
'intermediate': {
|
||||
'format': '%(name)s <%(process)d> [%(levelname)s] "%(funcName)s() %(message)s"'
|
||||
},
|
||||
'simple': {
|
||||
'format': '%(levelname)s %(message)s'
|
||||
},
|
||||
},
|
||||
'handlers': {
|
||||
'console':{
|
||||
'level':'DEBUG',
|
||||
'class':'logging.StreamHandler',
|
||||
'formatter': 'intermediate'
|
||||
}
|
||||
},
|
||||
'loggers': {
|
||||
'documents': {
|
||||
'handlers':['console'],
|
||||
'propagate': True,
|
||||
'level':'DEBUG',
|
||||
},
|
||||
'common': {
|
||||
'handlers':['console'],
|
||||
'propagate': True,
|
||||
'level':'DEBUG',
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Likewise, to see the debug output of the ``tags`` app, just add the following inside the ``loggers`` block::
|
||||
|
||||
|
||||
'tags': {
|
||||
'handlers':['console'],
|
||||
'propagate': True,
|
||||
'level':'DEBUG',
|
||||
},
|
||||
|
||||
|
||||
.. _`logging capabilities`: https://docs.djangoproject.com/en/dev/topics/logging
|
||||
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
The documentation is written in `reStructured Text`_ format, processed with
|
||||
Sphinx_, and resides in the ``docs`` directory. In order to build it, you will
|
||||
first need to install the documentation editing dependencies with::
|
||||
|
||||
pip install -r requirements/documentation.txt
|
||||
|
||||
Then, to build an HTML version of the documentation, run the following command
|
||||
from the **docs** directory::
|
||||
|
||||
make livehtml
|
||||
|
||||
The generated documentation can be viewed by browsing to http://127.0.0.1:8000
|
||||
or by browsing to the ``docs/_build/html`` directory.
|
||||
|
||||
You can also generate the documentation in formats other than HTML. Consult the
|
||||
Sphinx_ documentation for more details.
|
||||
|
||||
.. _`reStructured Text`: http://docutils.sourceforge.net/rst.html
|
||||
.. _Sphinx: http://sphinx.pocoo.org
|
||||
|
||||
|
||||
Installable package
|
||||
-------------------
|
||||
|
||||
Source file package
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This is the sequence of step used to produce an installable package:
|
||||
|
||||
1. Make sure there are no lingering packages from previous attempts::
|
||||
|
||||
rm dist -R
|
||||
|
||||
2. Generate the packaged version (will produce dist/mayan-edms-x.y.z.tar.gz)::
|
||||
|
||||
python setup.py sdist
|
||||
|
||||
3. Do a test install::
|
||||
|
||||
cd /tmp
|
||||
virtualenv venv
|
||||
source venv/bin/activate
|
||||
pip install <path of the Git repository>/dist/mayan-edms-x.y.z.tar.gz
|
||||
mayan-edms.py initialsetup
|
||||
mayan-edms.py runserver
|
||||
|
||||
|
||||
Wheel package
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
1. Install the development requirements::
|
||||
|
||||
$ pip install -r requirements/development.txt
|
||||
|
||||
2. Create wheel package using the source file package (Until issue #99 of wheel is fixed: https://bitbucket.org/pypa/wheel/issue/99/cannot-exclude-directory)::
|
||||
|
||||
$ pip wheel --no-index --no-deps --wheel-dir dist dist/mayan-edms-x.y.z.tar.gz
|
||||
|
||||
3. Do a test install::
|
||||
|
||||
$ cd /tmp
|
||||
$ virtualenv venv
|
||||
$ source venv/bin/activate
|
||||
$ pip install <path of the Git repository>/dist/mayan_edms-x.y.z-py2-none-any.whl
|
||||
$ mayan-edms.py initialsetup
|
||||
$ mayan-edms.py runserver
|
||||
@@ -1,17 +0,0 @@
|
||||
==============
|
||||
Document types
|
||||
==============
|
||||
|
||||
The basic unit of data in Mayan EDMS is the ``document type``. A document
|
||||
type can be interpreted also as a document category, a document class, or a
|
||||
document template. Document types need to be created before documents can be
|
||||
uploaded. It is not possible to upload documents without assigning them a
|
||||
document type. Examples of document type: **invoices**, **blueprints**,
|
||||
**receipts**.
|
||||
|
||||
Settings and attributes are applied to document types and documents will
|
||||
inherit those settings and attributes based on the document type they were
|
||||
assigned when uploaded into Mayan EDMS. A document can only be of one
|
||||
type at a given moment, but if needed, the type of a document can be changed.
|
||||
Upon changing its type, the document will lose its previous settings and
|
||||
attributes, and will inherit the settings and attributes of its new type.
|
||||
@@ -1,118 +0,0 @@
|
||||
===
|
||||
FAQ
|
||||
===
|
||||
|
||||
Frequently asked questions and solutions
|
||||
|
||||
**Q: PostgreSQL vs. MySQL**
|
||||
|
||||
Since Django abstracts database operations from a functional point of view
|
||||
Mayan EDMS will behave exactly the same either way. The only concern
|
||||
would be that MySQL doesn't support transactions for schema modifying
|
||||
commands. The only moment this could cause problems is when running
|
||||
South migrations during upgrades, if a migration fails the database
|
||||
structure is left in a transitory state and has to be reverted manually
|
||||
before trying again.
|
||||
|
||||
|
||||
**Q: _mysql_exceptions. OperationalError: (1267, "Illegal mix of collations (latin1_swedish_ci, IMPLICIT) and (utf8_general_ci, COERCIBLE) for operation '='")**
|
||||
|
||||
* Solution::
|
||||
|
||||
$ mayan-edms.py shell
|
||||
|
||||
>>> from django.db import connection
|
||||
>>> cursor = connection.cursor()
|
||||
>>> cursor.execute('SHOW TABLES')
|
||||
>>> results=[]
|
||||
>>> for row in cursor.fetchall(): results.append(row)
|
||||
>>> for row in results: cursor.execute('ALTER TABLE %s CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' % (row[0]))
|
||||
|
||||
|
||||
* References:
|
||||
|
||||
- http://www.djangoshmango.com/?p=99
|
||||
- http://stackoverflow.com/questions/1073295/django-character-set-with-mysql-weirdness
|
||||
|
||||
|
||||
**Q: Incorrect string value: ``'\xE2\x80\x95rs6...'`` for column ``'content'`` at row 1**
|
||||
|
||||
When using ``MySQL`` and doing OCR on languages other than English
|
||||
|
||||
* Solution:
|
||||
|
||||
- Use utf-8 collation on MySQL server, or at least in table 'documents_documentpage', 'content' field
|
||||
- Ref: 1- http://groups.google.com/group/django-users/browse_thread/thread/429447086fca6412
|
||||
- Ref: 2- http://markmail.org/message/bqajx2utvmtriixi
|
||||
|
||||
|
||||
**Q: 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
|
||||
|
||||
|
||||
**Q: File system links not showing when serving content with ``Samba``**
|
||||
|
||||
* Solution:
|
||||
|
||||
- Disable unix extensions in the [global] section and enable wide links for the file serving share
|
||||
- Example::
|
||||
|
||||
[global]
|
||||
unix extensions = no
|
||||
|
||||
...
|
||||
|
||||
[digitalizacion]
|
||||
path = /var/local/mayan
|
||||
guest ok = yes
|
||||
read only = yes
|
||||
wide links = yes
|
||||
follow symlinks = yes
|
||||
|
||||
|
||||
- Ref: 1- http://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html
|
||||
|
||||
|
||||
**Q: How do you upload a new version of an existing file?**
|
||||
|
||||
* Solution:
|
||||
|
||||
- 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.
|
||||
|
||||
|
||||
|
||||
**Q: Is virtualenv required as specified in the documentation?**
|
||||
|
||||
* It is not necessary, it's just a strong recommendation mainly to reduce
|
||||
dependency conflicts by isolation from the main Python system install.
|
||||
If not using a virtualenv, pip would install Mayan's dependencies
|
||||
globally coming in conflict with the distribution's prepackaged Python
|
||||
libraries messing other Django projects or Python programs, or another
|
||||
later Python/Django project dependencies coming into conflict causing
|
||||
Mayan to stop working for no apparent reason.
|
||||
|
||||
|
||||
**Q: Mayan EDMS installed correctly and works, but static files are not served**
|
||||
|
||||
Django's development server doesn't serve static files unless the ``DEBUG``
|
||||
option is set to ``True``, this mode of operation should only be used for
|
||||
development or testing. For production deployments the management command::
|
||||
|
||||
$ mayan-edms.py collectstatic
|
||||
|
||||
should be used and the resulting ``static`` folder served from a webserver.
|
||||
For more information, read https://docs.djangoproject.com/en/dev/howto/static-files/
|
||||
and https://docs.djangoproject.com/en/1.2/howto/static-files/ or
|
||||
http://mayan-edms-ru.blogspot.com/2011/11/blog-post_09.html
|
||||
|
||||
|
||||
**Q: 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 considered.
|
||||
@@ -1,107 +0,0 @@
|
||||
========
|
||||
Features
|
||||
========
|
||||
|
||||
* :doc:`Document versioning <../topics/versioning>`.
|
||||
|
||||
* Store many versions of the same document, download or revert to a previous
|
||||
version.
|
||||
|
||||
* :doc:`Electronic signature verification <../topics/signatures>`.
|
||||
|
||||
* Check the authenticity of documents by verifying their embedded
|
||||
cryptographic signatures or upload detached signatures for document
|
||||
signed after they were stored.
|
||||
|
||||
* Collaboration tools.
|
||||
|
||||
* Discuss documents, or comment on new versions of a document.
|
||||
|
||||
* Office document format support.
|
||||
|
||||
* Mayan EDMS can detect the presence of Libre Office and use it to support
|
||||
word processing files, spreadsheets and presentations.
|
||||
|
||||
* User defined metadata fields.
|
||||
|
||||
* Several metadata fields can be matched to a document type as per technical,
|
||||
legal or structural requirements such as the `Dublin core`_.
|
||||
|
||||
* Dynamic default values for metadata.
|
||||
|
||||
* Metadata fields can have an initial value, which can be static or determined
|
||||
by an user provided template code snippet.
|
||||
|
||||
* Documents can be uploaded from different sources.
|
||||
|
||||
* Local file or server side file uploads, multifunctional copier, or even via
|
||||
email.
|
||||
|
||||
* Batch upload many documents with the same metadata.
|
||||
|
||||
* Clone a document's metadata for speedier uploads and eliminate repetitive
|
||||
data entry.
|
||||
|
||||
* Previews for many file formats.
|
||||
|
||||
* Mayan EDMS provides image preview generation for many popular file
|
||||
formats.
|
||||
|
||||
* Full text searching.
|
||||
|
||||
* Documents can be searched by their text content, their metadata or any other
|
||||
file attribute such as name, extension, etc.
|
||||
|
||||
* Configurable document grouping.
|
||||
|
||||
* Automatic linking of documents based on metadata values or document
|
||||
properties.
|
||||
|
||||
* :doc:`Roles support <../topics/permissions>`.
|
||||
|
||||
* It is possible to create an unlimited amount of different roles not being
|
||||
restricted to the traditional admin, operator, guest paradigm.
|
||||
|
||||
* :doc:`Fine grained permissions system <../topics/permissions>`.
|
||||
|
||||
* There is a permission for every atomic operation performed by users.
|
||||
|
||||
* Multi page document support.
|
||||
|
||||
* Multiple page PDFs and TIFFs files are supported.
|
||||
|
||||
* Automatic OCR processing.
|
||||
|
||||
* The task of transcribing text from documents via OCR can be distributed
|
||||
among several physical or virtual computers to decrease load and increase
|
||||
availability.
|
||||
|
||||
* Multilingual user interface.
|
||||
|
||||
* Mayan EDMS being written using the Django_ framework, can be translated
|
||||
to practically any language spoken in the world. For a list of translated
|
||||
languages have a look at the Transifex_ project location.
|
||||
|
||||
* Multilingual OCR support.
|
||||
|
||||
* The current language of the document is passed to the corresponding OCR
|
||||
engine to increase the text recognition rate.
|
||||
|
||||
* :doc:`Plugable storage backends <../topics/file_storage>`.
|
||||
|
||||
* It is very easy to use 3rd party plugins such as the ones available for
|
||||
Amazon EC2.
|
||||
|
||||
* Color coded tagging.
|
||||
|
||||
* Labeled and color coded tags can be assigned for intuitive recognition.
|
||||
|
||||
* Workflows.
|
||||
|
||||
* Keep track of the state of documents, along with the log of the previous
|
||||
state changes.
|
||||
|
||||
|
||||
.. _`Dublin core`: http://dublincore.org/metadata-basics/
|
||||
.. _Django: https://www.djangoproject.com/
|
||||
.. _Transifex: https://www.transifex.com/projects/p/mayan-edms/
|
||||
@@ -1,35 +0,0 @@
|
||||
============
|
||||
File storage
|
||||
============
|
||||
|
||||
The files are stored and placed under Mayan EDMS "control" to avoid
|
||||
filename clashes each file gets renamed to its ``UUID`` (Universally Unique ID),
|
||||
without extension, and stored in a simple flat arrangement in a directory.
|
||||
|
||||
.. blockdiag::
|
||||
|
||||
blockdiag {
|
||||
file [ label = 'mayan_1-1.pdf', width=120];
|
||||
document [ label = 'mayan/media/document_storage/ab6c1cfe-8a8f-4a30-96c9-f54f606b9248', width=450];
|
||||
file -> document [label = "upload"];
|
||||
|
||||
file -> document;
|
||||
}
|
||||
|
||||
This doesn't stop access to the files but renaming, moving or updating
|
||||
directly them is not recommended because it would throw the database out
|
||||
of sync.
|
||||
|
||||
Because Mayan EDMS components are as decoupled from each other as possible,
|
||||
storage in this case is decoupled and its behavior is controlled
|
||||
not by the project but by the ``Storage`` module class. All the other
|
||||
modules don't make any assumptions about how the actual document files are
|
||||
stored. This way files can be saved locally, over the network or even across
|
||||
the Internet and everything will still operate exactly the same.
|
||||
|
||||
The default file storage backend: ``storage.backends.filebasedstorage.FileBasedStorage``
|
||||
is a simple backend that only supports paths and not IP addresses. In case you
|
||||
are interested in using remote volumes to store documents (NFS, SAMBA), first
|
||||
mount these volumes so that they appear as a directories to Mayan EDMS. For
|
||||
direct support for remote volumes a custom backend would be needed such as those
|
||||
provided by the Django Storages project (https://django-storages.readthedocs.org/en/latest/).
|
||||
@@ -1,27 +0,0 @@
|
||||
Concepts
|
||||
========
|
||||
|
||||
Introductions to all the key parts of Mayan EDMS you'll need to know:
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
document_types
|
||||
metadata
|
||||
permissions
|
||||
sources
|
||||
acls
|
||||
transformations
|
||||
checkouts
|
||||
versioning
|
||||
signatures
|
||||
ocr_backend
|
||||
indexes
|
||||
languages
|
||||
smart_links
|
||||
tags
|
||||
mailing
|
||||
settings
|
||||
file_storage
|
||||
backups
|
||||
screenshots
|
||||
@@ -1,93 +0,0 @@
|
||||
=======
|
||||
Indexes
|
||||
=======
|
||||
|
||||
Indexes are an automatic method to hierarchically organize documents in
|
||||
relation to their properties (:doc:`metadata`, label, MIME type, etc). To use
|
||||
indexes you need to first create an index template. Once created, associate
|
||||
the index to one or more :doc:`document_types`.
|
||||
|
||||
Index are hierarchical models so a tree template needs to be specified for them.
|
||||
This tree template will contain references to document metadata or properties
|
||||
that will be replaced with the actual value for those metadata or properties.
|
||||
|
||||
Example:
|
||||
|
||||
- Document type: ``Product sheet``
|
||||
- Metadata type: ``Product year``, associated as a required metadata for the document type ``Product sheet``.
|
||||
|
||||
- Index: ``Product sheets per year``, and associated to the document type ``Product sheet``.
|
||||
- Index slug: ``product-sheets-per-year``. Slugs are internal unique identifiers that can be used by other Mayan EDMS modules to reference each index.
|
||||
- Index tree template as follows:
|
||||
|
||||
.. blockdiag::
|
||||
|
||||
blockdiag {
|
||||
index [ label = 'Product sheets per year', width=180 ];
|
||||
root [ label = 'Root (Has document links? No)', width=450];
|
||||
level_2 [ label = '{{ document.metadata_value_of.product_year }} (Has document links? Yes)', width=450];
|
||||
|
||||
group {
|
||||
label = "Tree template";
|
||||
color = "#dddddd";
|
||||
style = dashed;
|
||||
root; level_2;
|
||||
}
|
||||
|
||||
index -> root
|
||||
root -> level_2 [folded];
|
||||
}
|
||||
|
||||
Now every time a new ``Product sheet`` is uploaded a hierarchical unit with the value
|
||||
of the metadata type ``Product year`` is created and a link to the uploaded ``Product sheet`` added to it.
|
||||
|
||||
Example:
|
||||
|
||||
Suppose three ``Product sheets`` are uploaded with the following values as their
|
||||
``Product year`` metadata: 2001, 2002, 2001 respectively. The result index
|
||||
that will be generate based on the tree template would be as follows:
|
||||
|
||||
.. blockdiag::
|
||||
|
||||
blockdiag {
|
||||
index [ label = 'Product sheets per year', width=180 ];
|
||||
year_1 [ label = '2001', width = 60 ];
|
||||
year_2 [ label = '2002', width = 60 ];
|
||||
document_1 [ label = 'Product A data sheet (2001)', width = 200 ];
|
||||
document_2 [ label = 'Product B data sheet (2002)', width = 200 ];
|
||||
document_3 [ label = 'Product C data sheet (2001)', width = 200 ];
|
||||
|
||||
group {
|
||||
label = "Index content";
|
||||
color = "#dddddd";
|
||||
style = dashed;
|
||||
year_1, year_2, document_1, document_2, document_3;
|
||||
}
|
||||
|
||||
index -> year_1;
|
||||
index -> year_2;
|
||||
year_1 -> document_1;
|
||||
year_2 -> document_2;
|
||||
year_1 -> document_3;
|
||||
|
||||
}
|
||||
|
||||
Mirroring
|
||||
=========
|
||||
|
||||
Indexes can be exported as `FUSE <https://en.wikipedia.org/wiki/Filesystem_in_Userspace>`_
|
||||
filesystems. Using the management command ``mountindex`` we could export the
|
||||
previous example index as follows::
|
||||
|
||||
mkdir -p ~/indexes/products
|
||||
mayan-edms.py mountindex product-sheets-per-year ~/indexes/products
|
||||
|
||||
The ``~/indexes/products`` directory will now have a directory and files structure
|
||||
identical to that of the index. Once indexes are mounted with this command, they
|
||||
behave like any other filesystem directory and can even be further shared
|
||||
via the network with network file system software like
|
||||
`Samba <https://www.samba.org/>`_ or
|
||||
`NFS <https://en.wikipedia.org/wiki/Network_File_System>`_.
|
||||
|
||||
Indexes and mirrored indexes are Read Only as they are generated as a result of
|
||||
prior activities like document uploads, metadata changes.
|
||||