📜 ⬆️ ⬇️

ERP development on tryton: Part 1

A large project has come to us to create an ERP system for a manufacturer company. As a server, the choice fell on tryton. However, their documentation is bad enough. On the Internet, we managed to find official documentation , pieces of code with a description and the irc log of the tryton channel . This information is very small for the development of any system on tryton. To close this gap, it was decided to document the entire development process, especially the pitfalls that had to be encountered. So let's get started.

Part 1: Install tryotnd, query structure, work with the database
Part 2: Method Structure, Working with Users and Groups, Installing Modules
Part 3: Work with modules of the company (company), contractors (party), product (product) and warehouse (stock).

1. Install and pre-configure trytond


1.1. Server startup

You can install tryton from repositories, however, this path is not suitable for us. So go to their repository . trytond - server sources, tryton - gtk client. We will have a web interface (yii) as a client, so download the trytond server directly . At the moment, the latest version is 3.2.0, and we will consider it.

The server script is in the bin folder and is called trytond. When I tried to start trytond, I fell out with an error accessing the config file in /etc/trytond.conf. The magic key --help prompted that there is an argument -c (- config) with which you can specify the config file. You have to python trytond - /home/username/trytond_path/etc/trytond.conf server so python trytond - /home/username/trytond_path/etc/trytond.conf .
')
1.2. DB Preparation

The documentation claims support for postgresql, mysql, sqlite. Based on the correspondence of the developers trytond in irc, it is better not to use mysql. Accordingly, the choice fell on postgresql. I did not have to work with this database before, so I used a small tutorial .

We need to install postgresql, create a user there, and be sure to give it rights to create a database:

 sudo aptitude install postgresql sudo su -l postgres psql create user tryton with password 'tryton'; alter user tryton createdb; \q 


1.3. Edit trytond.conf

Getting to edit the config. The first thing we see is the jsonrpc = localhost:8000 line jsonrpc = localhost:8000 . All documentation uses xml-rpc, although it is not included by default. I'm satisfied with json-rpc, so leave it as it is.

Next comes the database configuration. Fill in the appropriate data.

 db_type = postgresql db_host = localhost db_port = 5432 db_user = tryton db_password = tryton 


trytond admin_passwd = tryton administrator password trytond admin_passwd = tryton ; I trytond refused to create a database with an empty admin password.
Subsequently, we will have to work with modules, so auto_reload = True automatic reload of modules auto_reload = True .
logfile = /home/username/trytond_path/log/debug.log where to add logs logfile = /home/username/trytond_path/log/debug.log .

Ultimately, the config looks like this:
trytond.conf
 #This file is part of Tryton. The COPYRIGHT file at the top level of #this repository contains the full copyright notices and license terms. [options] # Activate the json-rpc protocol jsonrpc = localhost:8000 #ssl_jsonrpc = False # This is the hostname used when generating tryton URI #hostname_jsonrpc = # Configure the path of json-rpc data #jsondata_path = /var/www/localhost/tryton # Activate the xml-rpc protocol #xmlrpc = *:8069 #ssl_xmlrpc = False # Activate the webdav protocol #webdav = *:8080 #ssl_webdav = False # This is the hostname used when generating WebDAV URI #hostname_webdav = # Configure the database type # allowed values are postgresql, sqlite, mysql db_type = postgresql # Configure the database connection ## Note: Only databases owned by db_user will be displayed in the connection dialog ## of the Tryton client. db_user must have create permission for new databases ## to be able to use automatic database creation with the Tryton client. db_host = localhost db_port = 5432 db_user = tryton db_password = tryton #db_minconn = 1 #db_maxconn = 64 # Configure the postgresql path for the executable #pg_path = None # Configure the Tryton server password admin_passwd = tryton # Configure the path of the files for the pid and the logs #pidfile = False logfile = /home/clutcher/projects/erp/log/debug.log #privatekey = server.pem #certificate = server.pem # Configure the SMTP connection #smtp_server = localhost #smtp_port = 25 #smtp_ssl = False #smtp_tls = False #smtp_password = False #smtp_user = False #smtp_default_from_email = False # Configure the path to store attachments and sqlite database #data_path = /var/lib/trytond # Allow to run more than one instance of trytond #multi_server = False # Configure the session timeout (inactivity of the client in sec) #session_timeout = 600 # Enable auto-reload of modules if changed auto_reload = True # Prevent database listing #prevent_dblist = False # Enable cron # cron = True # unoconv connection #unoconv = pipe,name=trytond;urp;StarOffice.ComponentContext # Number of retries on database operational error # retry = 5 # Default language code # language = en_US 


1.4. Logging

Tryton has several levels of logging (DEBUG, INFO, WARNING, ERROR, CRITICAL are indicated in the documentation ). In the source code of the logging library there were such lines:

 CRITICAL = 50 FATAL = CRITICAL ERROR = 40 WARNING = 30 WARN = WARNING INFO = 20 DEBUG = 10 NOTSET = 0 


The larger the number, the less detailed logs. The irc flashed that NOTSET makes the most extended logs, although the documentation does not say a word about it, so I stopped at the DEBUG level.

In order to set the logging level you need to edit trytond / server.py (27 line): level=logging.INFO .

2. The structure of the request, API for working with the database, creating a database


Config changed, now we start the server. I can find a poor description of the server API here , but this is clearly not enough, so we continue to understand further. The network is full of python code to work with the server directly. It looks like this:

 from jsonrpc import ServerProxy connection = ServerProxy("localhost", "8000", "tryton", verbose=0) name = "model.ir.model.search" model_ids = conn.execute(name, []) 


After long attempts to run this code, it turned out that jsonrpc is not a standard pypi library, but trytond’s own developer library, which can be picked out from the client (not to be confused with trytond / protocols / jsonrpc.py - these are different libraries). Download tryton, unpack it, and in the tryton folder we find our cherished jsonrpc.py. Now you can communicate with trytond in python, but we will have a frontend in php, so we continue to dig further.

2.1. Query structure

After a long debriefing, we get the first working code (do not forget that the trytond server should be running):

 import json import requests url = 'http://localhost:8000/' id = 1 methodname = 'common.db.list' params = '[]' request = json.dumps({ 'id': id, 'method': methodname, 'params': params, }) r = requests.post(url, data=request) print r.json() 


This code is already clear and it is not difficult to transfer it to the necessary PL (php, Java ...). Now examine this query.

We will deal with the url request. All actions from the database are done on url localhost:8000/ localhost:8000/ . We work with url to work with the database. localhost:8000/db_name localhost:8000/db_name . It is assumed that the reader is already familiar with json-rpc , so we will not describe the structure of the request.

2.2. API for working with the database

And here is the long-awaited API for working with localhost:8000 localhost:8000 , which managed to get out of trytond / protocols / dispatcher.py and pieces of code from the irc channel:

Method nameOptionsDescription
common.server.version[]Check server version
common.db.list[]List of existing databases
common.server.login[user_name, user_pass]Zaloginitsya (returned id and user cookie)
common.db.create[user_id, user_cookie, database_name, password, lang, admin_password]Create DB
common.db.drop[user_id, user_cookie, database_name, password]Delete DB
common.db.dump[user_id, user_cookie, database_name, password]Dump database
common.db.restore[user_id, user_cookie, database_name, password, data, update = False]Restore db


Tryton has anonymous and authenticated requests. For example, common.server.version is an anonymous request, it can be done without logging in to the server. For common.db.create, you can omit the id and cookie, the query will still be executed. For authenticated requests, you must specify an id and a cookie.

2.3. Creating a database

The next step is to create a database that is necessary for the operation of trytond (users, caching ...) and the ERP system itself. The script runs for about a minute:

 import json import requests url = 'http://localhost:8000/' id = 2 methodname = 'common.db.create' params = [None, None, 'tryton', 'tryton', 'ru_RU', 'tryton'] request = json.dumps({ 'id': id, 'method': methodname, 'params': params, }) r = requests.post(url, data=request) print r.json() 


tryton itself will create the tables it needs in the database. It should be noted that tryton will not be able to create tables in an existing empty database even if the user is given the appropriate rights. We called the database tryton, so further requests should be made to the address localhost:8000/tryton localhost:8000/tryton .

3. trytond methods


Somewhere in the google groups by tryton I managed to find the method system.server.listMethods .

 import json import requests url = 'http://localhost:8000/tryton' id = 3 methodname = 'system.server.listMethods' params = '[]' request = json.dumps({ 'id': id, 'method': methodname, 'params': params, }) r = requests.post(url, data=request) print r.json() 


And finally we get the long-awaited response of the server with the names of the methods, some of which are described in the documentation :
Trytond methods
{
"Id": 3,
"Result": [
“Model.ir.module.module.config_wizard.done.view_toolbar_get”,
“Model.ir.module.module.config_wizard.done.fields_view_get”,
"Model.ir.module.module.config_wizard.done.on_change_with",
"Model.ir.module.module.config_wizard.done.pre_validate",
“Model.ir.module.module.config_wizard.done.fields_get”,
“Model.ir.module.module.config_wizard.done.default_get”,
“Model.ir.model.print_model_graph.start.view_toolbar_get”,
“Model.ir.model.print_model_graph.start.fields_view_get”,
“Model.ir.model.print_model_graph.start.on_change_with”,
"Model.ir.model.print_model_graph.start.pre_validate",
“Model.ir.model.print_model_graph.start.fields_get”,
“Model.ir.model.print_model_graph.start.default_get”,
"Model.ir.module.module.install_upgrade.start.view_toolbar_get",
“Model.ir.module.module.install_upgrade.start.fields_view_get”,
"Model.ir.module.module.install_upgrade.start.on_change_with",
"Model.ir.module.module.install_upgrade.start.pre_validate",
“Model.ir.module.module.install_upgrade.start.fields_get”,
“Model.ir.module.module.install_upgrade.start.default_get”,
"Model.res.user.login.attempt.pre_validate",
"Model.res.user.login.attempt.fields_get",
"Model.res.user.login.attempt.default_get",
"Model.res.user.login.attempt.on_change_with",
"Model.ir.ui.menu-res.group.pre_validate",
“Model.ir.ui.menu-res.group.fields_get”,
“Model.ir.ui.menu-res.group.default_get”,
“Model.ir.ui.menu-res.group.on_change_with”,
"Model.ir.action.act_window.domain.view_toolbar_get",
"Model.ir.action.act_window.domain.fields_view_get",
"Model.ir.action.act_window.domain.export_data",
"Model.ir.action.act_window.domain.search_read",
"Model.ir.action.act_window.domain.import_data",
"Model.ir.action.act_window.domain.create",
"Model.ir.action.act_window.domain.search",
"Model.ir.action.act_window.domain.on_change_with",
"Model.ir.action.act_window.domain.write",
"Model.ir.action.act_window.domain.read",
"Model.ir.action.act_window.domain.search_count",
"Model.ir.action.act_window.domain.history_revisions",
"Model.ir.action.act_window.domain.pre_validate",
"Model.ir.action.act_window.domain.copy",
“Model.ir.action.act_window.domain.fields_get”,
"Model.ir.action.act_window.domain.default_get",
"Model.ir.action.act_window.domain.delete",
"Model.ir.model.access.view_toolbar_get",
"Model.ir.model.access.fields_view_get",
"Model.ir.model.access.export_data",
"Model.ir.model.access.search_read",
"Model.ir.model.access.import_data",
"Model.ir.model.access.create",
"Model.ir.model.access.get_access",
"Model.ir.model.access.search",
"Model.ir.model.access.on_change_with",
"Model.ir.model.access.write",
"Model.ir.model.access.read",
"Model.ir.model.access.search_count",
"Model.ir.model.access.history_revisions",
"Model.ir.model.access.pre_validate",
"Model.ir.model.access.copy",
"Model.ir.model.access.fields_get",
"Model.ir.model.access.default_get",
"Model.ir.model.access.delete",
"Model.ir.ui.view_tree_state.view_toolbar_get",
“Model.ir.ui.view_tree_state.fields_view_get”,
“Model.ir.ui.view_tree_state.export_data”,
"Model.ir.ui.view_tree_state.search_read",
“Model.ir.ui.view_tree_state.import_data”,
"Model.ir.ui.view_tree_state.create",
"Model.ir.ui.view_tree_state.get",
"Model.ir.ui.view_tree_state.search",
"Model.ir.ui.view_tree_state.on_change_with",
"Model.ir.ui.view_tree_state.write",
“Model.ir.ui.view_tree_state.read”,
“Model.ir.ui.view_tree_state.search_count”,
“Model.ir.ui.view_tree_state.set”,
“Model.ir.ui.view_tree_state.history_revisions”,
"Model.ir.ui.view_tree_state.pre_validate",
"Model.ir.ui.view_tree_state.copy",
“Model.ir.ui.view_tree_state.fields_get”,
“Model.ir.ui.view_tree_state.default_get”,
"Model.ir.ui.view_tree_state.delete",
"Model.ir.action.act_window.view_toolbar_get",
"Model.ir.action.act_window.fields_view_get",
"Model.ir.action.act_window.export_data",
"Model.ir.action.act_window.search_read",
"Model.ir.action.act_window.import_data",
"Model.ir.action.act_window.create",
"Model.ir.action.act_window.get",
"Model.ir.action.act_window.search",
"Model.ir.action.act_window.on_change_with",
"Model.ir.action.act_window.write",
"Model.ir.action.act_window.read",
"Model.ir.action.act_window.search_count",
"Model.ir.action.act_window.history_revisions",
"Model.ir.action.act_window.pre_validate",
"Model.ir.action.act_window.copy",
"Model.ir.action.act_window.fields_get",
"Model.ir.action.act_window.default_get",
"Model.ir.action.act_window.delete",
"Model.res.user.config.start.view_toolbar_get",
"Model.res.user.config.start.fields_view_get",
"Model.res.user.config.start.on_change_with",
"Model.res.user.config.start.pre_validate",
“Model.res.user.config.start.fields_get”,
"Model.res.user.config.start.default_get",
"Model.ir.module.module.dependency.view_toolbar_get",
“Model.ir.module.module.dependency.fields_view_get”,
"Model.ir.module.module.dependency.export_data",
"Model.ir.module.module.dependency.search_read",
"Model.ir.module.module.dependency.import_data",
“Model.ir.module.module.dependency.create”,
“Model.ir.module.module.dependency.search”,
"Model.ir.module.module.dependency.on_change_with",
“Model.ir.module.module.dependency.write”,
“Model.ir.module.module.dependency.read”,
"Model.ir.module.module.dependency.search_count",
"Model.ir.module.module.dependency.history_revisions",
"Model.ir.module.module.dependency.pre_validate",
"Model.ir.module.module.dependency.copy",
“Model.ir.module.module.dependency.fields_get”,
"Model.ir.module.module.dependency.default_get",
"Model.ir.module.module.dependency.delete",
"Model.ir.module.module.view_toolbar_get",
“Model.ir.module.module.fields_view_get”,
"Model.ir.module.module.export_data",
"Model.ir.module.module.search_read",
"Model.ir.module.module.import_data",
"Model.ir.module.module.create",
"Model.ir.module.module.on_write",
"Model.ir.module.module.search",
"Model.ir.module.module.on_change_with",
"Model.ir.module.module.write",
"Model.ir.module.module.read",
"Model.ir.module.module.search_count",
"Model.ir.module.module.history_revisions",
"Model.ir.module.module.pre_validate",
"Model.ir.module.module.copy",
"Model.ir.module.module.fields_get",
"Model.ir.module.module.default_get",
"Model.ir.module.module.delete",
"Model.ir.module.module.upgrade_cancel",
“Model.ir.module.module.upgrade”,
"Model.ir.module.module.install",
"Model.ir.module.module.uninstall_cancel",
"Model.ir.module.module.install_cancel",
“Model.ir.module.module.uninstall”,
“Model.ir.action-res.group.pre_validate”,
"Model.ir.action-res.group.fields_get",
“Model.ir.action-res.group.default_get”,
"Model.ir.action-res.group.on_change_with",
"Model.ir.translation.export.result.view_toolbar_get",
"Model.ir.translation.export.result.fields_view_get",
"Model.ir.translation.export.result.on_change_with",
"Model.ir.translation.export.result.pre_validate",
"Model.ir.translation.export.result.fields_get",
"Model.ir.translation.export.result.default_get",
"Model.ir.action.view_toolbar_get",
"Model.ir.action.fields_view_get",
"Model.ir.action.get_action_id",
"Model.ir.action.export_data",
"Model.ir.action.search_read",
"Model.ir.action.import_data",
"Model.ir.action.create",
"Model.ir.action.search",
"Model.ir.action.on_change_with",
"Model.ir.action.write",
"Model.ir.action.read",
"Model.ir.action.search_count",
"Model.ir.action.history_revisions",
"Model.ir.action.pre_validate",
"Model.ir.action.copy",
"Model.ir.action.fields_get",
"Model.ir.action.default_get",
"Model.ir.action.delete",
"Model.ir.translation.set.succeed.view_toolbar_get",
"Model.ir.translation.set.succeed.fields_get_get",
"Model.ir.translation.set.succeed.on_change_with",
"Model.ir.translation.set.succeed.pre_validate",
"Model.ir.translation.set.succeed.fields_get",
"Model.ir.translation.set.succeed.default_get",
"Model.ir.property.view_toolbar_get",
"Model.ir.property.fields_view_get",
"Model.ir.property.export_data",
"Model.ir.property.search_read",
"Model.ir.property.import_data",
"Model.ir.property.create",
"Model.ir.property.search",
"Model.ir.property.on_change_with",
"Model.ir.property.write",
"Model.ir.property.read",
"Model.ir.property.search_count",
"Model.ir.property.history_revisions",
"Model.ir.property.pre_validate",
"Model.ir.property.models_get",
"Model.ir.property.copy",
"Model.ir.property.fields_get",
"Model.ir.property.default_get",
"Model.ir.property.delete",
“Model.ir.rule.group-res.group.pre_validate”,
“Model.ir.rule.group-res.group.fields_get”,
“Model.ir.rule.group-res.group.default_get”,
“Model.ir.rule.group-res.group.on_change_with”,
“Model.ir.ui.view_search.view_toolbar_get”,
"Model.ir.ui.view_search.fields_view_get",
“Model.ir.ui.view_search.get_search”,
“Model.ir.ui.view_search.export_data”,
"Model.ir.ui.view_search.search_read",
"Model.ir.ui.view_search.import_data",
"Model.ir.ui.view_search.create",
"Model.ir.ui.view_search.search",
"Model.ir.ui.view_search.on_change_with",
"Model.ir.ui.view_search.write",
"Model.ir.ui.view_search.read",
“Model.ir.ui.view_search.search_count”,
“Model.ir.ui.view_search.history_revisions”,
“Model.ir.ui.view_search.pre_validate”,
"Model.ir.ui.view_search.copy",
"Model.ir.ui.view_search.fields_get",
"Model.ir.ui.view_search.default_get",
"Model.ir.ui.view_search.delete",
“Model.ir.module.module.config_wizard.first.view_toolbar_get”,
“Model.ir.module.module.config_wizard.first.fields_view_get”,
"Model.ir.module.module.config_wizard.first.on_change_with",
“Model.ir.module.module.config_wizard.first.pre_validate”,
“Model.ir.module.module.config_wizard.first.fields_get”,
“Model.ir.module.module.config_wizard.first.default_get”,
“Model.ir.action.url.view_toolbar_get”,
"Model.ir.action.url.fields_view_get",
"Model.ir.action.url.export_data",
"Model.ir.action.url.search_read",
"Model.ir.action.url.import_data",
"Model.ir.action.url.create",
"Model.ir.action.url.search",
"Model.ir.action.url.on_change_with",
"Model.ir.action.url.write",
"Model.ir.action.url.read",
"Model.ir.action.url.search_count",
“Model.ir.action.url.history_revisions”,
"Model.ir.action.url.pre_validate",
"Model.ir.action.url.copy",
"Model.ir.action.url.fields_get",
"Model.ir.action.url.default_get",
"Model.ir.action.url.delete",
"Model.ir.action.act_window.view.view_toolbar_get",
"Model.ir.action.act_window.view.fields_view_get",
"Model.ir.action.act_window.view.export_data",
"Model.ir.action.act_window.view.search_read",
"Model.ir.action.act_window.view.import_data",
"Model.ir.action.act_window.view.create",
"Model.ir.action.act_window.view.search",
"Model.ir.action.act_window.view.on_change_with",
"Model.ir.action.act_window.view.write",
"Model.ir.action.act_window.view.read",
"Model.ir.action.act_window.view.search_count",
"Model.ir.action.act_window.view.history_revisions",
"Model.ir.action.act_window.view.pre_validate",
"Model.ir.action.act_window.view.copy",
“Model.ir.action.act_window.view.fields_get”,
“Model.ir.action.act_window.view.default_get”,
"Model.ir.action.act_window.view.delete",
"Model.ir.sequence.strict.view_toolbar_get",
"Model.ir.sequence.strict.fields_view_get",
"Model.ir.sequence.strict.export_data",
"Model.ir.sequence.strict.search_read",
"Model.ir.sequence.strict.import_data",
"Model.ir.sequence.strict.create",
"Model.ir.sequence.strict.search",
"Model.ir.sequence.strict.on_change_with",
"Model.ir.sequence.strict.write",
"Model.ir.sequence.strict.read",
"Model.ir.sequence.strict.search_count",
"Model.ir.sequence.strict.code_get",
"Model.ir.sequence.strict.history_revisions",
"Model.ir.sequence.strict.pre_validate",
"Model.ir.sequence.strict.copy",
"Model.ir.sequence.strict.fields_get",
"Model.ir.sequence.strict.default_get",
"Model.ir.sequence.strict.delete",
“Model.ir.ui.menu.favorite.view_toolbar_get”,
“Model.ir.ui.menu.favorite.fields_view_get”,
"Model.ir.ui.menu.favorite.export_data",
"Model.ir.ui.menu.favorite.search_read",
"Model.ir.ui.menu.favorite.import_data",
"Model.ir.ui.menu.favorite.create",
"Model.ir.ui.menu.favorite.get",
“Model.ir.ui.menu.favorite.search”,
“Model.ir.ui.menu.favorite.on_change_with”,
"Model.ir.ui.menu.favorite.write",
"Model.ir.ui.menu.favorite.read",
"Model.ir.ui.menu.favorite.search_count",
“Model.ir.ui.menu.favorite.set”,
“Model.ir.ui.menu.favorite.history_revisions”,
“Model.ir.ui.menu.favorite.pre_validate”,
"Model.ir.ui.menu.favorite.copy",
"Model.ir.ui.menu.favorite.fields_get",
“Model.ir.ui.menu.favorite.default_get”,
“Model.ir.ui.menu.favorite.unset”,
"Model.ir.ui.menu.favorite.delete",
“Model.res.user-res.group.pre_validate”,
“Model.res.user-res.group.fields_get”,
“Model.res.user-res.group.default_get”,
"Model.res.user-res.group.on_change_with",
“Model.ir.ui.view.show.start.view_toolbar_get”,
“Model.ir.ui.view.show.start.fields_view_get”,
“Model.ir.ui.view.show.start.on_change_with”,
“Model.ir.ui.view.show.start.pre_validate”,
“Model.ir.ui.view.show.start.fields_get”,
“Model.ir.ui.view.show.start.default_get”,
"Model.ir.attachment.view_toolbar_get",
"Model.ir.attachment.fields_view_get",
"Model.ir.attachment.export_data",
"Model.ir.attachment.search_read",
"Model.ir.attachment.import_data",
"Model.ir.attachment.create",
"Model.ir.attachment.search",
"Model.ir.attachment.on_change_with_summary",
"Model.ir.attachment.on_change_with",
"Model.ir.attachment.write",
"Model.ir.attachment.read",
"Model.ir.attachment.search_count",
"Model.ir.attachment.history_revisions",
"Model.ir.attachment.pre_validate",
"Model.ir.attachment.models_get",
"Model.ir.attachment.copy",
"Model.ir.attachment.fields_get",
"Model.ir.attachment.default_get",
"Model.ir.attachment.delete",
"Model.ir.translation.update.start.view_toolbar_get",
"Model.ir.translation.update.start.fields_view_get",
"Model.ir.translation.update.start.on_change_with",
"Model.ir.translation.update.start.pre_validate",
"Model.ir.translation.update.start.fields_get",
"Model.ir.translation.update.start.default_get",
"Model.ir.export.view_toolbar_get",
"Model.ir.export.fields_view_get",
"Model.ir.export.export_data",
"Model.ir.export.search_read",
"Model.ir.export.import_data",
"Model.ir.export.create",
"Model.ir.export.search",
"Model.ir.export.on_change_with",
"Model.ir.export.write",
"Model.ir.export.read",
"Model.ir.export.search_count",
"Model.ir.export.history_revisions",
"Model.ir.export.pre_validate",
"Model.ir.export.copy",
"Model.ir.export.fields_get",
"Model.ir.export.default_get",
"Model.ir.export.delete",
"Model.ir.ui.view_tree_width.view_toolbar_get",
“Model.ir.ui.view_tree_width.fields_view_get”,
"Model.ir.ui.view_tree_width.set_width",
"Model.ir.ui.view_tree_width.export_data",
"Model.ir.ui.view_tree_width.search_read",
"Model.ir.ui.view_tree_width.import_data",
"Model.ir.ui.view_tree_width.create",
"Model.ir.ui.view_tree_width.search",
"Model.ir.ui.view_tree_width.on_change_with",
"Model.ir.ui.view_tree_width.write",
"Model.ir.ui.view_tree_width.read",
"Model.ir.ui.view_tree_width.search_count",
"Model.ir.ui.view_tree_width.history_revisions",
"Model.ir.ui.view_tree_width.pre_validate",
"Model.ir.ui.view_tree_width.copy",
“Model.ir.ui.view_tree_width.fields_get”,
"Model.ir.ui.view_tree_width.default_get",
"Model.ir.ui.view_tree_width.delete",
"Model.res.group.view_toolbar_get",
"Model.res.group.fields_view_get",
"Model.res.group.export_data",
"Model.res.group.search_read",
"Model.res.group.import_data",
"Model.res.group.create",
"Model.res.group.search",
"Model.res.group.on_change_with",
"Model.res.group.write",
"Model.res.group.read",
"Model.res.group.search_count",
"Model.res.group.history_revisions",
"Model.res.group.pre_validate",
"Model.res.group.copy",
"Model.res.group.fields_get",
"Model.res.group.default_get",
"Model.res.group.delete",
"Model.ir.sequence.view_toolbar_get",
"Model.ir.sequence.fields_view_get",
"Model.ir.sequence.export_data",
"Model.ir.sequence.search_read",
"Model.ir.sequence.import_data",
"Model.ir.sequence.create",
"Model.ir.sequence.search",
"Model.ir.sequence.on_change_with",
"Model.ir.sequence.write",
"Model.ir.sequence.read",
"Model.ir.sequence.search_count",
"Model.ir.sequence.code_get",
"Model.ir.sequence.history_revisions",
"Model.ir.sequence.pre_validate",
"Model.ir.sequence.copy",
"Model.ir.sequence.fields_get",
"Model.ir.sequence.default_get",
"Model.ir.sequence.delete",
"Model.ir.model.data.view_toolbar_get",
"Model.ir.model.data.fields_view_get",
"Model.ir.model.data.export_data",
"Model.ir.model.data.search_read",
"Model.ir.model.data.import_data",
"Model.ir.model.data.create",
"Model.ir.model.data.search",
"Model.ir.model.data.on_change_with",
"Model.ir.model.data.write",
"Model.ir.model.data.read",
"Model.ir.model.data.search_count",
"Model.ir.model.data.history_revisions",
"Model.ir.model.data.pre_validate",
"Model.ir.model.data.copy",
"Model.ir.model.data.fields_get",
"Model.ir.model.data.default_get",
"Model.ir.model.data.delete",
"Model.ir.sequence.type-res.group.pre_validate",
“Model.ir.sequence.type-res.group.fields_get”,
“Model.ir.sequence.type-res.group.default_get”,
"Model.ir.sequence.type-res.group.on_change_with",
"Model.ir.trigger.log.pre_validate",
"Model.ir.trigger.log.fields_get",
"Model.ir.trigger.log.default_get",
"Model.ir.trigger.log.on_change_with",
"Model.ir.ui.view.view_toolbar_get",
"Model.ir.ui.view.fields_view_get",
"Model.ir.ui.view.export_data",
"Model.ir.ui.view.search_read",
"Model.ir.ui.view.import_data",
"Model.ir.ui.view.create",
"Model.ir.ui.view.search",
"Model.ir.ui.view.on_change_with",
"Model.ir.ui.view.write",
"Model.ir.ui.view.read",
"Model.ir.ui.view.search_count",
“Model.ir.ui.view.history_revisions”,
"Model.ir.ui.view.pre_validate",
"Model.ir.ui.view.copy",
"Model.ir.ui.view.fields_get",
"Model.ir.ui.view.default_get",
"Model.ir.ui.view.delete",
"Model.ir.ui.view.show",
“Model.ir.action.report.view_toolbar_get”,
"Model.ir.action.report.fields_view_get",
“Model.ir.action.report.on_change_with_report_content_name”,
"Model.ir.action.report.export_data",
"Model.ir.action.report.search_read",
"Model.ir.action.report.import_data",
"Model.ir.action.report.create",
"Model.ir.action.report.search",
"Model.ir.action.report.on_change_with",
"Model.ir.action.report.write",
"Model.ir.action.report.read",
"Model.ir.action.report.search_count",
"Model.ir.action.report.history_revisions",
"Model.ir.action.report.pre_validate",
"Model.ir.action.report.copy",
"Model.ir.action.report.fields_get",
"Model.ir.action.report.default_get",
"Model.ir.action.report.delete",
"Model.res.user-ir.action.pre_validate",
"Model.res.user-ir.action.fields_get",
"Model.res.user-ir.action.default_get",
"Model.res.user-ir.action.on_change_with",
"Model.ir.model.field-res.group.pre_validate",
“Model.ir.model.field-res.group.fields_get”,
“Model.ir.model.field-res.group.default_get”,
"Model.ir.model.field-res.group.on_change_with",
"Model.ir.module.module.install_upgrade.done.view_toolbar_get",
“Model.ir.module.module.install_upgrade.done.fields_view_get”,
"Model.ir.module.module.install_upgrade.done.on_change_with",
"Model.ir.module.module.install_upgrade.done.pre_validate",
“Model.ir.module.module.install_upgrade.done.fields_get”,
“Model.ir.module.module.install_upgrade.done.default_get”,
"Model.ir.rule.view_toolbar_get",
"Model.ir.rule.fields_view_get",
"Model.ir.rule.export_data",
"Model.ir.rule.search_read",
"Model.ir.rule.import_data",
«model.ir.rule.create»,
«model.ir.rule.search»,
«model.ir.rule.on_change_with»,
«model.ir.rule.write»,
«model.ir.rule.read»,
«model.ir.rule.search_count»,
«model.ir.rule.history_revisions»,
«model.ir.rule.pre_validate»,
«model.ir.rule.copy»,
«model.ir.rule.fields_get»,
«model.ir.rule.default_get»,
«model.ir.rule.delete»,
«model.ir.translation.view_toolbar_get»,
«model.ir.translation.fields_view_get»,
«model.ir.translation.export_data»,
«model.ir.translation.search_read»,
«model.ir.translation.import_data»,
«model.ir.translation.create»,
«model.ir.translation.search»,
«model.ir.translation.on_change_with»,
«model.ir.translation.write»,
«model.ir.translation.read»,
«model.ir.translation.search_count»,
«model.ir.translation.get_language»,
«model.ir.translation.history_revisions»,
«model.ir.translation.pre_validate»,
«model.ir.translation.copy»,
«model.ir.translation.fields_get»,
«model.ir.translation.default_get»,
«model.ir.translation.delete»,
«model.ir.model.button.view_toolbar_get»,
«model.ir.model.button.fields_view_get»,
«model.ir.model.button.export_data»,
«model.ir.model.button.search_read»,
«model.ir.model.button.import_data»,
«model.ir.model.button.create»,
«model.ir.model.button.search»,
«model.ir.model.button.on_change_with»,
«model.ir.model.button.write»,
«model.ir.model.button.read»,
«model.ir.model.button.search_count»,
«model.ir.model.button.history_revisions»,
«model.ir.model.button.pre_validate»,
«model.ir.model.button.copy»,
«model.ir.model.button.fields_get»,
«model.ir.model.button.default_get»,
«model.ir.model.button.delete»,
«model.ir.translation.export.start.view_toolbar_get»,
«model.ir.translation.export.start.fields_view_get»,
«model.ir.translation.export.start.on_change_with»,
«model.ir.translation.export.start.pre_validate»,
«model.ir.translation.export.start.fields_get»,
«model.ir.translation.export.start.default_get»,
«model.ir.sequence.type.view_toolbar_get»,
«model.ir.sequence.type.fields_view_get»,
«model.ir.sequence.type.export_data»,
«model.ir.sequence.type.search_read»,
«model.ir.sequence.type.import_data»,
«model.ir.sequence.type.create»,
«model.ir.sequence.type.search»,
«model.ir.sequence.type.on_change_with»,
«model.ir.sequence.type.write»,
«model.ir.sequence.type.read»,
«model.ir.sequence.type.search_count»,
«model.ir.sequence.type.history_revisions»,
«model.ir.sequence.type.pre_validate»,
«model.ir.sequence.type.copy»,
«model.ir.sequence.type.fields_get»,
«model.ir.sequence.type.default_get»,
«model.ir.sequence.type.delete»,
«model.ir.action.wizard.view_toolbar_get»,
«model.ir.action.wizard.fields_view_get»,
«model.ir.action.wizard.export_data»,
«model.ir.action.wizard.search_read»,
«model.ir.action.wizard.import_data»,
«model.ir.action.wizard.create»,
«model.ir.action.wizard.search»,
«model.ir.action.wizard.on_change_with»,
«model.ir.action.wizard.write»,
«model.ir.action.wizard.read»,
«model.ir.action.wizard.search_count»,
«model.ir.action.wizard.history_revisions»,
«model.ir.action.wizard.pre_validate»,
«model.ir.action.wizard.copy»,
«model.ir.action.wizard.fields_get»,
«model.ir.action.wizard.default_get»,
«model.ir.action.wizard.delete»,
«model.res.user.get_preferences_fields_view»,
«model.res.user.view_toolbar_get»,
«model.res.user.fields_view_get»,
«model.res.user.export_data»,
«model.res.user.search_read»,
«model.res.user.import_data»,
«model.res.user.create»,
«model.res.user.search»,
«model.res.user.on_change_with»,
«model.res.user.write»,
«model.res.user.read»,
«model.res.user.search_count»,
«model.res.user.get_preferences»,
«model.res.user.history_revisions»,
«model.res.user.pre_validate»,
«model.res.user.set_preferences»,
«model.res.user.copy»,
«model.res.user.fields_get»,
«model.res.user.default_get»,
«model.res.user.delete»,
«model.ir.translation.clean.start.view_toolbar_get»,
«model.ir.translation.clean.start.fields_view_get»,
«model.ir.translation.clean.start.on_change_with»,
«model.ir.translation.clean.start.pre_validate»,
«model.ir.translation.clean.start.fields_get»,
«model.ir.translation.clean.start.default_get»,
«model.ir.ui.menu.view_toolbar_get»,
«model.ir.ui.menu.fields_view_get»,
«model.ir.ui.menu.export_data»,
«model.ir.ui.menu.search_read»,
«model.ir.ui.menu.import_data»,
«model.ir.ui.menu.create»,
«model.ir.ui.menu.search»,
«model.ir.ui.menu.on_change_with»,
«model.ir.ui.menu.write»,
«model.ir.ui.menu.read»,
«model.ir.ui.menu.search_count»,
«model.ir.ui.menu.history_revisions»,
«model.ir.ui.menu.pre_validate»,
«model.ir.ui.menu.copy»,
«model.ir.ui.menu.fields_get»,
«model.ir.ui.menu.default_get»,
«model.ir.ui.menu.list_icons»,
«model.ir.ui.menu.delete»,
«model.ir.cache.pre_validate»,
«model.ir.cache.fields_get»,
«model.ir.cache.default_get»,
«model.ir.cache.on_change_with»,
«model.ir.module.module.config_wizard.other.view_toolbar_get»,
«model.ir.module.module.config_wizard.other.fields_view_get»,
«model.ir.module.module.config_wizard.other.on_change_with»,
«model.ir.module.module.config_wizard.other.pre_validate»,
«model.ir.module.module.config_wizard.other.fields_get»,
«model.ir.module.module.config_wizard.other.default_get»,
«model.ir.ui.icon.view_toolbar_get»,
«model.ir.ui.icon.fields_view_get»,
«model.ir.ui.icon.export_data»,
«model.ir.ui.icon.search_read»,
«model.ir.ui.icon.import_data»,
«model.ir.ui.icon.create»,
«model.ir.ui.icon.search»,
«model.ir.ui.icon.on_change_with»,
«model.ir.ui.icon.write»,
«model.ir.ui.icon.read»,
«model.ir.ui.icon.search_count»,
«model.ir.ui.icon.history_revisions»,
«model.ir.ui.icon.pre_validate»,
«model.ir.ui.icon.copy»,
«model.ir.ui.icon.fields_get»,
«model.ir.ui.icon.default_get»,
«model.ir.ui.icon.list_icons»,
«model.ir.ui.icon.delete»,
«model.ir.configuration.pre_validate»,
«model.ir.configuration.fields_get»,
«model.ir.configuration.default_get»,
«model.ir.configuration.on_change_with»,
«model.ir.rule.group.view_toolbar_get»,
«model.ir.rule.group.fields_view_get»,
«model.ir.rule.group.export_data»,
«model.ir.rule.group.search_read»,
«model.ir.rule.group.import_data»,
«model.ir.rule.group.create»,
«model.ir.rule.group.search»,
«model.ir.rule.group.on_change_with»,
«model.ir.rule.group.write»,
«model.ir.rule.group.read»,
«model.ir.rule.group.search_count»,
«model.ir.rule.group.history_revisions»,
«model.ir.rule.group.pre_validate»,
«model.ir.rule.group.copy»,
«model.ir.rule.group.fields_get»,
«model.ir.rule.group.default_get»,
«model.ir.rule.group.delete»,
«model.ir.rule.group-res.user.pre_validate»,
«model.ir.rule.group-res.user.fields_get»,
«model.ir.rule.group-res.user.default_get»,
«model.ir.rule.group-res.user.on_change_with»,
«model.res.user.warning.view_toolbar_get»,
«model.res.user.warning.fields_view_get»,
«model.res.user.warning.export_data»,
«model.res.user.warning.search_read»,
«model.res.user.warning.import_data»,
«model.res.user.warning.create»,
«model.res.user.warning.search»,
«model.res.user.warning.on_change_with»,
«model.res.user.warning.write»,
«model.res.user.warning.read»,
«model.res.user.warning.search_count»,
«model.res.user.warning.history_revisions»,
«model.res.user.warning.pre_validate»,
«model.res.user.warning.copy»,
«model.res.user.warning.fields_get»,
«model.res.user.warning.default_get»,
«model.res.user.warning.delete»,
«model.ir.translation.clean.succeed.view_toolbar_get»,
«model.ir.translation.clean.succeed.fields_view_get»,
«model.ir.translation.clean.succeed.on_change_with»,
«model.ir.translation.clean.succeed.pre_validate»,
«model.ir.translation.clean.succeed.fields_get»,
«model.ir.translation.clean.succeed.default_get»,
«model.ir.trigger.view_toolbar_get»,
«model.ir.trigger.fields_view_get»,
«model.ir.trigger.on_change_on_time»,
«model.ir.trigger.on_change_on_write»,
«model.ir.trigger.export_data»,
«model.ir.trigger.search_read»,
«model.ir.trigger.import_data»,
«model.ir.trigger.create»,
«model.ir.trigger.on_change_on_delete»,
«model.ir.trigger.search»,
«model.ir.trigger.on_change_with»,
«model.ir.trigger.write»,
«model.ir.trigger.read»,
«model.ir.trigger.search_count»,
«model.ir.trigger.history_revisions»,
«model.ir.trigger.pre_validate»,
«model.ir.trigger.on_change_on_create»,
«model.ir.trigger.copy»,
«model.ir.trigger.fields_get»,
«model.ir.trigger.default_get»,
«model.ir.trigger.delete»,
«model.ir.action.keyword.view_toolbar_get»,
«model.ir.action.keyword.fields_view_get»,
«model.ir.action.keyword.export_data»,
«model.ir.action.keyword.search_read»,
«model.ir.action.keyword.import_data»,
«model.ir.action.keyword.create»,
«model.ir.action.keyword.get_keyword»,
«model.ir.action.keyword.search»,
«model.ir.action.keyword.on_change_with»,
«model.ir.action.keyword.write»,
«model.ir.action.keyword.read»,
«model.ir.action.keyword.search_count»,
«model.ir.action.keyword.history_revisions»,
«model.ir.action.keyword.pre_validate»,
«model.ir.action.keyword.models_get»,
«model.ir.action.keyword.copy»,
«model.ir.action.keyword.fields_get»,
«model.ir.action.keyword.default_get»,
«model.ir.action.keyword.delete»,
«model.ir.date.pre_validate»,
«model.ir.date.fields_get»,
«model.ir.date.default_get»,
«model.ir.date.today»,
«model.ir.date.on_change_with»,
«model.ir.model.field.access.view_toolbar_get»,
«model.ir.model.field.access.fields_view_get»,
«model.ir.model.field.access.export_data»,
«model.ir.model.field.access.search_read»,
«model.ir.model.field.access.import_data»,
«model.ir.model.field.access.create»,
«model.ir.model.field.access.search»,
«model.ir.model.field.access.on_change_with»,
«model.ir.model.field.access.write»,
«model.ir.model.field.access.read»,
«model.ir.model.field.access.search_count»,
«model.ir.model.field.access.history_revisions»,
«model.ir.model.field.access.pre_validate»,
«model.ir.model.field.access.copy»,
«model.ir.model.field.access.fields_get»,
«model.ir.model.field.access.default_get»,
«model.ir.model.field.access.delete»,
«model.ir.model.button-res.group.pre_validate»,
«model.ir.model.button-res.group.fields_get»,
«model.ir.model.button-res.group.default_get»,
«model.ir.model.button-res.group.on_change_with»,
«model.ir.lang.view_toolbar_get»,
«model.ir.lang.fields_view_get»,
«model.ir.lang.export_data»,
«model.ir.lang.search_read»,
«model.ir.lang.import_data»,
«model.ir.lang.create»,
«model.ir.lang.search»,
«model.ir.lang.on_change_with»,
«model.ir.lang.write»,
«model.ir.lang.read»,
«model.ir.lang.search_count»,
«model.ir.lang.history_revisions»,
«model.ir.lang.pre_validate»,
«model.ir.lang.copy»,
«model.ir.lang.fields_get»,
«model.ir.lang.default_get»,
«model.ir.lang.delete»,
«model.ir.cron.view_toolbar_get»,
«model.ir.cron.fields_view_get»,
«model.ir.cron.export_data»,
«model.ir.cron.search_read»,
«model.ir.cron.import_data»,
«model.ir.cron.create»,
«model.ir.cron.search»,
«model.ir.cron.on_change_with»,
«model.ir.cron.write»,
«model.ir.cron.read»,
«model.ir.cron.search_count»,
«model.ir.cron.history_revisions»,
«model.ir.cron.pre_validate»,
«model.ir.cron.copy»,
«model.ir.cron.fields_get»,
«model.ir.cron.default_get»,
«model.ir.cron.delete»,
«model.ir.export.line.view_toolbar_get»,
«model.ir.export.line.fields_view_get»,
«model.ir.export.line.export_data»,
«model.ir.export.line.search_read»,
«model.ir.export.line.import_data»,
«model.ir.export.line.create»,
«model.ir.export.line.search»,
«model.ir.export.line.on_change_with»,
«model.ir.export.line.write»,
«model.ir.export.line.read»,
«model.ir.export.line.search_count»,
«model.ir.export.line.history_revisions»,
«model.ir.export.line.pre_validate»,
«model.ir.export.line.copy»,
«model.ir.export.line.fields_get»,
«model.ir.export.line.default_get»,
«model.ir.export.line.delete»,
«model.ir.translation.set.start.view_toolbar_get»,
«model.ir.translation.set.start.fields_view_get»,
«model.ir.translation.set.start.on_change_with»,
«model.ir.translation.set.start.pre_validate»,
«model.ir.translation.set.start.fields_get»,
«model.ir.translation.set.start.default_get»,
«model.ir.model.field.view_toolbar_get»,
«model.ir.model.field.fields_view_get»,
«model.ir.model.field.export_data»,
«model.ir.model.field.search_read»,
«model.ir.model.field.import_data»,
«model.ir.model.field.create»,
«model.ir.model.field.search»,
«model.ir.model.field.on_change_with»,
«model.ir.model.field.write»,
«model.ir.model.field.read»,
«model.ir.model.field.search_count»,
«model.ir.model.field.history_revisions»,
«model.ir.model.field.pre_validate»,
«model.ir.model.field.copy»,
«model.ir.model.field.fields_get»,
«model.ir.model.field.default_get»,
«model.ir.model.field.delete»,
«model.ir.module.module.config_wizard.item.view_toolbar_get»,
«model.ir.module.module.config_wizard.item.fields_view_get»,
«model.ir.module.module.config_wizard.item.export_data»,
«model.ir.module.module.config_wizard.item.search_read»,
«model.ir.module.module.config_wizard.item.import_data»,
«model.ir.module.module.config_wizard.item.create»,
«model.ir.module.module.config_wizard.item.search»,
«model.ir.module.module.config_wizard.item.on_change_with»,
«model.ir.module.module.config_wizard.item.write»,
«model.ir.module.module.config_wizard.item.read»,
«model.ir.module.module.config_wizard.item.search_count»,
«model.ir.module.module.config_wizard.item.history_revisions»,
«model.ir.module.module.config_wizard.item.pre_validate»,
«model.ir.module.module.config_wizard.item.copy»,
«model.ir.module.module.config_wizard.item.fields_get»,
«model.ir.module.module.config_wizard.item.default_get»,
«model.ir.module.module.config_wizard.item.delete»,
«model.ir.model.global_search»,
«model.ir.model.view_toolbar_get»,
«model.ir.model.fields_view_get»,
«model.ir.model.list_models»,
«model.ir.model.export_data»,
«model.ir.model.search_read»,
«model.ir.model.import_data»,
«model.ir.model.create»,
«model.ir.model.search»,
«model.ir.model.list_history»,
«model.ir.model.on_change_with»,
«model.ir.model.write»,
«model.ir.model.read»,
«model.ir.model.search_count»,
«model.ir.model.history_revisions»,
«model.ir.model.pre_validate»,
«model.ir.model.copy»,
«model.ir.model.fields_get»,
«model.ir.model.default_get»,
«model.ir.model.delete»,
«wizard.ir.module.module.config_wizard.create»,
«wizard.ir.module.module.config_wizard.execute»,
«wizard.ir.module.module.config_wizard.delete»,
«wizard.ir.translation.update.create»,
«wizard.ir.translation.update.execute»,
«wizard.ir.translation.update.delete»,
«wizard.ir.translation.set.create»,
«wizard.ir.translation.set.execute»,
«wizard.ir.translation.set.delete»,
«wizard.ir.module.module.install_upgrade.create»,
«wizard.ir.module.module.install_upgrade.execute»,
«wizard.ir.module.module.install_upgrade.delete»,
«wizard.ir.translation.export.create»,
«wizard.ir.translation.export.execute»,
«wizard.ir.translation.export.delete»,
«wizard.res.user.config.create»,
«wizard.res.user.config.execute»,
«wizard.res.user.config.delete»,
«wizard.ir.ui.view.show.create»,
«wizard.ir.ui.view.show.execute»,
«wizard.ir.ui.view.show.delete»,
«wizard.ir.module.module.config.create»,
«wizard.ir.module.module.config.execute»,
«wizard.ir.module.module.config.delete»,
«wizard.ir.model.print_model_graph.create»,
«wizard.ir.model.print_model_graph.execute»,
«wizard.ir.model.print_model_graph.delete»,
«wizard.ir.translation.clean.create»,
«wizard.ir.translation.clean.execute»,
«wizard.ir.translation.clean.delete»,
«report.ir.model.graph.execute»
]
}


PS If the topic is interesting, then the following articles will cover the connection of standard modules and their API, the use of standard modules, the development of their modules, etc.

Source: https://habr.com/ru/post/222121/


All Articles