diff --git a/apps/common/forms.py b/apps/common/forms.py index 21626bb1ea..195bac61da 100644 --- a/apps/common/forms.py +++ b/apps/common/forms.py @@ -166,7 +166,7 @@ class FileDisplayForm(forms.Form): class ChangelogForm(FileDisplayForm): - FILENAME = u'Changelog.txt' + FILENAME = u'changelog.rst' DIRECTORY = u'docs' diff --git a/docs/CREDITS b/docs/CREDITS deleted file mode 100644 index e8606cac47..0000000000 --- a/docs/CREDITS +++ /dev/null @@ -1,132 +0,0 @@ -Python - Copyright (c) 2001-2010 Python Software Foundation. - Copyright (c) 2000 BeOpen.com. - Copyright (c) 1995-2001 Corporation for National Research Initiatives. - Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam. - -Django - A high-level Python Web framework that encourages rapid - development and clean, pragmatic design. - Copyright Django Software Foundation - http://www.djangoproject.com/ - -django-pagination - Copyright Eric Florenzano (floguy@gmail.com) - http://django-pagination.googlecode.com/ - -Web App Theme - Copyright Andrea Franz (http://gravityblast.com) - git://github.com/pilu/web-app-theme.git - -Imagemagick - Convert, Edit, Or Compose Bitmap Images - Copyright 1999-2011 ImageMagick Studio LLC - http://www.imagemagick.org/script/index.php - -FAMFAMFAM Silk icons - Copyright Mark James (http://www.twitter.com/markjames) - http://www.famfamfam.com/lab/icons/silk/ - -3 state FAMFAMFAM Silk icon sets: discrete images and CSS sprite palette - Copyright Sky Sanders - skysanders.net/subtext - -django-extensions - Extensions for Django - Copyright Bas van Oostveen (v.oostveen@gmail.com) - http://code.google.com/p/django-command-extensions/ - -django-rosetta - A Django application that eases the translation of - Django projects - Copyright Marco Bonetti (mbonetti@gmail.com) - http://code.google.com/p/django-rosetta/ - -Werkzeug - The Swiss Army knife of Python web development - Copyright Armin Ronacher (armin.ronacher@active-4.com) - http://werkzeug.pocoo.org/ - -BoundFormWizard - A subclass of Django's FormWizard that handled FormSets. - Matthew Flanagan (http://www.blogger.com/profile/15093905875465763876) - http://code.google.com/p/wadofstuff/ - -django-filetransfers - File upload/download abstraction - Waldemar Kornewald - http://www.allbuttonspressed.com/projects/django-filetransfers - -tesseract - An OCR Engine that was developed at HP Labs between 1985 and - 1995... and now at Google. - http://code.google.com/p/tesseract-ocr/ - -Image file 1068504_92921456 "Mayan piramid" (Stock Exchange) - Andres Ojeda (http://www.sxc.hu/profile/andres_ol) - -Image 1297211435_error - http://kde-look.org/usermanager/search.php?username=InFeRnODeMoN - -Fat cow icon set - http://www.fatcow.com/free-icons - -Python-magic - python-magic is a simple wrapper for libmagic - Adam Hupp - https://github.com/ahupp/python-magic - -Fancybox - FancyBox is a tool for displaying images, html content and - multi-media in a Mac-style "lightbox" that floats overtop of - web page. - http://fancybox.net - -unpaper - post-processing scanned and photocopied book pages - Jens Gulden 2005-2007 - unpaper@jensgulden.de. - http://unpaper.berlios.de/ - -celery - Celery is an open source asynchronous task queue/job queue - based on distributed message passing. It is focused on real-time - operation, but supports scheduling as well. - Copyright 2009-2011, Ask Solem & contributors - http://ask.github.com/celery/getting-started/introduction.html - -django-celery - django-celery provides Celery integration for Django; - Using the Django ORM and cache backend for storing - results, autodiscovery of task modules for applications - listed in INSTALLED_APPS, and more. - Copyright Ask Solem & contributors - http://github.com/ask/django-celery/ - -favicon - http://www.iconfinder.com/icondetails/21581/24/draw_pyramid_icon - by Gnome Project - -MongoDB - (from "humongous") is a scalable, high-performance, open - source, document-oriented database. - Copyright 10gen - http://www.mongodb.org/ - -PyMongo - is a Python distribution containing tools for working with - MongoDB, and is the recommended way to work with MongoDB from - Python. - Copyright 2009, Michael Dirolf - http://api.mongodb.org/python/ - -GridFS - is a storage specification for large objects in MongoDB - Copyright 10gen - http://www.mongodb.org/display/DOCS/GridFS+Specification - -Image 1299549572_unknown2.png - Everaldo Coelho - http://www.everaldo.com/ - -Image 1299549805_unknown.png - Oxygen Team - http://www.oxygen-icons.org/ - -django-sendfile - This is a wrapper around web-server specific methods - for sending files to web clients. - johnsensible (John Montgomery) - https://github.com/johnsensible/django-sendfile - -jQuery-Jail - Jquery Asynchronous Image Loader (JAIL) - Sebastiano Armeli-Battana (contact@sebarmeli.com) - http://www.sebastianoarmelibattana.com/projects/jail - -django-taggit - is a reusable Django application for simple tagging - Alex Gaynor (alex.gaynor@gmail.com) - http://pypi.python.org/pypi/django-taggit - -Image 392336_7079 (stock exchange) diff --git a/docs/Contributors.txt b/docs/Contributors.txt deleted file mode 100644 index c15aa8656b..0000000000 --- a/docs/Contributors.txt +++ /dev/null @@ -1,10 +0,0 @@ -Bug reports ------------ -Aziz M. Bookwala https://github.com/azizmb -tightwork https://github.com/tightwork -Joost Cassee joost@cassee.net, https://github.com/jcassee -Brian Huxley - -Bug fixes ---------- -Aziz M. Bookwala https://github.com/azizmb diff --git a/docs/FAQ b/docs/FAQ deleted file mode 100644 index bfd281e18c..0000000000 --- a/docs/FAQ +++ /dev/null @@ -1,66 +0,0 @@ -* Following error when using MySQL and doing OCR on languages other than english: - Incorrect string value: '\xE2\x80\x95rs6...' for column 'content' at row 1 - - - 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 - - -* File system links not showing on client computers 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 - - -* How to store documents outside Mayan's path: - 1)Sub class Django's FileSystemStorage class: - -Create a file called customstorage.py - - from django.core.files.storage import FileSystemStorage - - class CustomStorage(FileSystemStorage): - def __init__(self, *args, **kwargs): - super(CustomStorage, self).__init__(*args, **kwargs) - self.location='/new/path/to/documents/' - self.base_url='document_storage' - - 2)In settings.py add: - from customstorage import CustomStorage - DOCUMENTS_STORAGE_BACKEND = CustomStorage - - -* How to enable the GridFS storage backend - - Solution: - Add the following lines to settings.py: - from storage.backends.gridfsstorage import GridFSStorage - DOCUMENTS_STORAGE_BACKEND = GridFSStorage - - - Filesystem metadata indexing will not work with this storage backend as - file are inside a MongoDB database and can't be linked (at least for now) - - -* Site search is slow - - Add indexes to the following fields: - documents_document - description, recomended size: 160 - documents_documentmetadata - value, recomended size: 80 - documents_documentpage - content, recomended size: 3000 - - -* How to enable x-sendile support for Apache - - Add SENDFILE_BACKEND = 'sendfile.backends.xsendfile' to your settings.py file - - On your apache configuration file add: - XSendFile on - XSendFileAllowAbove on diff --git a/docs/INSTALL b/docs/INSTALL deleted file mode 100644 index 2ad7e5c8e7..0000000000 --- a/docs/INSTALL +++ /dev/null @@ -1,17 +0,0 @@ -apt-get update -apt-get install tesseract-ocr-spa unpaper imagemagick python-virtualenv -y -cd /usr/share -virtualenv --no-site-packages mayan -cd mayan -git clone git://github.com/rosarior/mayan.git -cd mayan -source ../bin/activate -pip install -r requirements/production.txt - - - - -#For MySQL support -apt-get install python-dev libmysqlclient-dev -pip install MySQL-python - diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000000..0271d87880 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,130 @@ +# 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 ' where 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." diff --git a/docs/Changelog.txt b/docs/changelog.rst similarity index 77% rename from docs/Changelog.txt rename to docs/changelog.rst index ee57359f3c..a39b9d06bc 100644 --- a/docs/Changelog.txt +++ b/docs/changelog.rst @@ -1,309 +1,246 @@ 2011-08-19 -Tag: Version 0.8.3 +---------- +* Added improved documentation + +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 - +* 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 - +* 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 +* 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 + + - 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 +* 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 -2011-08-06 -Tag: Version 0.8.2 - +Version 0.8.2 +------------- * Moved code to Django 1.3 - - Users must do a: ./manage.py collectstatic when deploying from this - version onwards - - The 'site_media' directory is no more, users must update the media + + - 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 + ``static`` directory instead + +* The changelog is now available under the ``about`` main menu +* ``Grappelli`` no longer bundled with Mayan -* 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 + - Users must install Grappelli or execute:: + + $ pip install --upgrade -r requirements/production.txt * Even easier UI language switching - -* Added email login method - - To enable, set: +* Added email login method, to enable it, set:: + AUTHENTICATION_BACKENDS = ('common.auth.email_auth_backend.EmailAuthBackend',) COMMON_LOGIN_METHOD = 'email' -2011-07-05 -Tag: Version 0.8.1 - +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 - + 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' + - 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 + - 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 -2011-07-23 -Tag: Version 0.8.0 - +Version 0.8.0 +------------- * 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 unknonw 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 +* ``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 + - 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 - + + + pdfminer python package + * Added PDF page count support to the python converter backend +* Added python only converter backend supporting resizing, zooming and rotation -* 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 + - 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 +* 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 + +* 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 +* 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 +* 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' +* 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 - -2011-06-28 -Tag: Version 0.7.6 - +Version 0.7.6 +------------- * Added recent searches per user support + - The ammount of searches stored is controlled by the setup option - SEARCH_RECENT_COUNT - + ``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 - + ``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 -* 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 - -2011-06-20 -Tag: Version 0.7.5 - +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 - -2011-06-13 -Tag: Version 0.7.4 - +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 - -2011-06-08 -Tag: Version 0.7.3 - +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 latests 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. -* 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. - + - 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 - -2011-05-20 -Tag: Version 0.7 - +Version 0.7 +----------- * Added confirmation dialogs icons - - -2011-May-01 * Added comment app with support for adding and deleting comments to and from documents * Updated requirements files as per issue #9 @@ -314,56 +251,45 @@ Tag: Version 0.7 * Rename comments app to document_comment to avoid conflict with Django's comment app * Made document comments searchable -* Bumped version to 0.5.5 -2011-Apr-30 -* Bumped version to 0.5.1 +Version 0.5.1 +------------- * Applied initial merge of the new subtemplate renderer * Fixed tag removal logic * Initial commit to support document comments - -2011-Apr-29 * Updated so that loading spinner is displayed always * Exclude tags from the local document upload form - -2011-Apr-28 * Added document tagging support - - Required installing django-taggit and doing a sync-db -* Bumped version to 0.5 - Added tag list view and global tag delete support - Added tag editing view and listing documents with an specific tag -2011-Apr-27 + - Requires installing ``django-taggit`` and doing a ``sync-db`` + +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 + ``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 - -2011-Apr-26 * Converter app cleanups, document pre-cache, magic number removal - -2011-Apr-25 * Added OCR view displaying all active OCR tasks from all cluster nodes -* Disabled CELERY_DISABLE_RATE_LIMITS by default +* Disabled ``CELERY_DISABLE_RATE_LIMITS`` by default * Implement local task locking using Django locmem cache backend - -2011-Apr-24 * Added doc extension to office document format list * Removed redundant tranformation calculation * Make sure OCR in processing documents cannot be deleted - -2011-Apr-23 * PEP8, pylint cleanups and removal of relative imports -* Removed the obsolote DOCUMENTS_GROUP_MAX_RESULTS setting option +* Removed the obsolote ``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 + setting: ``OCR_QUEUE_PROCESSING_INTERVAL`` * Added detection and reset of orphaned ocr documents being left as 'processing' when celery dies * Improved unkwnown format detection in the graphicsmagick backend @@ -373,58 +299,46 @@ Tag: Version 0.7 * Added sample configuration files for supervisor and apache under contrib/ * Avoid duplicates in recent document list - -2011-Apr-22 * 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 + + - 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 - -2011-Apr-21 * 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 +* 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 - -2011-Apr-20 * 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 +* 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 - -2011-Apr-19 * 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 - -2011-Apr-18 * Added support user document folders - Must to a syncdb to add the new tables -2011-Apr-17 + - Must do a ``syncdb`` to add the new tables + * Added support for listing the most recent accessed documents per user - -2011-Apr-16 * Added document page navigation - -2011-Apr-15 * Fixed diagnostics url resolution * Added confirmation dialog to document's find missing document file diagnostic @@ -432,94 +346,70 @@ Tag: Version 0.7 * Added support for the command line program pdftotext from the poppler-utils packages to extract text from PDF documents without doing OCR - -2011-Apr-14 * 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 - -2011-Apr-13 * Added view to add or remove user to a specific role - -2011-Apr-12 * Updated the jQuery packages with the web_theme app to version 1.5.2 - -2011-Apr-11 -* Made AVAILABLE_INDEXING_FUNCTION setting a setting of the documents +* 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 - -2011-Apr-08 * Changed the way document page count is parsed from the graphics backend, fixing issue #7 * Optimized document metadata query and display - -2011-Apr-07 * Implemented OCR output cleanups for English and Spanish * Redirect user to the website entry point if already logged and lands in the login template - -2011-Apr-06 * 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 - -2011-Apr-04 * 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 -2011-Apr-01 + - ``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 -2011-Mar-31 -* 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 - + - 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 - -2011-Mar-29 * Fixed issue #4, avoid circular import in permissions/__init__.py * Add a user to a default role only when the user is created - -2011-Mar-28 * Added total page count to statistics view - -2011-Mar-25 * 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 - -2011-Mar-24 * 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 - -2011-Mar-23 * Fixed the issue of the strip spaces middleware conflicting with downloads * Removed custom IE9 tags @@ -532,9 +422,6 @@ Tag: Version 0.7 * 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 - - -2011-Mar-22 * Moved navigation code to its own app * Reimplemented OCR delay code, only delay new document Added a new field: delay, update your database schema acordinging @@ -542,41 +429,27 @@ Tag: Version 0.7 handle different amounts of concurrent ocr tasks Added a new field: node_name, update your database schema acordinging * Reduced default ocr delay time - -2011-Mar-21 * Added a new diagnostics tab under the tools menu -* Added a new option OCR_REPLICATION_DELAY to allow the storage some +* 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 - -2011-Mar-20 * Added simple statistics page (total used storage, total docs, etc) - -2011-Mar-18 * 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 - -2011-Mar-16 * Added indexing flags to ocr model * Small optimization in document list view * Small search optimization - -2011-Mar-14 -* Display "DEBUG mode" string in title if DEBUG variable is set to True +* Display "DEBUG mode" string in title if ``DEBUG`` variable is set to True * Added the fix-permissions bash script under misc/ folder - -2011-Mar-12 * 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 - -2011-Mar-11 * Don't allow duplicate documents in queues -* Don't raise PermissionDenied exception in PermissionDenied middleware, +* 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 @@ -585,13 +458,9 @@ Tag: Version 0.7 * Error picture literal name removal * Spanish translation updates * Show document file path in regards of its storage - -2011-Mar-10 * Added new setting: side bar search box - -2011-Mar-09 -* Implemented new PermissioDenied exception middleware handler -* Permissions app api now returns a PermissionDenied exception instead +* 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 @@ -610,15 +479,11 @@ Tag: Version 0.7 * Added new transformation preview size setting * Renamed document queue state links * Changed ocr status display sidebar from form based to text based - -2011-Mar-08 * 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 +* Added ``LIMIT`` setting to search * Show search elapsed time on result page - -2011-Mar-07 * Converter now differentiates between unknown file format and convert errors * Close file descriptors when executing external programs to @@ -630,8 +495,6 @@ Tag: Version 0.7 * 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 - -2011-Mar-06 * Fixed duplicated document search * Optimized document duplicate search * Added locale middleware, menu bar language switching works now @@ -642,80 +505,54 @@ Tag: Version 0.7 * Added document queue property side bar window to the document queue list view * Added HTML spaceless middleware to remove whitespace in HTML code - -2011-Mar-05 * 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 - -2011-Mar-04 * Initial GridFS storage support * Implemented size and delete methods for GridFS * Implement GridFS storage user settings - -2011-Mar-03 * 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;) - -2011-Feb-26 * 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 - - Step to update: - 1) rename the following settings: - DOCUMENTS_FILESYSTEM_FILESERVING_ENABLE - DOCUMENTS_FILESYSTEM_FILESERVING_PATH - DOCUMENTS_FILESYSTEM_SLUGIFY_PATHS - DOCUMENTS_FILESYSTEM_MAX_RENAME_COUNT - to: - FILESYSTEM_FILESERVING_ENABLE - FILESYSTEM_FILESERVING_PATH - FILESYSTEM_SLUGIFY_PATHS - FILESYSTEM_MAX_RENAME_COUNT - - 2) Do a ./manage.py syncdb - 3) Execute 'Recreate index links' locate in the tools menu - 4) Wait a few minutes - - Some warnings may be returned, but these are not fatal as they - might be related to missing metadata in some documents. -2011-Feb-21 + - 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 - -2011-Feb-19 * 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 - -2011-Feb-17 * Added support for concurrent, queued OCR processing using celery - -2011-Feb-16 * Apply default transformations to document before OCR * Added unpaper to the OCR convertion pipe - -2011-Feb-15 * Added views to create, edit and grant/revoke permissions to roles - -2011-Feb-14 * Added multipage documents support (only tested on pdfs) - To update a previous database do: [d.update_page_count() for d in - Document.objects.all()] + + - 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) - -2011-Feb-13 * Added permissions and roles support - -2011-Feb-10 * Added python-magic for smarter MIME type detection (https://github.com/ahupp/python-magic). * Added a new Document model field: file_mime_encoding. @@ -723,7 +560,6 @@ Tag: Version 0.7 * 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) diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 0000000000..a99cb50c41 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,216 @@ +# -*- coding: utf-8 -*- +# +# 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 + +# 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.insert(0, os.path.abspath('.')) + +# -- 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'] + +# 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 = u'Mayan EDMS' +copyright = u'2011, Roberto Rosario' + +# 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 = '0.8.3' +# The full version, including alpha/beta/rc tags. +release = '0.8.3' + +# 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 = True + +# 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 = 'default' + +# 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 +# " v 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 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', u'Mayan EDMS Documentation', + u'Roberto Rosario', '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', u'Mayan EDMS Documentation', + [u'Roberto Rosario'], 1) +] diff --git a/docs/contributors.txt b/docs/contributors.txt new file mode 100644 index 0000000000..6c52941e3e --- /dev/null +++ b/docs/contributors.txt @@ -0,0 +1,10 @@ +Bug reports +----------- +* Aziz M. Bookwala (https://github.com/azizmb) +* tightwork (https://github.com/tightwork) +* Joost Cassee (joost@cassee.net, https://github.com/jcassee) +* Brian Huxley + +Bug fixes +--------- +* Aziz M. Bookwala (https://github.com/azizmb) diff --git a/docs/credits.rst b/docs/credits.rst new file mode 100644 index 0000000000..18a45de71f --- /dev/null +++ b/docs/credits.rst @@ -0,0 +1,110 @@ +* Python + * Copyright (c) 2001-2010 Python Software Foundation. + * Copyright (c) 2000 BeOpen.com. + * Copyright (c) 1995-2001 Corporation for National Research Initiatives. + * Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam. + +* Django - A high-level Python Web framework that encourages rapid development and clean, pragmatic design. + * Copyright Django Software Foundation + * http://www.djangoproject.com/ + +* django-pagination + * Copyright Eric Florenzano (floguy@gmail.com) + * http://django-pagination.googlecode.com/ + +* Web App Theme + * Copyright Andrea Franz (http://gravityblast.com) + * git://github.com/pilu/web-app-theme.git + +* Imagemagick - Convert, Edit, Or Compose Bitmap Images + * Copyright 1999-2011 ImageMagick Studio LLC + * http://www.imagemagick.org/script/index.php + +* FAMFAMFAM Silk icons + * Copyright Mark James (http://www.twitter.com/markjames) + * http://www.famfamfam.com/lab/icons/silk/ + +* 3 state FAMFAMFAM Silk icon sets: discrete images and CSS sprite palette + * Copyright Sky Sanders + * skysanders.net/subtext + +* django-extensions - Extensions for Django + * Copyright Bas van Oostveen (v.oostveen@gmail.com) + * http://code.google.com/p/django-command-extensions/ + +* django-rosetta - A Django application that eases the translation of Django projects + * Copyright Marco Bonetti (mbonetti@gmail.com) + * http://code.google.com/p/django-rosetta/ + +* Werkzeug - The Swiss Army knife of Python web development + * Copyright Armin Ronacher (armin.ronacher@active-4.com) + * http://werkzeug.pocoo.org/ + +* BoundFormWizard - A subclass of Django's FormWizard that handled FormSets. + * Matthew Flanagan (http://www.blogger.com/profile/15093905875465763876) + * http://code.google.com/p/wadofstuff/ + +* django-filetransfers - File upload/download abstraction + * Waldemar Kornewald + * http://www.allbuttonspressed.com/projects/django-filetransfers + +* tesseract - An OCR Engine that was developed at HP Labs between 1985 and 1995... and now at Google. + * http://code.google.com/p/tesseract-ocr/ + +* Image file 1068504_92921456 "Mayan piramid" (Stock Exchange) + * Andres Ojeda (http://www.sxc.hu/profile/andres_ol) + +* Image 1297211435_error + * http://kde-look.org/usermanager/search.php?username=InFeRnODeMoN + +* Fat cow icon set + * http://www.fatcow.com/free-icons + +* Python-magic - python-magic is a simple wrapper for libmagic + * Adam Hupp + * https://github.com/ahupp/python-magic + +* Fancybox - FancyBox is a tool for displaying images, html content and multi-media in a Mac-style "lightbox" that floats overtop of web page. + * http://fancybox.net + +* unpaper - post-processing scanned and photocopied book pages + * Jens Gulden 2005-2007 - unpaper@jensgulden.de. + * http://unpaper.berlios.de/ + +* celery - Celery is an open source asynchronous task queue/job queue based on distributed message passing. It is focused on real-time operation, but supports scheduling as well. + * Copyright 2009-2011, Ask Solem & contributors + * http://ask.github.com/celery/getting-started/introduction.html + +* django-celery - django-celery provides Celery integration for Django + * Copyright Ask Solem & contributors + * http://github.com/ask/django-celery/ + +* favicon + * http://www.iconfinder.com/icondetails/21581/24/draw_pyramid_icon + * Gnome Project + +* MongoDB - (from "humongous") is a scalable, high-performance, open source, document-oriented database. + * Copyright 10gen + * http://www.mongodb.org/ + +* PyMongo - is a Python distribution containing tools for working with MongoDB, and is the recommended way to work with MongoDB from Python. + * Copyright 2009, Michael Dirolf + * http://api.mongodb.org/python/ + +* GridFS - is a storage specification for large objects in MongoDB + * Copyright 10gen + * http://www.mongodb.org/display/DOCS/GridFS+Specification + +* django-sendfile - This is a wrapper around web-server specific methods for sending files to web clients. + * johnsensible (John Montgomery) + * https://github.com/johnsensible/django-sendfile + +* jQuery-Jail - Jquery Asynchronous Image Loader (JAIL) + * Sebastiano Armeli-Battana (contact@sebarmeli.com) + * http://www.sebastianoarmelibattana.com/projects/jail + +* django-taggit - is a reusable Django application for simple tagging + * Alex Gaynor (alex.gaynor@gmail.com) + * http://pypi.python.org/pypi/django-taggit + +* Image 392336_7079 (stock exchange) diff --git a/docs/faq.rst b/docs/faq.rst new file mode 100644 index 0000000000..94362f1edc --- /dev/null +++ b/docs/faq.rst @@ -0,0 +1,98 @@ +=== +FAQ +=== +Frequently asked questions and solutions + + +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 + +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 + + +How to store documents outside Mayan's path +------------------------------------------- + + * Sub class Django's ``FileSystemStorage`` class: + + - Create a file called ``customstorage.py``:: + + from django.core.files.storage import FileSystemStorage + + class CustomStorage(FileSystemStorage): + def __init__(self, *args, **kwargs): + super(CustomStorage, self).__init__(*args, **kwargs) + self.location='/new/path/to/documents/' + self.base_url='document_storage' + + - In the ``settings.py`` add:: + + from customstorage import CustomStorage + DOCUMENTS_STORAGE_BACKEND = CustomStorage + + +How to enable the ``GridFS`` storage backend +-------------------------------------------- + + * Solution: + + - Add the following lines to ``settings.py``:: + + from storage.backends.gridfsstorage import GridFSStorage + DOCUMENTS_STORAGE_BACKEND = GridFSStorage + + - Filesystem metadata indexing will not work with this storage backend as + the files are inside a ``MongoDB`` database and can't be linked (at least for now) + + +Site search is slow +------------------- + + * Add indexes to the following fields: + + - ``documents_document`` - description, recomended size: 160 + - ``documents_documentmetadata`` - value, recomended size: 80 + - ``documents_documentpage`` - content, recomended size: 3000 + + +How to enable x-sendile support for ``Apache`` +---------------------------------------------- + + * Add the following line to your ``settings.py`` file:: + + SENDFILE_BACKEND = 'sendfile.backends.xsendfile' + + * On your apache configuration file add:: + + XSendFile on + XSendFileAllowAbove on diff --git a/docs/features.rst b/docs/features.rst new file mode 100644 index 0000000000..1f42501bf2 --- /dev/null +++ b/docs/features.rst @@ -0,0 +1,20 @@ +======== +Features +======== +* User defined meta-data fields +* Dynamic default values for metadata +* Filesystem integration +* User defined document unique identifier and checksum algorithms +* Local file or server side file uploads +* Batch upload many documents with the same meta-data +* Previews for a great deal of image formats, including PDF +* Full text searching +* Configurable document grouping +* Permissions and roles support +* Multi page document support +* Distributed OCR processing +* Multilingual user interface (English, Spanish) +* Multilingual OCR support +* Duplicated document search +* Plugable storage backends (File based and GridFS included) +* Color coded tagging diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 0000000000..c2960f71a6 --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,35 @@ +========== +Mayan EDMS +========== + +Open source, Django_ based document manager with custom metadata indexing, file serving integration and OCR capabilities. + +.. _Django: http://www.djangoproject.com/ + + +:Website: http://bit.ly/mayan-edms +:Source: http://github.com/rosarior/mayan + + +Overview +======== + +Bulk upload documents directly or by using a staging folder to receive +scanned documents. Organize using document classes and custom meta-data +as well as automatic document grouping. Find document by means of full +text searching, either meta-data, document properties, content extracted +from PDFs or transcribed by OCR. + + +Contents +======== + +.. toctree:: + :maxdepth: 2 + + features + requirements + installation + updates + license + faq diff --git a/docs/installation.rst b/docs/installation.rst new file mode 100644 index 0000000000..69dccf626a --- /dev/null +++ b/docs/installation.rst @@ -0,0 +1,45 @@ +============ +Installation +============ +Mayan EDMS should be installed like any other Django project and preferably using ``virtualenv``. + +If using a Debian_ or Ubuntu_ based Linux distribution getting the executable requirements is as easy as:: + + $ apt-get install tesseract-ocr unpaper python-virtualenv ghostscript -y + +To initialize a ``virtualenv`` to deploy the project do:: + + $ virtualenv --no-site-packages mayan + +Download_ and uncompress the latest version of Mayan:: + + $ cd mayan + $ tar -xvzf mayan.tar.gz + +Or clone the latest development version straight from github:: + + $ cd mayan + $ git clone git://github.com/rosarior/mayan.git + +To install the python depencies ``easy_install`` can be used, however for easier retrieval a production dependencies file is included, to use it execute:: + + $ cd mayan + $ source ../bin/activate + $ pip install -r requirements/production.txt + +Create the database that will hold the data. Install any corresponding python database drivers. Update the settings.py file with you database settings. +If using the ``MySQL`` database manager, use the following commands:: + + $ apt-get install python-dev libmysqlclient-dev gcc -y + $ pip install MySQL-python + +Populate the database with the project's schema doing:: + + $ ./manage.py syncdb + +After that deploy it using the webserver of your preference. Using your are using Apache_, a sample site file is included under the contrib directory. + +.. _Apache: https://www.apache.org/ +.. _Debian: http://www.debian.org/ +.. _Ubuntu: http://www.ubuntu.com/ +.. _Download: https://github.com/rosarior/mayan/archives/master diff --git a/docs/license.rst b/docs/license.rst new file mode 100644 index 0000000000..02cf0ef6d4 --- /dev/null +++ b/docs/license.rst @@ -0,0 +1,14 @@ +======= +License +======= + +Mayan EDMS is distributed under the `GNU GPL Version 3.0 License`_. +The complete license terms are included below. + +.. _`GNU GPL Version 3.0 License`: https://www.gnu.org/licenses/gpl-3.0.html + + +License terms +============= + +.. include:: LICENSE diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 0000000000..b94cd00824 --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,155 @@ +@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 ^` where ^ 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 diff --git a/docs/requirements.rst b/docs/requirements.rst new file mode 100644 index 0000000000..c87a9fe6bd --- /dev/null +++ b/docs/requirements.rst @@ -0,0 +1,57 @@ +============ +Requirements +============ +Mayan EDMS supports various levels of functionality because of this +requirements can vary for each individual deployment. + +Basic requirements +================== + +Python: + +* ``Django`` - A high-level Python Web framework that encourages rapid development and clean, pragmatic design. +* ``django-pagination`` +* ``django-filetransfers`` - File upload/download abstraction +* ``django-mptt`` - Utilities for implementing a modified pre-order traversal tree in django +* ``django-taggit`` - Simple tagging for django +* ``slate`` - The simplest way to extract text from PDFs in Python + + +Execute pip install -r requirements/production.txt to install the python/django dependencies automatically. + +Executables: + +* ``tesseract-ocr`` - An OCR Engine that was developed at HP Labs between 1985 and 1995... and now at Google. +* ``unpaper`` - post-processing scanned and photocopied book pages + +Optional requirements +===================== + +To enable distributed OCR support +--------------------------------- + +* ``celery`` - asynchronous task queue/job queue based on distributed message passing +* ``django-celery`` - ``celery`` Django integration + +To store documents in a GridFS database +--------------------------------------- + +* ``PyMongo`` - the recommended way to work with ``MongoDB`` from Python +* ``GridFS`` - a storage specification for large objects in ``MongoDB`` +* ``MongoDB`` - a scalable, open source, document-oriented database + +Enchanced MIME detection +------------------------ + +* ``libmagic`` - MIME detection library, if not installed Mayan will fall back to using python's simpler mimetype built in library +* ``python-magic`` - A python wrapper for libmagic + +Image conversion backends +------------------------- +Mayan has the ability to switch between different image conversion backends, at the moment these three are supported: + +* ``ImageMagick`` - Convert, Edit, Or Compose Bitmap Images. +* ``GraphicMagick`` - Robust collection of tools and libraries to read, write, and manipulate an image. +* Python only - Relies on ``PIL`` to support a limited set of the most common graphics formats. + +By default the python backend is used. diff --git a/docs/updates.rst b/docs/updates.rst new file mode 100644 index 0000000000..46a2b4b31f --- /dev/null +++ b/docs/updates.rst @@ -0,0 +1,26 @@ +============================ +Changes, updates and credits +============================ + +Changelog +========= + +.. include:: changelog.rst + + +Credits +======= + +.. include:: credits.rst + + +.. _helping-out: + +Contributors +============ +How to contribute? +------------------ + +You can help further the development of Mayan EDMS by reporting bugs, submitting documentation, patches, with monetary or hardware donations. + +.. include:: contributors.txt