Improve documentation

issue9601
review296281002
This commit is contained in:
David Harper
2021-04-11 21:33:54 +01:00
parent 83fa72fda6
commit 4ab8d6b44e
6 changed files with 267 additions and 31 deletions
+61
View File
@@ -0,0 +1,61 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
modules_url = 'https://docs.tryton.org/projects/modules-{module}/en/{series}/'
trytond_url = 'https://docs.tryton.org/projects/server/en/{series}/'
def get_info():
import configparser
import os
import subprocess
import sys
module_dir = os.path.dirname(os.path.dirname(__file__))
config = configparser.ConfigParser()
config.read_file(open(os.path.join(module_dir, 'tryton.cfg')))
info = dict(config.items('tryton'))
result = subprocess.run(
[sys.executable, 'setup.py', '--name'],
stdout=subprocess.PIPE, check=True, cwd=module_dir)
info['name'] = result.stdout.decode('utf-8').strip()
result = subprocess.run(
[sys.executable, 'setup.py', '--version'],
stdout=subprocess.PIPE, check=True, cwd=module_dir)
version = result.stdout.decode('utf-8').strip()
if 'dev' in version:
info['series'] = 'latest'
else:
info['series'] = '.'.join(version.split('.', 2)[:2])
for key in {'depends', 'extras_depend'}:
info[key] = info.get(key, '').strip().splitlines()
info['modules'] = set(info['depends'] + info['extras_depend'])
info['modules'] -= {'ir', 'res'}
return info
info = get_info()
master_doc = 'index'
project = info['name']
release = version = info['series']
default_role = 'ref'
highlight_language = 'none'
extensions = [
'sphinx.ext.intersphinx',
]
intersphinx_mapping = {
'trytond': (trytond_url.format(series=version), None),
}
intersphinx_mapping.update({
m: (modules_url.format(
module=m.replace('_', '-'), series=version), None)
for m in info['modules']
})
del get_info, info, modules_url, trytond_url
+95
View File
@@ -0,0 +1,95 @@
******
Design
******
The *Company Module* introduces some new concepts, and extends other existing
concepts:
.. _model-company.company:
Company
=======
The *Company* is the main concept provided by the *Company Module*.
In Tryton it is a `Party <party:model-party.party>` that represents the
company, or organisation, which the users of the system are members of.
.. seealso::
Companies can be found by opening the main menu item:
|Company --> Companies|__
.. |Company --> Companies| replace:: :menuselection:`Company --> Companies`
__ https://demo.tryton.org/model/company.company
.. _model-company.employee:
Employee
========
The *Employee* is another important concept introduced by the *Company Module*.
In Tryton it is a `Party <party:model-party.party>` that is employed by, or
works for, one of the `Companies <model-company.company>` which the users are
members of.
Employees can be organised into a structure by setting each employee's
supervisor.
.. seealso::
A list of the employees for all the companies can be found from the main
menu item:
|Company --> Employees|__
.. |Company --> Employees| replace:: :menuselection:`Company --> Employees`
__ https://demo.tryton.org/model/company.employee
.. _model-res.user:
User
====
The *Company Module* extends the `User <trytond:model-res.user>` concept so
that each user can be associated with one or more
`Companies <model-company.company>` and a set of
`Employees <model-company.employee>`.
From these a user then `chooses a current company and employee
<Setting your current company and employee>`.
This choice directly affects what data the user has access to in Tryton,
as models will often link records to a company and restrict access based on
the user's setup.
.. seealso::
The *User* concept is introduced by the
:doc:`Res Module <trytond:modules/res/index>`.
.. _model-party.party:
Party
=====
The *Company Module* adds an addition report that can be used with
`Parties <party:model-party.party>`.
.. seealso::
The *Party* concept is introduced by the :doc:`Party Module <party:index>`.
Reports
-------
.. _report-party.letter:
Letter
^^^^^^
This report is a document that can be used as the starting point for a letter
to the selected `Party <party:model-party.party>`.
The letter that is created is preformatted with information about the party,
the `User <trytond:model-res.user>` and the user's current
`Company <model-company.company>`.
The only thing that then needs to be added is the main contents of the letter.
+11 -29
View File
@@ -1,34 +1,16 @@
##############
Company Module
##############
The company module defines the concepts of company and employee and
extend the user model.
The *Company Module* allows the business that is using Tryton to be
represented inside Tryton.
This may be a single company or multiple companies.
It also allows recording which employees belong to which companies and
what their organisational structure is.
.. toctree::
:maxdepth: 2
Company
*******
The company model extends the party model and add several fields: the
currency, the list of employees and header and footer texts for
reports. There is also a parent company field which allow to setup
companies in a tree structure. The company model represent the actual
organisation the users of Tryton are members of.
Employee
********
The employee model extend the party model with a company field. The
employee model represent the actual employees of the companies defined
in Tryton. An employee can be optionally linked to a user trough the
user form.
User
****
Are added to the user model: companies, a company and an employee field. The
company field defines the current company of the user, this current company
will influence the data this user see in Tryton: most of the records that are
linked to a company will only be available for users in this very company. The
companies define which current company a user can choose.
usage
design
reference
+67
View File
@@ -0,0 +1,67 @@
*************
API Reference
*************
Company Multi-Values
====================
.. class:: trytond.modules.company.model.CompanyMultiValueMixin
A :class:`~trytond:trytond.model.MultiValueMixin` that makes it
simpler to create :class:`~trytond:trytond.model.fields.MultiValue` fields
based on the `Company <model-company.company>` in the context.
It does this by including the company from the context in the pattern by
default.
.. class:: trytond.modules.company.model.CompanyValueMixin
A :class:`~trytond:trytond.model.ValueMixin` used to store the values
of a :class:`.CompanyMultiValueMixin`.
Employee Fields
===============
.. function:: trytond.modules.company.model.employee_field(string, [states], [company])
A function that returns a :class:`~trytond:trytond.model.fields.Many2One`
field.
This field is intended to be used to store the
`Employee <model-company.employee>` that performed some action on the
:class:`~trytond:trytond.model.Model` that contains the
:class:`~trytond:trytond.model.fields.Field`.
:param string: The string that is used as the label for the field.
:param states: The states in which the field will be read-only.
:param company: The name of the field that contains the company.
:return: The employee Many2One field.
.. decorator:: trytond.modules.company.model.set_employee(field, [company])
Used to decorate methods which need to record the employee that last
ran them.
The specified ``field`` is updated with the
`User's <trytond:model-res.user>` current
`Employee <model-company.employee>`, but only if the employee works for the
``company``.
:param field: The name of the field to set to the user's current employee.
:param company:
The name of the field that contains the company.
Defaults to 'company'.
.. decorator:: trytond.modules.company.model.reset_employee(*fields)
Used to decorate methods which indicate that the document is now in a
state where the action has not yet been performed, so the
`Employee <model-company.employee>` should be cleared from the ``fields``.
:param fields:
The names of the fields that should have the employee removed.
Company Reports
===============
.. class:: trytond.modules.company.company.CompanyReport
A report that places the `Company <model-company.company>` of the record
in the header key and adds it to the context.
+28
View File
@@ -0,0 +1,28 @@
*****
Usage
*****
The `Companies <model-company.company>` and
`Employees <model-company.employee>` on Tryton can be found under the
[:menuselection:`Company`] main menu item.
.. tip::
For employees you can use the :guilabel:`Supervised by` item in
:guilabel:`Open related records` to get a list of the employees that are
supervised by the currently selected employee.
.. _Setting your current company and employee:
Setting your current company and employee
=========================================
If you want to change your current `Company <model-company.company>` or
`Employee <model-company.employee>`, you should do this by opening your
preferences and selecting the desired company and employee.
.. note::
If you try and change your current company or employee from inside the
[:menuselection:`Administration --> Users --> Users`] menu entry then it
will only change when you next login, or update your preferences.
+5 -2
View File
@@ -10,9 +10,12 @@ from setuptools import setup, find_packages
def read(fname):
return io.open(
content = io.open(
os.path.join(os.path.dirname(__file__), fname),
'r', encoding='utf-8').read()
content = re.sub(
r'(?m)^\.\. toctree::\r?\n((^$|^\s.*$)\r?\n)*', '', content)
return content
def get_require_version(name):
@@ -79,7 +82,7 @@ setup(name=name,
download_url=download_url,
project_urls={
"Bug Tracker": 'https://bugs.tryton.org/',
"Documentation": 'https://docs.tryton.org/',
"Documentation": 'https://docs.tryton.org/projects/modules-company/',
"Forum": 'https://www.tryton.org/forum',
"Source Code": 'https://hg.tryton.org/modules/company',
},