Simplify documentation structure, small upgrades to documentation

This commit is contained in:
Roberto Rosario
2014-11-04 18:46:24 -04:00
parent 92ec4861d1
commit 61dfb20529
16 changed files with 47 additions and 93 deletions

View File

@@ -0,0 +1,91 @@
.. _contributors:
============
Contributors
============
How to contribute?
------------------
You can help further the development of **Mayan EDMS** by reporting bugs, submitting documentation, patches, with monetary or hardware donations.
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)
* Jens Kadenbach (https://github.com/audax)
* Kolmar Kafran
* 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)
Translations
------------
* Bulgarian
- Iliya Georgiev (ikgeorgiev@gmail.com)
- Pavlin Koldamov (pkoldamov@gmail.com)
* Dutch (Netherlands)
- Lucas Weel
* French
- Pierre Lhoste (peter.cathbad.host@gmail.com)
- PatrickHetu (patrick.hetu@gmail.com)
* German (Germany)
- Tetja Rediske (tetja.rediske@googlemail.com)
- Tilmann Sittig (tilmann.sittig@web.de)
- Manticor (sl@suchreflex.de)
- Mathias Behrle <mbehrle@m9s.biz>
- Tobias Paepke <https://twitter.com/paepke_net>
* Italian
- Pierpaolo Baldan (pierpaolo.baldan@gmail.com)
- SeeOpen.IT (Numero Verde: 800.910.125, E-mail: sales@seeopen.it)
- Carlo Zanatto
* Polish
- mic (diveaway12@gmail.com, winterfall24@gmail.com)
* Portuguese
- Vítor Figueiró (vfigueiro@gmail.com)
* Portuguese (Brazil)
- Emerson Soares (dev.emerson@gmail.com)
- Renata Oliveira (renatabels@gmail.com)
- Fábio (bnafta@gmail.com)
* Russian
- Sergey Glita (s.v.glita@gmail.com)
* Slovenian (Slovenia)
- kontrabant (kontrabant@gmail.com)
* Spanish
- Roberto Rosario

133
docs/topics/faq.rst Normal file
View File

@@ -0,0 +1,133 @@
===
FAQ
===
Frequently asked questions and solutions
Database related
----------------
**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
Document sharing
----------------
**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
Document handling
-----------------
**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.
Deployments
-----------
**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
Other
-----
**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.

96
docs/topics/features.rst Normal file
View File

@@ -0,0 +1,96 @@
========
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.
* Word processing files, spreadsheets, presentations are common supported formats.
* User defined metadata fields and meta data sets.
* Metadata fields can be grouped into sets 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 Python code snippet.
* Filesystem integration.
* If enabled, the document database index can be mirrored in the filesystem of the host and shared via Samba_ or any other sharing method to client computers on a network.
* User defined document unique identifier and checksum algorithms.
* Users can alter the default method used to uniquely indentify documents.
* 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 a great deal of image formats, including PDF.
* **Mayan EDMS** provides different file conversion backends with different levels of functionality and requirements to adapt to different deployment environments.
* 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.
* :doc:`Distributed OCR processing <../topics/ocr>`.
* 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** is written using the Django_ framework, which natively supports Unicode. Together with the use of text templates **Mayan EDMS** can be translated to practically any language spoken in the world.
For a list of translated languages have a look at Transifex_.
* :doc:`Multilingual OCR support <../topics/ocr>`.
* Multilingual OCR is provided as supported by the available language backends of the OCR engine tesseract.
* :doc:`Plugable storage backends <../topics/file_storage>` (File based and GridFS included).
* 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.
.. _`Dublin core`: http://dublincore.org/metadata-basics/
.. _Samba: http://www.samba.org/
.. _Django: https://www.djangoproject.com/
.. _Transifex: https://www.transifex.com/projects/p/mayan-edms/

View File

@@ -0,0 +1,132 @@
===============
Getting started
===============
This chapter will guide you through the initial steps needed to get **Mayan EDMS**
up and running after installation.
The easy 2 step setup
=====================
Document sources
----------------
|Setup tab| |Right arrow| |Sources button| |Right arrow| |Web form tab|
Before anything else you must define from where you will feed **Mayan EDMS**
documents for it to process and store. To do this first go to the ``Setup`` tab
then to the ``Sources`` button. To obtain the fastest working setup, create a
new source of type ``Web forms``. This source will open a browser file upload
dialog, hence the name ``Web forms``. Name it something simple like ``Local documents``,
choose an icon to visually identify this document if you so wish and select whether or not
compressed files uploaded from this source will be automatically decompressed and
their content treated as individual documents.
Quickly bootstraping your Mayan EDMS install
--------------------------------------------
|Setup tab| |Right arrow| |Bootstrap button|
**Mayan EDMS** includes an app called ``Bootstrap``. This app stores
scripted configurations, that when executed will setup your installation of **Mayan EDMS**.
From there you can then fine tune this setup to your needs. To use this
app go to the ``Setup`` area and launch the app using the ``Bootstrap`` button.
.. hint:: Predefined sample setups can be downloaded from the
`Official bootstrap setup repository for Mayan EDMS`_. If you want to use
one of the available setups for testing or as a starting point, choose one
and import it with ``Import from URL``. Finally execute it on an empty database.
The longer custom setup
=======================
Setting your document types
---------------------------
|Setup tab| |Right arrow| |Document types button|
If none of the available bootstrap setups fit your needs and your wish to
setup **Mayan EDMS** from scratch, the first thing to consider is what your document
types will be. Examples of document types are: ``Legal documents``,
``Internal documents``, ``Medical records``, ``Designing specifications``, ``Permits``.
A document type represents a group, a type, a class of documents which share some
common properties. A good indicator that can help you determine you document types
is what kind of information or ``metadata`` is attached to the documents.
Defining metadata
-----------------
|Setup tab| |Right arrow| |Metadata types button|
With your document types defined it should be much easier now to define the required
``metadata`` for each of these document types. When creating ``metadata`` types,
the first thing that will be needed is the internal name with which this metadata
type will be referenced in other areas of **Mayan EDMS**. Internal name is like a
variable so it should not contain spaces or uppercase characters. After the internal name,
enter the name that will be visible to you and your users, this is usually the same as the
internal name but with proper capitalization and spacing. ``metadata`` types
can have default values to speed up data entry, default static values are enclosed in
quotes, ie::
"Building A"
or::
"Storage room 1"
Default values can also be defined as ``Python`` statements or functions such as::
current_date()
If you want to restrict or standardize the values for a metadata type, use the ``Lookup`` field to
define the list of options that are allowed. Define the lookup list using a ``Python``
list of quoted values, for example::
["2000", "2001", "2002", "2003", "2004"].
Instead of a free entry text field, your users will get a dropdown list of years.
You can also use a ``Python`` expression to generate the lookup list.
When you are uploading a new document, a choice of metadata types will be presented
and you choose which of those you wish to enter for the document you are about
to upload. To speed data entry you can also match which metadata types will
be preselected when uploading a document of a certain type. To match metadata types
to document types, go to the ``setup`` tab, ``document types`` button, and
lastly ``Default metadata``. Choose the desired metadata for the document type
currently selected and press ``Add``. From now on whenever you upload a document of
this type, the related metadata types for this document type will be preselected.
After defining all your metadata types you can also define your indexes to
let **Mayan EDMS** automatically categorize your documents based on their metadata.
Refer to the chapter named :doc:`Indexes </topics/indexes>` for examples on how to
use the document indexes.
.. |Setup tab| image:: /_static/setup_tab.png
:alt: Setup tab
:align: middle
.. |Sources button| image:: /_static/sources_button.png
:alt: Sources button
:align: middle
.. |Web form tab| image:: /_static/web_form_source_tab.png
:alt: Web form tab
:align: middle
.. |Bootstrap button| image:: /_static/bootstrap_button.png
:alt: Bootstrap button
:align: middle
.. |Right arrow| image:: /_static/arrow_right.png
:alt: Right arrow
:align: middle
.. |Document types button| image:: /_static/document_types_button.png
:alt: Document types button
:align: middle
.. |Metadata types button| image:: /_static/metadata_types_button.png
:alt: Metadata types button
:align: middle
.. _DjangoZoom: http://djangozoom.com/
.. _`Official bootstrap setup repository for Mayan EDMS`: http://bootstrap.mayan-edms.com/

View File

@@ -6,18 +6,26 @@ Introductions to all the key parts of Mayan EDMS you'll need to know:
.. toctree::
:maxdepth: 1
file_storage
initial_import
permissions
transformations
document_visualization
versioning
signatures
indexes
smart_links
tags
ocr
settings
contributors
development
documentation
document_visualization
faq
features
file_storage
getting_started
indexes
initial_import
installation
license
ocr
overview
permissions
requirements
settings
signatures
smart_links
tags
transformations
translations
versioning

View File

@@ -2,30 +2,6 @@
Initial data loading
====================
Bulk document import
--------------------
**Mayan EDMS** has the ability to individually upload the contents of compressed
files, however by nature of being a web based application it is bounded by the
limitations of the HTTP protocol. This imposes a limit on the file size and
the amount of time **Mayan EDMS** may keep a connection open while it processes
compressed files. When the desired amount of documents is bigger than what
these limitations allow, **Mayan EDMS** provides a command line tool for out of
process document importation.
The command line options for this feature are as follows::
$ mayan-edms.py bulk_upload --noinput --metadata '{"project": "bulk"}' --document_type "Accounting documents" compressed.zip
**Optional arguments**
* The ``--noinput`` argument skips confirmation and starts the upload immediately.
* The ``--metadata`` argument allows specifing what metadata will be assigned
to the documents when uploaded.
* And the ``--document_type`` applies a previously defined
document type to the uploaded documents.
Bulk user import
----------------

View File

@@ -0,0 +1,84 @@
============
Installation
============
Ubuntu, Debian or Fedora server
-------------------------------
**Mayan EDMS** should be deployed like any other Django_ project and preferably using virtualenv_.
Being a Django_ and a Python_ project familiarity with these technologies is
required to understand why **Mayan EDMS** does some of the things it does the way
it does them.
Before installing **Mayan EDMS**, the :doc:`binary requirements <requirements>` must be installed first:
If using a Debian_ or Ubuntu_ based Linux distribution getting the executable requirements is as easy as::
$ sudo apt-get install python-dev gcc tesseract-ocr unpaper python-virtualenv ghostscript libjpeg-dev libpng-dev poppler-utils -y
If using a Fedora_ based Linux distribution get the executable requirements using Yum::
$ sudo yum install -y git gcc tesseract unpaper python-virtualenv ghostscript libjpeg-turbo-devel libpng-devel poppler-util python-devel
Initialize a ``virtualenv`` to deploy the project:
.. code-block:: bash
$ virtualenv venv
$ source venv/bin/activate
$ pip install mayan-edms
By default **Mayan EDMS** will create a single file SQLite_ database, which makes
it very easy to start using **Mayan EDMS**. Populate the database with the project's schema doing:
.. code-block:: bash
$ mayan-edms.py initialsetup
$ mayan-edms.py runserver
Point your browser to http://127.0.0.1:8000. If everything was installed
correctly you should see the login screen and panel showing a randomly generated admin password.
Production use
--------------
To create a custom settings file for **Mayan EDMS**, create a Python (.py) file
in the directory: venv/lib/python2.7/site-packages/mayan/settings/ with the following basic content::
# my_settings.py
from __future__ import absolute_import
from .local import *
<Your customized settings>
To test your settings launch **Mayan EDMS** using::
$ mayan-edms.py runserver --settings=mayan.settings.my_settings
After making sure everything is running correctly, stop the runserver command.
Deploy **Mayan EDMS** using the webserver of your preference. For more information
on deployment instructions and examples checkout Django's official documentation
on the topic https://docs.djangoproject.com/en/1.6/howto/deployment/
Other database managers
-----------------------
If you want to use a database manager other than SQLite_ install any
corresponding python database drivers and add the corresponding database settings
to your settings file (see above) as shown here: https://docs.djangoproject.com/en/1.6/ref/settings/#std:setting-DATABASES
.. _Python: http://www.python.org/
.. _Django: http://www.djangoproject.com/
.. _Django: http://www.djangoproject.com/
.. _Debian: http://www.debian.org/
.. _Ubuntu: http://www.ubuntu.com/
.. _Download: https://github.com/mayan-edms/mayan-edms/archives/master
.. _virtualenv: http://www.virtualenv.org/en/latest/index.html
.. _Fedora: http://fedoraproject.org/
.. _SQLite: https://www.sqlite.org/

14
docs/topics/license.rst Normal file
View File

@@ -0,0 +1,14 @@
=======
License
=======
**Mayan EDMS** is distributed under the `Apache 2.0 License`_.
The complete license terms are included below.
.. _Apache 2.0 License: https://www.apache.org/licenses/LICENSE-2.0.txt
License terms
=============
.. include:: ../../LICENSE

18
docs/topics/overview.rst Normal file
View File

@@ -0,0 +1,18 @@
====================
History and overview
====================
**Mayan EDMS** started as a simple project whose only requirement was the storage of PDF files, from there it has grown into a complete electronic document management solution.
**Mayan EDMS** can optimize an organization's bulk upload, storage and retrieval of documents.
Documents are organized using document classes, user defined metadata fields as well as automatic document grouping and indexing. Documents can be retrieved from the document index or by means of full
text searching. Users can search for terms in the document's metadata, properties or contents extracted from PDFs or transcribed by OCR_.
**Mayan EDMS** is written in Python_ using the Django_ framework, which makes it very agile and fast, specially when compared with existing Java based solutions.
Being based on patent free, `Open source`_ technologies, **Mayan EDMS** provides legal safety to users and organizations, as well as peace of mind as documents and all related information is stored in open source and transparent formats allowing portability and avoiding `vendor lock-in`_.
Being written using Python_, **Mayan EDMS** runs on many POSIX compliant operating systems. Featuring many configuration parameters, **Mayan EDMS** allows to be deployed on many hardware and software configurations such as single server based, clusters, virtualized and cloud based hosting giving adopters the choice of using the infrastructure of their choice.
.. _`vendor lock-in`: https://secure.wikimedia.org/wikipedia/en/wiki/Vendor_lock-in
.. _Python: http://www.python.org/
.. _Django: http://www.djangoproject.com/
.. _OCR: https://secure.wikimedia.org/wikipedia/en/wiki/Optical_character_recognition
.. _`Open source`: https://secure.wikimedia.org/wikipedia/en/wiki/Open_source

View File

@@ -0,0 +1,50 @@
============
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.
Execute pip install -r requirements/production.txt to install the python/django dependencies automatically.
Executables:
* ``gpg`` - The GNU Privacy Guard
Optional requirements
=====================
Improved OCR
------------
* ``unpaper`` - post-processing scanned and photocopied book pages
Enhanced MIME detection
------------------------
* ``libmagic`` - MIME detection library, if not installed **Mayan EDMS** will fall back to using python's simpler mimetype built in library
* ``python-magic`` - A python wrapper for libmagic
OCR backends
------------
** Mayan EDMS** can make use of different OCR engines via OCR backends. By default it will use the ``Tesseract OCR backend``.
* ``tesseract-ocr`` - An OCR Engine that was developed at HP Labs between 1985 and 1995... and now at Google. Version 3.x or greater required.
Image conversion backends
-------------------------
**Mayan EDMS** 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 ``Pillow`` to support a limited set of the most common graphics formats.
By default the python backend is used.