Compare commits

..
Author SHA1 Message Date
Roberto Rosario 8974bf07a2 One step redirection to the new site 2012-09-02 02:00:43 -04:00
Roberto Rosario 3beb07c373 Redirect all old pages to new website 2012-08-31 02:20:00 -04:00
Roberto Rosario 766df7f38b Merge remote-tracking branch 'github/gh-pages' into gh-pages
Conflicts:
	index.html
	news.html
2012-08-30 03:23:58 -04:00
Roberto Rosario ae48d80624 Add news item about web site redesign 2012-08-30 03:20:08 -04:00
Roberto Rosario 059dff02f3 Update list of compliant providers and users 2012-08-30 03:19:40 -04:00
Roberto Rosario 18ae37228a Leasons learned... So far... 2012-08-29 11:38:40 -03:00
Roberto Rosario 8298f50334 Leasons learned... So far... 2012-08-29 11:36:55 -03:00
Roberto Rosario 7941cd83a0 More intents to comply, won't keep updating the total number 2012-08-28 20:53:25 -04:00
Roberto Rosario b1c573dbcf Second GPL update 2012-08-28 19:48:54 -04:00
Roberto Rosario e6750d3777 Fixed another typo 2012-08-28 02:37:57 -04:00
Roberto Rosario 2b5943f15e Fix typo 2012-08-28 02:30:50 -04:00
Roberto Rosario 6f324c4e00 Style tweak, typo fix 2012-08-28 02:24:50 -04:00
Roberto Rosario 352fcbae6e GPL violations update 2012-08-28 02:20:04 -04:00
Roberto Rosario bf1aea0157 Add appsembler button 2012-08-27 03:15:30 -04:00
Roberto Rosario eda6d65184 Add GPL violations news and page 2012-08-27 03:02:05 -04:00
Roberto Rosario d8525383f5 Fix typo 2012-08-07 13:21:11 -04:00
Roberto Rosario 8ea22f3b3b Add JTP net to support providers 2012-08-07 13:11:41 -04:00
Roberto Rosario 1f6afd5629 Update news 2012-08-07 13:11:28 -04:00
Roberto Rosario c7ed8ca09c Add Django links link 2012-06-30 04:28:50 -04:00
Roberto Rosario ee44435e47 Add release 0.12.2 news 2012-06-30 04:28:36 -04:00
Roberto Rosario 600d674cb0 Add new web references 2012-06-17 01:43:18 -04:00
Roberto Rosario 9cdbe77f54 Update news 2012-06-14 03:50:27 -04:00
Roberto Rosario 0cbbcda2e7 Add barquin as user 2012-06-14 03:40:13 -04:00
Roberto Rosario bfe0096cc9 Add easywork to the list of support providers 2012-06-04 13:49:14 -04:00
Roberto Rosario f061e32f00 Add new users 2012-06-04 13:49:05 -04:00
Roberto Rosario 6d946db0c8 Remove old news to make room 2012-06-04 13:12:30 -04:00
Roberto Rosario a823bdc6be Mayan 0.12.1 release posting 2012-06-04 13:11:44 -04:00
Roberto Rosario 7bb53958de Add new reference to Mayan EDMS from the web 2012-06-04 13:11:17 -04:00
Roberto Rosario e7ba91fbaf Add entities that use Mayan EDMS 2012-05-28 05:27:58 -04:00
Roberto Rosario 121063ae00 Add survey link to main page 2012-05-28 05:01:10 -04:00
Roberto Rosario af027acaa5 Add survey link to index and news pages 2012-05-24 16:54:52 -04:00
Roberto Rosario 2fb8691028 Added link "Sistema de Gestión Documental: Mayan EDMS" 2012-05-14 02:34:54 -03:00
Roberto Rosario cd6f503d68 Add news link to front page 2012-05-01 02:32:38 -04:00
Roberto Rosario 1354fc6893 Add Techstars Appsembler video 2012-05-01 02:32:23 -04:00
Roberto Rosario d0d9bd0365 Add other web site referencing Mayan EDMS 2012-05-01 02:31:58 -04:00
Roberto Rosario 8f777fd39b SEO optiminzation 2012-03-13 12:50:28 -04:00
Roberto Rosario 39863ab095 Update news page with .13 development and hang out info 2012-03-13 12:12:00 -04:00
Roberto Rosario dabd76bc04 Update google verification tag 2012-03-01 16:12:28 -04:00
Roberto Rosario fedebac7c7 Add google confirmation meta tag 2012-03-01 16:02:42 -04:00
Roberto Rosario 46072b8c4c Added google confirmation html 2012-03-01 16:00:02 -04:00
Roberto Rosario 387322faa2 Mayan EDMS version 0.12 release news 2012-02-27 16:23:05 -04:00
Roberto Rosario afeef2dd02 Add Quinta Group Mayan Info page 2012-02-26 05:03:26 -04:00
Roberto Rosario d0c08fa32d Fix typo 2012-02-26 05:02:17 -04:00
Roberto Rosario 0a57907a51 Add Quinta Group info 2012-02-26 04:58:05 -04:00
Roberto Rosario 3ef608599b Fix links typos 2012-02-26 01:19:06 -04:00
Roberto Rosario ae082ce52e Added more 3rd party links 2012-02-26 01:17:35 -04:00
Roberto Rosario 19d268ce58 Add g+ button to blog page 2012-01-14 02:46:49 -04:00
Roberto Rosario bd01ef489d Add anontation got g+ button 2012-01-14 02:44:26 -04:00
Roberto Rosario 072a883cdd Add missing g+ JS code 2012-01-14 02:42:02 -04:00
Roberto Rosario bc0a539301 Add google plus button 2012-01-14 02:39:07 -04:00
Roberto Rosario bdef1d817d Google group links added 2012-01-13 01:16:12 -04:00
Roberto Rosario f649b49f42 Add Barry Rowlingson's Mayan EDMS blog post 2012-01-03 00:36:28 -04:00
Roberto Rosario 4dd56492dd Add missing query string argument 2011-12-19 20:48:44 -04:00
Roberto Rosario 38bc67a329 Add fancybox wrapping to the introduction video 2011-12-19 20:46:34 -04:00
Roberto Rosario 9b4186cabe Reduce list margins 2011-12-19 19:59:06 -04:00
Roberto Rosario 321058a610 Add margin to support list 2011-12-19 19:58:03 -04:00
Roberto Rosario c7814f45ed Update CSS, cleanup HTML add improved screenshots, update news 2011-12-19 19:52:12 -04:00
Roberto Rosario 86d349f18b Add updated screenshots 2011-12-19 18:02:06 -04:00
Roberto Rosario 60bfe94528 Add fancybox support to the screenshot images 2011-12-19 17:54:09 -04:00
Roberto Rosario 05883260f7 Add fancybox and enable it for the news screenshots 2011-12-19 17:42:03 -04:00
Roberto Rosario e9a0749edf Added 'on the web' page 2011-12-14 11:07:20 -04:00
Roberto Rosario 456a3c55e3 Fix typo 2011-12-13 12:38:07 -04:00
Roberto Rosario e2d8e01f27 Fix again the SeeOpen.IT link 2011-12-13 12:36:46 -04:00
Roberto Rosario f565b99990 Fix SeeOpenIt link 2011-12-13 12:35:59 -04:00
Roberto Rosario 341b52655c Add Italian translation news 2011-12-13 12:33:42 -04:00
Roberto Rosario ae6a481e82 Add SeeOpen it to the support providers 2011-12-12 10:51:06 -04:00
Roberto Rosario f6d2468a88 typo fix 2011-12-08 16:10:18 -04:00
Roberto Rosario 046761bff0 Add new lines 2011-12-08 16:02:16 -04:00
Roberto Rosario 0e7e546807 add info about v0.11.1 bugfix release 2011-12-08 16:01:00 -04:00
Roberto Rosario cbd5485301 Feature update 2011-12-08 08:47:55 -04:00
Roberto Rosario c61542c433 email update 2011-12-08 08:46:43 -04:00
Roberto Rosario 9c5e6cc8c9 email update 2011-12-08 08:34:13 -04:00
Roberto Rosario d680335ca9 email update 2011-12-08 08:33:24 -04:00
Roberto Rosario ed95d0ff1e email change 2011-12-08 08:32:43 -04:00
Roberto Rosario 554d31a736 Update email address 2011-12-07 19:12:19 -04:00
Roberto Rosario a247c63b9e Update email to mayan-edms domaain 2011-12-07 19:09:57 -04:00
Roberto Rosario 6fab169290 Add version 0.11 announcement 2011-12-06 03:50:11 -04:00
Roberto Rosario 58e1acacbb Add creat1va to the list of support providers 2011-12-05 07:11:17 -04:00
Roberto Rosario 8c0633959b Don't use hand pointer in steps 2011-12-05 07:10:47 -04:00
Roberto Rosario 3b9fecb593 Add support and news areas 2011-12-04 07:30:18 -04:00
Roberto Rosario 47e88b8e95 Changed contact text 2011-11-22 10:25:51 -04:00
Roberto Rosario fb22f07436 Added Portuguese and Russian to the supported UI language list 2011-11-22 10:24:36 -04:00
Roberto Rosario 163f4fa24f Update index.html 2011-11-18 18:14:36 -04:00
Roberto Rosario 99129ead90 Update index.html 2011-11-18 18:13:23 -04:00
Roberto Rosario 67da7d897d Update index.html 2011-11-18 18:12:22 -04:00
Roberto Rosario eb9056f332 Update index.html 2011-11-18 18:10:14 -04:00
Roberto Rosario 766fd144b4 Updated online documentation url 2011-08-19 23:32:45 -04:00
Roberto Rosario d6e0b6889a Updated email address 2011-08-19 23:28:53 -04:00
Roberto Rosario 6e1230f554 Added links to the video and to the online documentation 2011-08-19 23:23:41 -04:00
Roberto Rosario 96bb01fd7a Removed installation instructions 2011-08-19 23:23:13 -04:00
Roberto Rosario 3eb85afa17 Removed the forke banner from the index and screenshot pages 2011-08-19 22:41:45 -04:00
Roberto Rosario 2d3c1953e0 Added donate link 2011-08-10 05:12:30 -04:00
Roberto Rosario 2f5bc98601 Updated latest release link and installation instructions 2011-05-01 18:23:22 -04:00
Roberto Rosario 3f62a3a09a Cleanup 2011-04-29 01:13:51 -04:00
Roberto Rosario 2ddbfc224f Added Google Analytics code 2011-04-29 01:05:25 -04:00
Roberto Rosario 741919ad90 New website version using a free template 2011-04-29 01:02:38 -04:00
Roberto Rosario ffcc033c40 touched html to force re-generation 2011-04-27 09:48:40 -04:00
Roberto Rosario 1ab72f6902 Added two more screenshots 2011-04-20 06:04:44 -04:00
Roberto Rosario 3cee2cdebb Added 2 more screenshots 2011-04-20 05:56:18 -04:00
Roberto Rosario 2d45f7ce5f Updated to include features and screenshots 2011-04-20 05:46:41 -04:00
Roberto Rosario de0c9afa18 github generated gh-pages branch 2011-04-20 02:25:33 -07:00
2494 changed files with 2270 additions and 306468 deletions
-10
View File
@@ -1,10 +0,0 @@
[run]
source=
mayan
omit=
mayan/bin/mayan-edms.py
mayan/wsgi.py
mayan/settings/*
tests.py
mayan/apps/*/tests/*
*migrations*
-28
View File
@@ -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/
-35
View File
@@ -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
-21
View File
@@ -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
-34
View File
@@ -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
-194
View File
@@ -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
-184
View File
@@ -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
-13
View File
@@ -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.
-3
View File
@@ -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/*
-113
View File
@@ -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
-75
View File
@@ -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|
Vendored
-33
View File
@@ -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
View File
-3
View File
@@ -1,3 +0,0 @@
#!/bin/sh
DJANGO_SETTINGS_MODULE='mayan.settings.celery_redis' celery -A mayan worker -l DEBUG -Ofair -B
-22
View File
@@ -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;
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.
@@ -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-----
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

-1
View File
@@ -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
-25
View File
@@ -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
-72
View File
@@ -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
-171
View File
@@ -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
-4
View File
@@ -1,4 +0,0 @@
#!/bin/sh
python setup.py sdist
pip wheel --no-index --no-deps --wheel-dir dist dist/*.tar.gz
-3
View File
@@ -1,3 +0,0 @@
#!/bin/sh
find 'fabfile' -depth -name '*.pyc' -exec rm {} \;
tar -czvf contrib/fabfile.tar.gz fabfile
-114
View File
@@ -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)
-35
View File
@@ -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
-5
View File
@@ -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'
-26
View File
@@ -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
-6
View File
@@ -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
+78
View File
@@ -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;
}
-133
View File
@@ -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
-229
View File
@@ -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();
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 628 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

-4
View File
@@ -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>
-252
View File
@@ -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'
-47
View File
@@ -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
-155
View File
@@ -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
-10
View File
@@ -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
-51
View 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
-8
View File
@@ -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
-34
View File
@@ -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
-116
View File
@@ -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
-115
View File
@@ -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
-231
View File
@@ -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`
-162
View File
@@ -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
-10
View File
@@ -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``
-300
View File
@@ -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)
-32
View File
@@ -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
-6
View File
@@ -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
-16
View File
@@ -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
-23
View File
@@ -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
-13
View File
@@ -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
-32
View File
@@ -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
-24
View File
@@ -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'
-29
View File
@@ -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
-62
View File
@@ -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
-7
View File
@@ -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.
-44
View File
@@ -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
-190
View File
@@ -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/
-72
View File
@@ -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/
-372
View File
@@ -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
-99
View File
@@ -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/
-94
View File
@@ -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/
File diff suppressed because it is too large Load Diff
-87
View File
@@ -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/
-86
View File
@@ -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/
-238
View File
@@ -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/
-108
View File
@@ -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
-73
View File
@@ -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``.
-143
View File
@@ -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 apps 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.
-16
View File
@@ -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``
-14
View File
@@ -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.
-39
View File
@@ -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
-38
View File
@@ -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)
-258
View File
@@ -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
-425
View File
@@ -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 objects properties. When a variable refers
to a file it should be named as follows:
- filename: The files 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
-17
View File
@@ -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.
-118
View File
@@ -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.
-107
View File
@@ -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/
-35
View File
@@ -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/).
-27
View File
@@ -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
-93
View File
@@ -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.

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