Documentation updates

This commit is contained in:
Roberto Rosario
2015-01-29 13:52:56 -04:00
parent 3e3c21b375
commit 4cfd88f834
18 changed files with 290 additions and 771 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

View File

@@ -1,8 +1,8 @@
.. _contents:
=================================
Mayan EDMS documentation contents
=================================
========
Contents
========
.. toctree::
:hidden:

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 51 KiB

View File

@@ -37,7 +37,6 @@ First steps
:doc:`Overview <topics/overview>` |
:doc:`Features <topics/features>` |
:doc:`Requirements <topics/requirements>` |
:doc:`Installation <topics/installation>` |
:doc:`Getting started <topics/getting_started>`
@@ -45,7 +44,6 @@ Understanding Mayan EDMS
========================
:doc:`File storage <topics/file_storage>` |
:doc:`Initial data loading <topics/initial_import>` |
:doc:`Permission system <topics/permissions>` |
:doc:`Transformations <topics/transformations>` |
:doc:`Document visualization <topics/document_visualization>` |
@@ -68,7 +66,7 @@ Customization and fine tunning
For developers
==============
:doc:`Development <topics/development>` | :doc:`Documentation <topics/documentation>` | :doc:`Translations <topics/translations>`
:doc:`Development <topics/development>`
Credits
=======

View File

@@ -16,7 +16,7 @@ check outs have been added too as per the feature request posted as `issue #26`_
The way the history events for a document are presented has been improved and
it is now more useful as it provides filtering by event type. To improve
the diagnosis of installation of runtime error a simple view showing the
number of internal interval jobs being used by Mayan EDMS as well as a
number of internal interval jobs being used by Mayan EDMS as well as a
new app which shows a detail of the current installation enviroment were added.
What's new in Mayan EDMS v0.12.2
@@ -35,9 +35,6 @@ created an administrator account of username 'admin' with a password of
'admin'. The new default is to randomize an initial password and show this password
at the login screen until the administrator password is changed.
.. image:: mayan_first_login.png
:alt: First login dialog
Document check outs
~~~~~~~~~~~~~~~~~~~
As per the feature request filed under `issue #26`_, a new document
@@ -47,7 +44,7 @@ editing conflicts. Document check outs have an expiration period after which
**Mayan EDMS** will automatically check them back in to avoid a permanent
document lockout. Only the user who has checked out a document can upload
new versions of it or check the document back in before the expiration period,
unless being granted the ``Allow overriding check out restrictions`` or
unless being granted the ``Allow overriding check out restrictions`` or
``Forcefully check in documents`` permission respectively.
Installation environment app
@@ -109,7 +106,7 @@ Bugs fixed
* `issue #26`_ "checkout feature request"
Stuff removed
=============
=============
* Feedback app

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -8,7 +8,7 @@ Contributors
How to contribute?
------------------
You can help further the development of **Mayan EDMS** by reporting bugs, submitting documentation, patches, with monetary or hardware donations.
You can help further the development of **Mayan EDMS** by testing, reporting bugs, submitting documentation or code patches.
Lead developer
--------------
@@ -33,59 +33,3 @@ Contributors (in alphabetical order)
* 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

View File

@@ -7,13 +7,235 @@ Development
If you have a feature request, suggestion, or bug reports, please open a new
issue on the `GitHub issue tracker`_. To submit patches, please send a pull
request on GitHub_. Contributors are credited accordingly on the :ref:`contributors` section.
Follow the coding conventions document available at: https://github.com/mayan-edms/mayan-edms/wiki/Coding-conventions
request on GitHub_. Make sure to add yourself to the :ref:`contributors` file.
.. _GitHub: https://github.com/mayan-edms/mayan-edms/
.. _`GitHub issue tracker`: https://github.com/mayan-edms/mayan-edms/issues
Coding conventions
------------------
Follow PEP8
~~~~~~~~~~~
Whenever possible, but don't obsess over things like line length.
.. code-block:: bash
$ flake8 --ignore=E501,E128,E122 |less
Imports
~~~~~~~
Import order should be:
- Standard Python modules
- Installed Python modules
- Core Django modules
- Installed Django modules
- Mayan EDMS modules
- Local imports
Example:
.. code-block:: bash
from __future__ import absolute_import
# Standard Python library
import base64
# 3rd party installed Python libraries
import requests
# Django core modules
from django.db.models import Q
from django.template.defaultfilters import slugify
from django.utils.translation import ugettext
from django.utils.translation import ugettext_lazy as _
# 3rd party installed Django libraries
from rest_framework import APIView
# Mayan apps
from metadata.classes import MetadataClass
# Local app imports (relative)
from .conf.settings import (
AVAILABLE_INDEXING_FUNCTIONS,
MAX_SUFFIX_COUNT, SLUGIFY_PATHS
)
from .exceptions import MaxSuffixCountReached
from .filesystem import (
fs_create_index_directory, fs_create_document_link,
fs_delete_document_link, fs_delete_index_directory,
assemble_suffixed_filename
)
from .models import Index, IndexInstanceNode, DocumentRenameCount
All local app module imports are in relative form, local app module name is to be referenced as little as possible, unless required by a specific feature, trick, restriction, ie: Runtime modification of the module's attributes.
Incorrect:
.. code-block:: bash
# documents app views.py model
from documents.models import Document
Correct:
.. code-block:: bash
# documents app views.py model
from .models import Document
Dependencies
~~~~~~~~~~~~
**Mayan EDMS** apps follow a hierarchical model of dependency. Apps import from their parents or siblings, never from their children. Think plugins. A parent app must never assume anything about a possible existing child app. The documents app and the Document model are the basic entities they must never import anything else. The common and main apps are the base apps.
Variables
~~~~~~~~~
Naming of variables should follow a Major to Minor convention, usually including the purpose of the variable as the first piece of the name, using underscores as spaces. camelCase is not used in **Mayan EDMS**.
Examples:
Links:
.. code-block:: bash
link_document_page_transformation_list = ...
link_document_page_transformation_create = ...
link_document_page_transformation_edit = ...
link_document_page_transformation_delete = ...
Constants:
.. code-block:: bash
PERMISSION_SMART_LINK_VIEW = ...
PERMISSION_SMART_LINK_CREATE = ...
PERMISSION_SMART_LINK_DELETE = ...
PERMISSION_SMART_LINK_EDIT = ...
Classes:
.. code-block:: bash
class Document(models.Model):
class DocumentPage(models.Model):
class DocumentPageTransformation(models.Model):
class DocumentType(models.Model):
class DocumentTypeFilename(models.Model):
Strings
~~~~~~~
Quotation character used in **Mayan EDMS** for strings is the single quote. Double quote is used for multiline comments or HTML markup.
General
~~~~~~~
Code should appear in their modules in alphabetic order or in their order of importance if it makes more sense for the specific application.
This makes visual scanning easier on modules with a large number of imports, views or classes.
Class methods that return a value should be prepended with a ``get_`` to differentiate from an objects properties.
When a variable refers to a file it should be named as follows:
- filename: The files name and extension only.
- filepath: The entire path to the file including the filename.
- path: A path to a directory.
Flash messages should end with a period as applicable for the language.
Only exception is when the tail of the message contains an exceptions message as passed directly from the exception object.
App anatomy
~~~~~~~~~~~
- __init__.py
- Generic initialization code (should be empty if possible)
- api.py
- File to hold functions that are meant to be used by external apps.
- Interfaces meant to be used by other apps that are not models or classes.
- classes.py
- Hold python classes to be used internally or externally.
- Any class defined by the app that is not a model.
- diagnostics.py
- Define functions that will return the state of the data of an app.
- Does not fixes the problems only finds them.
- events.py
- Define history type events
- exceptions.py
- Exceptions defined by the app
- icons.py
- Defines the icons to be used by the links and views of the app.
- Imports from the icons app only.
- links.py
- Defines the links to be used by the app.
- Import only from the navigation app and the local icons.py file.
- literals.py
- Stores magic numbers, module choices (if static), settings defaults, and constants.
- Should contain all capital case variables.
- Must not import from any other module.
- maintenance.py
- Hold functions that the user may run periodically to fix errors in the apps data.
- permissions.py
- Defines the permissions to be used by links and views to validate access.
- Imports only from permissions app.
- Link or view conditions such as testing for staff or super admin status are defined in the same file.
- statistics.py
- Provides functions that will computer any sort of statistical information on the apps data.
- tasks.py
- Code to be execute as in the background or a as an process-of-process action.
- utils.py
- Hold utilitarian code that doesn't fit on any other app file or that is used by several files in the app.
- Anything used internally by the app that is not a class or a literal (should be as little as possible)
Views behavior
~~~~~~~~~~~~~~
- Delete views:
- Redirect to object list view if one object is deleted.
- Redirect to previous view if many are deleted.
- Previous view equals:
- previous variable in POST or
- previous variable in GET or
- request.META.HTTP_REFERER or
- object list view or
- 'home' view
- fallback to /
- if previous equal same view then previous should equal object list view or /
Source Control
--------------
@@ -36,11 +258,13 @@ Git branch structure
Current production release (|version|).
``feature/``
Unfinished/unmerged feature.
``series/``
Released versions.
Each release is tagged and available for download on the Downloads_ section of the **Mayan EDMS** repository on GitHub_
When submitting patches, please place your feature/change in its own branch prior to opening a pull request on GitHub_.
When submitting patches, please place your code in its own ``feature/`` branch prior to opening a pull request on GitHub_.
.. _Git: http://git-scm.org
.. _`Successful Git Branching Model`: http://nvie.com/posts/a-successful-git-branching-model/
@@ -148,6 +372,11 @@ lines to your ``settings_local.py`` file::
'propagate': True,
'level':'DEBUG',
},
'common': {
'handlers':['console'],
'propagate': True,
'level':'DEBUG',
},
}
}
@@ -163,3 +392,35 @@ Likewise, to see the debug output of the ``tags`` app, just add the following in
.. _`logging capabilities`: https://docs.djangoproject.com/en/dev/topics/logging
Documentation
-------------
**Mayan EDMS**'s documentation is written in `reStructured Text`_ format.
The documentation lives in the ``docs`` directory. In order to build it, you will first need to install Sphinx_. ::
$ pip install sphinx
Then, to build an HTML version of the documentation, simply run the following from the **docs** directory::
$ make html
Your ``docs/_build/html`` directory will then contain an HTML version of the documentation, ready for publication on most web servers.
You can also generate the documentation in formats other than HTML.
.. _`reStructured Text`: http://docutils.sourceforge.net/rst.html
.. _Sphinx: http://sphinx.pocoo.org
Translations
------------
Translations are now being handled online via the **Transifex** website: https://www.transifex.com/projects/p/mayan-edms/.
To create a translation team for a new language or contribute to an already
existing language translation, create a **Transifex** account and contact
the team coordinator of the respective language in which you are interested.

View File

@@ -28,13 +28,6 @@ or frames, and text extraction and OCR is done per page not per document,
thats why even text documents need to be rendered by LibreOffice_
before they can be previewed and text can be extracted.
Version 0.12.1 introduced a new method of converting office documents, this
new method doesn't require the use of the command line utility ``UNOCONV``.
This new method proved to continue working better than previous solution
and the use of ``UNOCONV`` have been removed. Existing conversion method
uses just one configuration option: :setting:`CONVERTER_LIBREOFFICE_PATH`
which defaults to '/usr/bin/libreoffice'.
.. _PDF: http://en.wikipedia.org/wiki/Portable_Document_Format
.. _LibreOffice: http://www.libreoffice.org/

View File

@@ -1,21 +0,0 @@
=============
Documentation
=============
**Mayan EDMS**'s documentation is written in `reStructured Text`_ format.
The documentation lives in the ``docs`` directory. In order to build it, you will first need to install Sphinx_. ::
$ pip install sphinx
Then, to build an HTML version of the documentation, simply run the following from the **docs** directory::
$ make html
Your ``docs/_build/html`` directory will then contain an HTML version of the documentation, ready for publication on most web servers.
You can also generate the documentation in formats other than HTML.
.. _`reStructured Text`: http://docutils.sourceforge.net/rst.html
.. _Sphinx: http://sphinx.pocoo.org

View File

@@ -4,15 +4,12 @@ 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
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.
@@ -49,16 +46,13 @@ When using ``MySQL`` and doing OCR on languages other than English
- 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 `...` (`...`))')
**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:
@@ -82,9 +76,6 @@ Document sharing
- 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:
@@ -97,9 +88,6 @@ Document handling
Deployments
-----------
**Q: Is virtualenv required as specified in the documentation?**
* It is not necessary, it's just a strong recommendation mainly to reduce
@@ -125,9 +113,6 @@ 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.

View File

@@ -28,10 +28,6 @@ Features
* 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.
* Documents can be uploaded from different sources.
* Local file or server side file uploads, multifunctional copier, or even via email.
@@ -40,7 +36,7 @@ Features
* Clone a document's metadata for speedier uploads and eliminate repetitive data entry.
* Previews for a great deal of image formats, including PDF.
* Previews for a great deal of image formats.
* **Mayan EDMS** provides different file conversion backends with different levels of functionality and requirements to adapt to different deployment environments.
@@ -70,7 +66,7 @@ Features
* 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.
* **Mayan EDMS** being written using the Django_ framework, can be translated to practically any language spoken in the world.
For a list of translated languages have a look at Transifex_.
* :doc:`Multilingual OCR support <../topics/ocr>`.

View File

@@ -8,24 +8,20 @@ Introductions to all the key parts of Mayan EDMS you'll need to know:
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

@@ -29,35 +29,6 @@ branch of the index evaluated against the metadata and properties of the documen
.. image:: ../_static/index_instance.png
:alt: index instance
Index serving
=============
Indexes can be mirrored to the operating system filesystem
using the configuration option
:setting:`DOCUMENT_INDEXING_FILESYSTEM_SERVING`.
``settings_local.py``::
# Supposing the 'Sample index' internal name is 'sample_index'
DOCUMENT_INDEXING_FILESYSTEM_SERVING = {
'sample_index': '/var/local/document/sharing/invoices/',
}
This creates an actual directory tree and links to the actual stored files but using
the filename of the documents as stored in the database.
.. image:: ../_static/indexes.png
:alt: indexes diagram
This filesystem mirror of the index can them be served with Samba_ across the
network. This access would be read-only, with new versions of the files
being uploaded from the web GUI using the document versioning support.
The index cannot be edited manually to protect it's integrity, only changing
the rules or the metadata of the documents would cause the index to be
regenerated. For manual organization of documents there are the folders,
their structure is however flat, and they have to be manually updated and
curated.
.. _Samba: http://www.samba.org/

View File

@@ -1,24 +0,0 @@
====================
Initial data loading
====================
Bulk user import
----------------
As well as providing bulk document import functionality **Mayan EDMS** also
includes a management command to import a large number of users
from a CSV file. The command line options for this feature are as
follow::
$ mayan-edms.py import_users --noinput --password=welcome123 --skip-repeated user_list.csv
The CSV field order must be: username, first name, last name and email, any columns after
those are ignored.
**Optional arguments**
* The ``--noinput`` argument skips confirmation and starts the import immediately.
* The ``--password`` argument allows specifing what default password will be assigned
to all the new users that are imported.
* The ``--skip-repeated`` tells the importer to not stop when finding
that a user already exists in the database.

View File

@@ -2,24 +2,20 @@
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:
Before installing **Mayan EDMS**, the binary requirements must be installed first.
Ubuntu
------
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
$ sudo apt-get install libjpeg-dev libmagic1 libpng-dev libreoffice libtiff-dev gcc ghostscript gpgv python-dev python-virtualenv tesseract-ocr unpaper poppler-utils -y
Initialize a ``virtualenv`` to deploy the project:
@@ -128,11 +124,11 @@ 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
# venv/lib/python2.7/site-packages/mayan/settings/my_settings.py
from __future__ import absolute_import
from __future__ import unicode_literals
from .local import *
from . import *
<Your customized settings>
@@ -142,7 +138,7 @@ To test your settings launch **Mayan EDMS** using::
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 deployment instructions and examples, checkout Django's official documentation
on the topic https://docs.djangoproject.com/en/1.6/howto/deployment/
@@ -154,12 +150,10 @@ corresponding python database drivers and add the corresponding database setting
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/
.. _Django: http://www.djangoproject.com/
.. _Download: https://github.com/mayan-edms/mayan-edms/archives/master
.. _virtualenv: http://www.virtualenv.org/en/latest/index.html
.. _Fedora: http://fedoraproject.org/
.. _Python: http://www.python.org/
.. _SQLite: https://www.sqlite.org/
.. _Ubuntu: http://www.ubuntu.com/
.. _virtualenv: http://www.virtualenv.org/en/latest/index.html

View File

@@ -1,50 +0,0 @@
============
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.

View File

@@ -1,8 +0,0 @@
============
Translations
============
Translations are now being handled online via the **Transifex** website: https://www.transifex.com/projects/p/mayan-edms/.
To create a translation team for a new language or contribute to an already
existing language translation, create a **Transifex** account and contact
the team coordinator of the respective language in which you are interested.