From 11b935278f9540abbf90bd413c0119a795dc0e46 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Thu, 1 Sep 2022 17:10:31 +0200 Subject: [PATCH] [I18N] *: export 14.0 source terms --- locale/sources/administration.pot | 1272 +-- locale/sources/contributing.pot | 2456 ++++-- locale/sources/developer.pot | 10192 +++++++++++-------------- locale/sources/finance.pot | 2249 +++--- locale/sources/general.pot | 104 +- locale/sources/inventory_and_mrp.pot | 6 +- locale/sources/legal.pot | 82 +- locale/sources/marketing.pot | 84 +- locale/sources/productivity.pot | 4 +- locale/sources/sales.pot | 621 +- locale/sources/services.pot | 81 +- locale/sources/sphinx.pot | 10 +- locale/sources/websites.pot | 244 +- 13 files changed, 9215 insertions(+), 8190 deletions(-) diff --git a/locale/sources/administration.pot b/locale/sources/administration.pot index 1dd021029..3959e4d1b 100644 --- a/locale/sources/administration.pot +++ b/locale/sources/administration.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 14.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-08 13:20+0000\n" +"POT-Creation-Date: 2022-09-01 15:09+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -160,9 +160,9 @@ msgid "Setting a proper :option:`--db-filter ` is an impor msgstr "" #: ../../content/administration/install/deploy.rst:76 -#: ../../content/administration/install/install.rst:325 -#: ../../content/administration/install/install.rst:488 -#: ../../content/administration/install/install.rst:659 +#: ../../content/administration/install/install.rst:338 +#: ../../content/administration/install/install.rst:525 +#: ../../content/administration/install/install.rst:720 msgid "PostgreSQL" msgstr "" @@ -865,7 +865,7 @@ msgid "Official Community packages with all relevant dependency requirements are msgstr "" #: ../../content/administration/install/install.rst:90 -#: ../../content/administration/install/install.rst:252 +#: ../../content/administration/install/install.rst:254 msgid "Windows" msgstr "" @@ -898,7 +898,7 @@ msgid "Odoo will automatically be started at the end of the installation." msgstr "" #: ../../content/administration/install/install.rst:105 -#: ../../content/administration/install/install.rst:418 +#: ../../content/administration/install/install.rst:444 msgid "Linux" msgstr "" @@ -912,9 +912,9 @@ msgstr "" #: ../../content/administration/install/install.rst:113 #: ../../content/administration/install/install.rst:186 -#: ../../content/administration/install/install.rst:300 -#: ../../content/administration/install/install.rst:466 -#: ../../content/administration/install/install.rst:637 +#: ../../content/administration/install/install.rst:313 +#: ../../content/administration/install/install.rst:503 +#: ../../content/administration/install/install.rst:698 msgid "Prepare" msgstr "" @@ -924,9 +924,9 @@ msgstr "" #: ../../content/administration/install/install.rst:123 #: ../../content/administration/install/install.rst:198 -#: ../../content/administration/install/install.rst:367 -#: ../../content/administration/install/install.rst:540 -#: ../../content/administration/install/install.rst:704 +#: ../../content/administration/install/install.rst:380 +#: ../../content/administration/install/install.rst:577 +#: ../../content/administration/install/install.rst:770 msgid "`wkhtmltopdf` is not installed through **pip** and must be installed manually in version `0.12.5 `_ for it to support headers and footers. See our `wiki `_ for more details on the various versions." msgstr "" @@ -1027,342 +1027,371 @@ msgstr "" msgid "Finally it provides greater control over the system's set up, and allows to more easily keep (and run) multiple versions of Odoo side-by-side." msgstr "" -#: ../../content/administration/install/install.rst:255 -#: ../../content/administration/install/install.rst:421 -#: ../../content/administration/install/install.rst:592 +#: ../../content/administration/install/install.rst:257 +#: ../../content/administration/install/install.rst:447 +#: ../../content/administration/install/install.rst:642 msgid "Fetch the sources" msgstr "" -#: ../../content/administration/install/install.rst:257 -#: ../../content/administration/install/install.rst:423 -#: ../../content/administration/install/install.rst:594 +#: ../../content/administration/install/install.rst:259 +#: ../../content/administration/install/install.rst:449 +#: ../../content/administration/install/install.rst:644 msgid "There are two ways to obtain the source code of Odoo: as a zip **archive** or through **git**." msgstr "" -#: ../../content/administration/install/install.rst:260 -#: ../../content/administration/install/install.rst:426 -#: ../../content/administration/install/install.rst:597 +#: ../../content/administration/install/install.rst:262 +#: ../../content/administration/install/install.rst:452 +#: ../../content/administration/install/install.rst:647 msgid "Archive" msgstr "" -#: ../../content/administration/install/install.rst:262 -#: ../../content/administration/install/install.rst:279 -#: ../../content/administration/install/install.rst:428 -#: ../../content/administration/install/install.rst:445 -#: ../../content/administration/install/install.rst:599 -#: ../../content/administration/install/install.rst:616 +#: ../../content/administration/install/install.rst:264 +#: ../../content/administration/install/install.rst:454 +#: ../../content/administration/install/install.rst:649 msgid "Community Edition:" msgstr "" -#: ../../content/administration/install/install.rst:264 -#: ../../content/administration/install/install.rst:270 -#: ../../content/administration/install/install.rst:430 -#: ../../content/administration/install/install.rst:436 -#: ../../content/administration/install/install.rst:601 -#: ../../content/administration/install/install.rst:607 +#: ../../content/administration/install/install.rst:266 +#: ../../content/administration/install/install.rst:272 +#: ../../content/administration/install/install.rst:456 +#: ../../content/administration/install/install.rst:462 +#: ../../content/administration/install/install.rst:651 +#: ../../content/administration/install/install.rst:657 msgid "`Official download page `_" msgstr "" -#: ../../content/administration/install/install.rst:265 -#: ../../content/administration/install/install.rst:431 -#: ../../content/administration/install/install.rst:602 +#: ../../content/administration/install/install.rst:267 +#: ../../content/administration/install/install.rst:457 +#: ../../content/administration/install/install.rst:652 msgid "`GitHub repository `_" msgstr "" -#: ../../content/administration/install/install.rst:266 -#: ../../content/administration/install/install.rst:432 -#: ../../content/administration/install/install.rst:603 +#: ../../content/administration/install/install.rst:268 +#: ../../content/administration/install/install.rst:458 +#: ../../content/administration/install/install.rst:653 msgid "`Nightly server `_" msgstr "" -#: ../../content/administration/install/install.rst:268 -#: ../../content/administration/install/install.rst:434 -#: ../../content/administration/install/install.rst:605 +#: ../../content/administration/install/install.rst:270 +#: ../../content/administration/install/install.rst:460 +#: ../../content/administration/install/install.rst:655 msgid "Enterprise Edition:" msgstr "" -#: ../../content/administration/install/install.rst:271 -#: ../../content/administration/install/install.rst:437 -#: ../../content/administration/install/install.rst:608 +#: ../../content/administration/install/install.rst:273 +#: ../../content/administration/install/install.rst:463 +#: ../../content/administration/install/install.rst:658 msgid "`GitHub repository `_" msgstr "" -#: ../../content/administration/install/install.rst:274 -#: ../../content/administration/install/install.rst:440 -#: ../../content/administration/install/install.rst:611 +#: ../../content/administration/install/install.rst:278 +#: ../../content/administration/install/install.rst:468 +#: ../../content/administration/install/install.rst:663 msgid "Git" msgstr "" -#: ../../content/administration/install/install.rst:276 -#: ../../content/administration/install/install.rst:442 -#: ../../content/administration/install/install.rst:613 -msgid "The following requires git_ to be installed on your machine and that you have basic knowledge of git commands." +#: ../../content/administration/install/install.rst:280 +#: ../../content/administration/install/install.rst:470 +#: ../../content/administration/install/install.rst:665 +msgid "The following requires `Git `_ to be installed on your machine and that you have basic knowledge of Git commands. To clone a Git repository, you must choose between cloning with HTTPS or SSH. If you do not know the difference between the two, the best option is most likely HTTPS. If you are following the :doc:`Getting started ` developer tutorial, or plan on contributing to Odoo source code, choose SSH." msgstr "" -#: ../../content/administration/install/install.rst:286 -#: ../../content/administration/install/install.rst:452 -#: ../../content/administration/install/install.rst:623 -msgid "Enterprise Edition: (see :ref:`setup/install/editions` to get access)" +#: ../../content/administration/install/install.rst:287 +#: ../../content/administration/install/install.rst:477 +#: ../../content/administration/install/install.rst:672 +msgid "**The Enterprise Git repository does not contain the full Odoo source code**. It is only a collection of extra add-ons. The main server code is in the Community version. Running the Enterprise version actually means running the server from the Community version with the addons-path option set to the folder with the Enterprise version. You need to clone both the Community and Enterprise repository to have a working Odoo Enterprise installation. See :ref:`setup/install/editions` to get access to the Enterprise repository." msgstr "" -#: ../../content/administration/install/install.rst:292 -#: ../../content/administration/install/install.rst:458 -#: ../../content/administration/install/install.rst:629 -msgid "**The Enterprise git repository does not contain the full Odoo source code**. It is only a collection of extra add-ons. The main server code is in the Community version. Running the Enterprise version actually means running the server from the Community version with the addons-path option set to the folder with the Enterprise version. You need to clone both the Community and Enterprise repository to have a working Odoo Enterprise installation." +#: ../../content/administration/install/install.rst:296 +#: ../../content/administration/install/install.rst:486 +#: ../../content/administration/install/install.rst:681 +msgid "Clone with HTTPS" msgstr "" #: ../../content/administration/install/install.rst:303 -#: ../../content/administration/install/install.rst:469 -#: ../../content/administration/install/install.rst:640 +#: ../../content/administration/install/install.rst:493 +#: ../../content/administration/install/install.rst:688 +msgid "Clone with SSH" +msgstr "" + +#: ../../content/administration/install/install.rst:316 +#: ../../content/administration/install/install.rst:506 +#: ../../content/administration/install/install.rst:701 msgid "Python" msgstr "" -#: ../../content/administration/install/install.rst:305 +#: ../../content/administration/install/install.rst:318 msgid "Odoo requires Python 3.6 or later to run. Visit `Python's download page `_ to download and install the latest version of Python 3 on your machine." msgstr "" -#: ../../content/administration/install/install.rst:308 +#: ../../content/administration/install/install.rst:321 msgid "During installation, check **Add Python 3 to PATH**, then click **Customize Installation** and make sure that **pip** is checked." msgstr "" -#: ../../content/administration/install/install.rst:311 -#: ../../content/administration/install/install.rst:474 -#: ../../content/administration/install/install.rst:645 +#: ../../content/administration/install/install.rst:324 +#: ../../content/administration/install/install.rst:511 +#: ../../content/administration/install/install.rst:706 msgid "If Python 3 is already installed, make sure that the version is 3.6 or above, as previous versions are not compatible with Odoo." msgstr "" -#: ../../content/administration/install/install.rst:318 -#: ../../content/administration/install/install.rst:481 -#: ../../content/administration/install/install.rst:652 +#: ../../content/administration/install/install.rst:331 +#: ../../content/administration/install/install.rst:518 +#: ../../content/administration/install/install.rst:713 msgid "Verify also that pip_ is installed for this version." msgstr "" -#: ../../content/administration/install/install.rst:327 +#: ../../content/administration/install/install.rst:340 msgid "Odoo uses PostgreSQL as database management system. `Download and install PostgreSQL `_ (supported version: 10.0 and later)." msgstr "" -#: ../../content/administration/install/install.rst:330 -#: ../../content/administration/install/install.rst:499 -#: ../../content/administration/install/install.rst:664 +#: ../../content/administration/install/install.rst:343 +#: ../../content/administration/install/install.rst:536 +#: ../../content/administration/install/install.rst:730 msgid "By default, the only user is `postgres` but Odoo forbids connecting as `postgres`, so you need to create a new PostgreSQL user:" msgstr "" -#: ../../content/administration/install/install.rst:333 +#: ../../content/administration/install/install.rst:346 msgid "Add PostgreSQL's `bin` directory (by default: `C:\\\\Program Files\\\\PostgreSQL\\\\\\\\bin`) to your `PATH`." msgstr "" -#: ../../content/administration/install/install.rst:335 +#: ../../content/administration/install/install.rst:348 msgid "Create a postgres user with a password using the pg admin gui:" msgstr "" -#: ../../content/administration/install/install.rst:337 +#: ../../content/administration/install/install.rst:350 msgid "Open **pgAdmin**." msgstr "" -#: ../../content/administration/install/install.rst:338 +#: ../../content/administration/install/install.rst:351 msgid "Double-click the server to create a connection." msgstr "" -#: ../../content/administration/install/install.rst:339 +#: ../../content/administration/install/install.rst:352 msgid "Select :menuselection:`Object --> Create --> Login/Group Role`." msgstr "" -#: ../../content/administration/install/install.rst:340 +#: ../../content/administration/install/install.rst:353 msgid "Enter the username in the **Role Name** field (e.g. `odoo`)." msgstr "" -#: ../../content/administration/install/install.rst:341 +#: ../../content/administration/install/install.rst:354 msgid "Open the **Definition** tab and enter the password (e.g. ``odoo``), then click **Save**." msgstr "" -#: ../../content/administration/install/install.rst:342 +#: ../../content/administration/install/install.rst:355 msgid "Open the **Privileges** tab and switch **Can login?** to `Yes` and **Create database?** to `Yes`." msgstr "" -#: ../../content/administration/install/install.rst:346 -#: ../../content/administration/install/install.rst:511 -#: ../../content/administration/install/install.rst:676 +#: ../../content/administration/install/install.rst:359 +#: ../../content/administration/install/install.rst:548 +#: ../../content/administration/install/install.rst:742 msgid "Dependencies" msgstr "" -#: ../../content/administration/install/install.rst:348 +#: ../../content/administration/install/install.rst:361 msgid "Before installing the dependencies, you must download and install the `Build Tools for Visual Studio `_. When prompted, select **C++ build tools** in the **Workloads** tab and install them." msgstr "" -#: ../../content/administration/install/install.rst:352 -#: ../../content/administration/install/install.rst:525 -#: ../../content/administration/install/install.rst:678 +#: ../../content/administration/install/install.rst:365 +#: ../../content/administration/install/install.rst:562 +#: ../../content/administration/install/install.rst:744 msgid "Odoo dependencies are listed in the `requirements.txt` file located at the root of the Odoo community directory." msgstr "" -#: ../../content/administration/install/install.rst:355 -#: ../../content/administration/install/install.rst:528 -#: ../../content/administration/install/install.rst:681 +#: ../../content/administration/install/install.rst:368 +#: ../../content/administration/install/install.rst:565 +#: ../../content/administration/install/install.rst:747 msgid "It can be preferable to not mix python modules packages between different instances of Odoo or with your system. You can use virtualenv_ to create isolated Python environments." msgstr "" -#: ../../content/administration/install/install.rst:358 +#: ../../content/administration/install/install.rst:371 msgid "Navigate to the path of your Odoo Community installation (`CommunityPath`) and run **pip** on the requirements file in a terminal **with Administrator privileges**:" msgstr "" -#: ../../content/administration/install/install.rst:372 -#: ../../content/administration/install/install.rst:545 -#: ../../content/administration/install/install.rst:709 +#: ../../content/administration/install/install.rst:385 +#: ../../content/administration/install/install.rst:582 +#: ../../content/administration/install/install.rst:775 msgid "For languages with right-to-left interface (such as Arabic or Hebrew), the package `rtlcss` is needed:" msgstr "" -#: ../../content/administration/install/install.rst:375 +#: ../../content/administration/install/install.rst:388 msgid "Download and install `nodejs `_." msgstr "" -#: ../../content/administration/install/install.rst:376 -#: ../../content/administration/install/install.rst:549 -#: ../../content/administration/install/install.rst:713 +#: ../../content/administration/install/install.rst:389 +#: ../../content/administration/install/install.rst:586 +#: ../../content/administration/install/install.rst:779 msgid "Install `rtlcss`:" msgstr "" -#: ../../content/administration/install/install.rst:382 +#: ../../content/administration/install/install.rst:395 msgid "Edit the System Environment's variable `PATH` to add the folder where `rtlcss.cmd` is located (typically: `C:\\\\Users\\\\\\\\AppData\\\\Roaming\\\\npm\\\\`)." msgstr "" -#: ../../content/administration/install/install.rst:386 -#: ../../content/administration/install/install.rst:556 -#: ../../content/administration/install/install.rst:720 +#: ../../content/administration/install/install.rst:399 +#: ../../content/administration/install/install.rst:593 +#: ../../content/administration/install/install.rst:786 msgid "Running Odoo" msgstr "" -#: ../../content/administration/install/install.rst:388 -#: ../../content/administration/install/install.rst:558 -#: ../../content/administration/install/install.rst:722 +#: ../../content/administration/install/install.rst:401 +#: ../../content/administration/install/install.rst:595 +#: ../../content/administration/install/install.rst:788 msgid "Once all dependencies are set up, Odoo can be launched by running `odoo-bin`, the command-line interface of the server. It is located at the root of the Odoo Community directory." msgstr "" -#: ../../content/administration/install/install.rst:391 -#: ../../content/administration/install/install.rst:561 -#: ../../content/administration/install/install.rst:725 +#: ../../content/administration/install/install.rst:404 +#: ../../content/administration/install/install.rst:598 +#: ../../content/administration/install/install.rst:791 msgid "To configure the server, you can either specify :ref:`command-line arguments ` or a :ref:`configuration file `." msgstr "" -#: ../../content/administration/install/install.rst:394 -#: ../../content/administration/install/install.rst:564 -#: ../../content/administration/install/install.rst:728 +#: ../../content/administration/install/install.rst:407 +#: ../../content/administration/install/install.rst:601 +#: ../../content/administration/install/install.rst:794 msgid "For the Enterprise edition, you must add the path to the `enterprise` addons to the `addons-path` argument. Note that it must come before the other paths in `addons-path` for addons to be loaded correctly." msgstr "" -#: ../../content/administration/install/install.rst:398 -#: ../../content/administration/install/install.rst:568 -#: ../../content/administration/install/install.rst:732 +#: ../../content/administration/install/install.rst:411 +#: ../../content/administration/install/install.rst:605 +#: ../../content/administration/install/install.rst:798 msgid "Common necessary configurations are:" msgstr "" -#: ../../content/administration/install/install.rst:400 +#: ../../content/administration/install/install.rst:413 msgid "PostgreSQL user and password." msgstr "" -#: ../../content/administration/install/install.rst:401 -#: ../../content/administration/install/install.rst:573 -#: ../../content/administration/install/install.rst:737 +#: ../../content/administration/install/install.rst:414 +#: ../../content/administration/install/install.rst:610 +#: ../../content/administration/install/install.rst:803 msgid "Custom addon paths beyond the defaults, to load your own modules." msgstr "" -#: ../../content/administration/install/install.rst:403 -#: ../../content/administration/install/install.rst:575 -#: ../../content/administration/install/install.rst:739 +#: ../../content/administration/install/install.rst:416 +#: ../../content/administration/install/install.rst:612 +#: ../../content/administration/install/install.rst:805 msgid "A typical way to run the server would be:" msgstr "" -#: ../../content/administration/install/install.rst:410 -msgid "Where `CommunityPath` is the path of the Odoo Community installation, `dbuser` is the PostgreSQL login, `dbpassword` is the PostgreSQL password and `mydb` is the default database to serve on `localhost:8069`." +#: ../../content/administration/install/install.rst:423 +msgid "Where `CommunityPath` is the path of the Odoo Community installation, `dbuser` is the PostgreSQL login, `dbpassword` is the PostgreSQL password and `mydb` is the name of the PostgreSQL database." msgstr "" -#: ../../content/administration/install/install.rst:415 -#: ../../content/administration/install/install.rst:586 -#: ../../content/administration/install/install.rst:750 -msgid ":doc:`The exhaustive list of arguments for odoo-bin `." +#: ../../content/administration/install/install.rst:427 +#: ../../content/administration/install/install.rst:622 +#: ../../content/administration/install/install.rst:820 +msgid "After the server has started (the INFO log `odoo.modules.loading: Modules loaded.` is printed), open http://localhost:8069 in your web browser and log in with the base administrator account: Use `admin` for the :guilabel:`Email` and, again, `admin` for the :guilabel:`Password`. That's it, you just logged into your own Odoo database!" msgstr "" -#: ../../content/administration/install/install.rst:471 +#: ../../content/administration/install/install.rst:433 +#: ../../content/administration/install/install.rst:628 +#: ../../content/administration/install/install.rst:826 +msgid "From there, you can create and manage new :doc:`users `." +msgstr "" + +#: ../../content/administration/install/install.rst:435 +#: ../../content/administration/install/install.rst:630 +#: ../../content/administration/install/install.rst:828 +msgid "The user account you use to log into Odoo's web interface differs from the :option:`--db_user ` CLI argument." +msgstr "" + +#: ../../content/administration/install/install.rst:439 +#: ../../content/administration/install/install.rst:634 +#: ../../content/administration/install/install.rst:832 +msgid ":doc:`The exhaustive list of CLI arguments for odoo-bin `." +msgstr "" + +#: ../../content/administration/install/install.rst:508 msgid "Odoo requires Python 3.6 or later to run. Use your package manager to download and install Python 3 on your machine if it is not already done." msgstr "" -#: ../../content/administration/install/install.rst:490 +#: ../../content/administration/install/install.rst:527 msgid "Odoo uses PostgreSQL as database management system. Use your package manager to download and install PostgreSQL (supported version: 10.0 and later)." msgstr "" -#: ../../content/administration/install/install.rst:493 +#: ../../content/administration/install/install.rst:530 msgid "On Debian/Unbuntu, it can be achieved by executing the following:" msgstr "" -#: ../../content/administration/install/install.rst:507 -#: ../../content/administration/install/install.rst:672 +#: ../../content/administration/install/install.rst:544 +#: ../../content/administration/install/install.rst:738 msgid "Because your PostgreSQL user has the same name as your Unix login, you will be able to connect to the database without password." msgstr "" -#: ../../content/administration/install/install.rst:513 +#: ../../content/administration/install/install.rst:550 msgid "For libraries using native code, it is necessary to install development tools and native dependencies before the Python dependencies of Odoo. They are available in `-dev` or `-devel` packages for Python, PostgreSQL, libxml2, libxslt1, libevent, libsasl2 and libldap2." msgstr "" -#: ../../content/administration/install/install.rst:517 +#: ../../content/administration/install/install.rst:554 msgid "On Debian/Unbuntu, the following command should install all the required libraries:" msgstr "" -#: ../../content/administration/install/install.rst:531 -#: ../../content/administration/install/install.rst:684 +#: ../../content/administration/install/install.rst:568 +#: ../../content/administration/install/install.rst:750 msgid "Navigate to the path of your Odoo Community installation (`CommunityPath`) and run **pip** on the requirements file:" msgstr "" -#: ../../content/administration/install/install.rst:548 +#: ../../content/administration/install/install.rst:585 msgid "Download and install **nodejs** and **npm** with your package manager." msgstr "" -#: ../../content/administration/install/install.rst:570 -#: ../../content/administration/install/install.rst:734 +#: ../../content/administration/install/install.rst:607 +#: ../../content/administration/install/install.rst:800 msgid "PostgreSQL user and password. Odoo has no defaults beyond `psycopg2's defaults `_: connects over a UNIX socket on port `5432` with the current user and no password." msgstr "" -#: ../../content/administration/install/install.rst:582 -#: ../../content/administration/install/install.rst:746 -msgid "Where `CommunityPath` is the path of the Odoo Community installation and `mydb` is the default database to serve on `localhost:8069`." +#: ../../content/administration/install/install.rst:619 +#: ../../content/administration/install/install.rst:812 +msgid "Where `CommunityPath` is the path of the Odoo Community installation and `mydb` is the name of the PostgreSQL database." msgstr "" -#: ../../content/administration/install/install.rst:589 +#: ../../content/administration/install/install.rst:639 msgid "Mac OS" msgstr "" -#: ../../content/administration/install/install.rst:642 +#: ../../content/administration/install/install.rst:703 msgid "Odoo requires Python 3.6 or later to run. Use your preferred package manager (homebrew_, macports_) to download and install Python 3 on your machine if it is not already done." msgstr "" -#: ../../content/administration/install/install.rst:661 +#: ../../content/administration/install/install.rst:722 msgid "Odoo uses PostgreSQL as database management system. Use `postgres.app `_ to download and install PostgreSQL (supported version: 10.0 and later)." msgstr "" -#: ../../content/administration/install/install.rst:693 +#: ../../content/administration/install/install.rst:726 +msgid "To make the command line tools bundled with `postgres.app` available, make sure to setup your `$PATH` variable by following the `Postgres.app CLI Tools Instructions `_." +msgstr "" + +#: ../../content/administration/install/install.rst:759 msgid "Non-Python dependencies need to be installed with a package manager:" msgstr "" -#: ../../content/administration/install/install.rst:695 +#: ../../content/administration/install/install.rst:761 msgid "Download and install the **Command Line Tools**:" msgstr "" -#: ../../content/administration/install/install.rst:701 +#: ../../content/administration/install/install.rst:767 msgid "Download and install the package manager of your choice (homebrew_, macports_)." msgstr "" -#: ../../content/administration/install/install.rst:702 +#: ../../content/administration/install/install.rst:768 msgid "Install non-python dependencies." msgstr "" -#: ../../content/administration/install/install.rst:712 +#: ../../content/administration/install/install.rst:778 msgid "Download and install **nodejs** with your preferred package manager (homebrew_, macports_)." msgstr "" -#: ../../content/administration/install/install.rst:755 +#: ../../content/administration/install/install.rst:816 +msgid "Some versions of python on Mac might lead to the following error message: `current limit exceeds maximum limit`. In that case, add the following parameter `--limit-memory-hard 0` to avoid the problem." +msgstr "" + +#: ../../content/administration/install/install.rst:837 #: ../../content/administration/maintain/update.rst:147 msgid "Docker" msgstr "" -#: ../../content/administration/install/install.rst:757 +#: ../../content/administration/install/install.rst:839 msgid "The full documentation on how to use Odoo with Docker can be found on the official Odoo `docker image `_ page." msgstr "" @@ -1398,354 +1427,362 @@ msgstr "" msgid "Odoo offers a :ref:`free custom domain name ` to all Odoo Online databases for one year. Visitors can then access your website with an address such as ``www.example.com`` rather than the default ``example.odoo.com``." msgstr "" +#: ../../content/administration/maintain/domain_names.rst:25 +msgid "`Odoo Tutorials: Register a Free Domain Name `_" +msgstr "" + #: ../../content/administration/maintain/domain_names.rst:27 +msgid "`Odoo Quick Tips: Get a free domain name! `_" +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:32 msgid "About domain names" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:29 +#: ../../content/administration/maintain/domain_names.rst:34 msgid "Having a **good domain name** is as important to your branding as the name of your business or organization as it is the first thing your visitors will notice. We recommend you keep them *simple, short, easy to remember and spell*." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:33 +#: ../../content/administration/maintain/domain_names.rst:38 msgid "A **subdomain** is a domain that is a part of another domain. It often refers to the additional part that comes before the main domain name. Traditionally, most websites use the ``www.`` subdomain, but any string of letters can be used as well. You can use subdomains to direct your visitors to other websites than your main website or to specific pages (e.g., ``experience.odoo.com`` points to a specific page.)" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:39 +#: ../../content/administration/maintain/domain_names.rst:44 msgid "All domain names are referenced in the **Domain Name System**, or **DNS**, which works as a giant directory for the Internet. There are many DNS servers, so any modification to the DNS can take up to 72 hours to propagate worldwide on all servers." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:46 +#: ../../content/administration/maintain/domain_names.rst:51 msgid "Register a free domain name with Odoo" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:48 +#: ../../content/administration/maintain/domain_names.rst:53 msgid "You can register a domain name for your Odoo Online database directly from Odoo Website or your database manager." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:52 +#: ../../content/administration/maintain/domain_names.rst:57 msgid "Your domain name is **free for one year** if you register it with Odoo!" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:53 +#: ../../content/administration/maintain/domain_names.rst:58 msgid "The domain name is registered with `Gandi `_, the domain name registrar." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:55 +#: ../../content/administration/maintain/domain_names.rst:60 msgid "You are the owner of the domain name and can use it for other purposes." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:56 +#: ../../content/administration/maintain/domain_names.rst:61 msgid "Odoo manages payment and technical support for you." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:58 +#: ../../content/administration/maintain/domain_names.rst:63 msgid "To do so, go to :menuselection:`Website --> Go to website --> Promote --> Domain Name`. Alternatively, open your `database manager `_, click on the :guilabel:`settings` button next to your database, then on :guilabel:`Domain names`." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:66 +#: ../../content/administration/maintain/domain_names.rst:71 msgid "Search for the domain name of your choice to check its availability, then select the one you want to register for your website." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:73 +#: ../../content/administration/maintain/domain_names.rst:78 msgid "Next, fill in the form with your information to become the domain name owner." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:75 +#: ../../content/administration/maintain/domain_names.rst:80 msgid "Your domain name is directly linked to your database, but you still have to :ref:`map your domain name with your website `." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:79 +#: ../../content/administration/maintain/domain_names.rst:84 msgid "Free domain names are also available for free Odoo Online databases (if you installed one app only, for example). In this case, Odoo reviews your request and your website to avoid abuse. This process may take up to three days." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:82 +#: ../../content/administration/maintain/domain_names.rst:87 msgid "This is not available for Odoo.sh databases yet." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:87 +#: ../../content/administration/maintain/domain_names.rst:92 msgid "Manage your domain name registered with Odoo" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:89 +#: ../../content/administration/maintain/domain_names.rst:94 msgid "To manage the DNS records of your domain name registered with Odoo or to visualize the contacts associated with it, open your `database manager `_, click on the :guilabel:`settings` button next to your database, on :guilabel:`Domain names`, and then on :guilabel:`Contacts` or :guilabel:`DNS`." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:99 +#: ../../content/administration/maintain/domain_names.rst:104 msgid "Please `submit a support ticket `_ if you need further assistance to manage your domain name." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:105 +#: ../../content/administration/maintain/domain_names.rst:110 msgid "Configure your existing domain name" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:107 +#: ../../content/administration/maintain/domain_names.rst:112 msgid "If you already own a domain name, you can use it to point to your website." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:109 +#: ../../content/administration/maintain/domain_names.rst:114 msgid "To avoid any issue with the :ref:`SSL certificate validation `, we highly recommend that you proceed with the following actions in this order:" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:112 +#: ../../content/administration/maintain/domain_names.rst:117 msgid ":ref:`Add a CNAME record ` on your domain name's DNS zone." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:113 +#: ../../content/administration/maintain/domain_names.rst:118 msgid ":ref:`Map your domain name with your Odoo database `." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:114 +#: ../../content/administration/maintain/domain_names.rst:119 msgid ":ref:`Map your domain name with your Odoo website `." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:115 -msgid "Optionnally: :ref:`Change the web base address of your database `." -msgstr "" - #: ../../content/administration/maintain/domain_names.rst:120 -msgid "Add a CNAME record" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:122 -msgid "A **CNAME record** is a type of DNS record that points to the IP address of another website rather than to directly to an IP address." +msgid "Optionally: :ref:`Change the web base address of your database `." msgstr "" #: ../../content/administration/maintain/domain_names.rst:125 -msgid "You need a CNAME record that points to your Odoo database. The requirements are detailed in your database manager." +msgid "Add a CNAME record" +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:127 +msgid "A **CNAME record** is a type of DNS record that points to the IP address of another website rather than to directly to an IP address." msgstr "" #: ../../content/administration/maintain/domain_names.rst:130 -#: ../../content/administration/maintain/domain_names.rst:200 +msgid "You need a CNAME record that points to your Odoo database. The requirements are detailed in your database manager." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:135 +#: ../../content/administration/maintain/domain_names.rst:205 #: ../../content/administration/maintain/supported_versions.rst:26 msgid "Odoo Online" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:132 +#: ../../content/administration/maintain/domain_names.rst:137 msgid "The target address is the current address of your database, as defined at its creation (e.g., ``example.odoo.com``)" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:135 -#: ../../content/administration/maintain/domain_names.rst:214 +#: ../../content/administration/maintain/domain_names.rst:140 +#: ../../content/administration/maintain/domain_names.rst:219 #: ../../content/administration/maintain/supported_versions.rst:26 #: ../../content/administration/odoo_sh.rst:5 -#: ../../content/administration/upgrade/odoo_sh.rst:4 +#: ../../content/administration/upgrade/odoo_sh.rst:3 msgid "Odoo.sh" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:137 +#: ../../content/administration/maintain/domain_names.rst:142 msgid "Your project's main address is defined in :menuselection:`Settings --> Project Name`." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:139 +#: ../../content/administration/maintain/domain_names.rst:144 msgid "If you want to target a specific branch (production, staging or development), go to :menuselection:`Branches --> select your branch --> Settings --> Custom domains`, and click on :guilabel:`How to set up my domain?`. A message indicates which address your CNAME record should target." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:144 -#: ../../content/administration/maintain/domain_names.rst:186 +#: ../../content/administration/maintain/domain_names.rst:149 +#: ../../content/administration/maintain/domain_names.rst:191 msgid "Open your domain name's manager dashboard." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:145 +#: ../../content/administration/maintain/domain_names.rst:150 msgid "Open the **DNS zone** management page for the domain name you want to configure." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:146 +#: ../../content/administration/maintain/domain_names.rst:151 msgid "Create a **CNAME record** pointing to the address of your database." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:148 +#: ../../content/administration/maintain/domain_names.rst:153 msgid "While Odoo suggests creating a CNAME record for your ``www.`` subdomain (``www.example.com``, you can of course use any domain name of your choice, with any subdomain (e.g., ``anything.example.com``)." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:153 +#: ../../content/administration/maintain/domain_names.rst:158 msgid "You own the domain name ``example.com``, and you have an Odoo Online database at the address ``example.odoo.com``. You want to access your Odoo database primarily with the domain ``www.example.com`` but also with the :ref:`naked domain ` ``example.com``." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:158 +#: ../../content/administration/maintain/domain_names.rst:163 msgid "To do so, you create a CNAME record for the ``www`` subdomain, with ``example.odoo.com`` as the target. The DNS zone manager generates the following rule and adds it to your DNS zone: ``www IN CNAME example.odoo.com.``" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:162 +#: ../../content/administration/maintain/domain_names.rst:167 msgid "You also create a redirection from ``example.com`` to ``wwww.example.com``." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:164 +#: ../../content/administration/maintain/domain_names.rst:169 msgid "Your new DNS records are propagated to all DNS servers." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:167 +#: ../../content/administration/maintain/domain_names.rst:172 msgid "Here are some specific guidelines to create a CNAME record:" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:169 +#: ../../content/administration/maintain/domain_names.rst:174 msgid "`GoDaddy `_" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:170 +#: ../../content/administration/maintain/domain_names.rst:175 msgid "`Namecheap `_" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:171 +#: ../../content/administration/maintain/domain_names.rst:176 msgid "`OVH `_" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:172 +#: ../../content/administration/maintain/domain_names.rst:177 msgid "`CloudFlare `_" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:173 +#: ../../content/administration/maintain/domain_names.rst:178 msgid "`Google Domains `_" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:178 +#: ../../content/administration/maintain/domain_names.rst:183 msgid "Naked domain" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:180 +#: ../../content/administration/maintain/domain_names.rst:185 msgid "A **naked domain** is a domain name that doesn't have any subdomain at the beginning of the address (e.g., ``odoo.com`` instead of ``www.odoo.com``)." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:183 +#: ../../content/administration/maintain/domain_names.rst:188 msgid "You may want your naked domain to redirect to your website as some visitors may not type the full domain name to access your website." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:187 +#: ../../content/administration/maintain/domain_names.rst:192 msgid "Create a **redirection** from the naked domain (``example.com``) to your main domain name (``www.example.com``)." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:191 +#: ../../content/administration/maintain/domain_names.rst:196 msgid "Depending on your domain name registrar, this redirection may be already pre-configured." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:196 +#: ../../content/administration/maintain/domain_names.rst:201 msgid "Map your domain name with your Odoo database" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:202 +#: ../../content/administration/maintain/domain_names.rst:207 msgid "Open your `database manager `_, click on the :guilabel:`settings` button next to your database, on :guilabel:`Domain names`, and then on :guilabel:`Use my own domain` at the bottom of the right column." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:206 +#: ../../content/administration/maintain/domain_names.rst:211 msgid "Type the domain name you want to add to this database, then click on :guilabel:`Verify` to check if the CNAME record is correctly configured. Once done, click on :guilabel:`I confirm, it's done`." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:216 +#: ../../content/administration/maintain/domain_names.rst:221 msgid "Go to :menuselection:`Branches --> select your branch --> Settings --> Custom domains`, type the domain name you want to add to this database, then click on :guilabel:`Add domain`." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:224 +#: ../../content/administration/maintain/domain_names.rst:229 msgid ":ref:`Odoo.sh branches: settings tab `" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:227 +#: ../../content/administration/maintain/domain_names.rst:232 msgid "Make sure to :ref:`add a CNAME record ` to your domain name's DNS **before** mapping your domain name with your Odoo database." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:230 +#: ../../content/administration/maintain/domain_names.rst:235 msgid "Failing to do so may impede the validation of the :ref:`SSL certificate ` and would result in a *certificate name mismatch* error. This is often displayed by web browsers as a warning such as *\"Your connection is not private\"*." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:234 +#: ../../content/administration/maintain/domain_names.rst:239 msgid "If this is the case and you have added the domain name to your database's settings less than five days ago, wait 24 hours as the validation may still happen. Otherwise, please `submit a support ticket `_ including screenshots of your CNAME records." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:241 +#: ../../content/administration/maintain/domain_names.rst:246 msgid "SSL encryption (HTTPS protocol)" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:243 +#: ../../content/administration/maintain/domain_names.rst:248 msgid "**SSL encryption** is an encryption-based Internet security protocol. It allows your visitors to navigate your website through a secure connection, which appears as an ``https://`` protocol at the beginning of your web address, rather than a non-secure ``http://`` protocol." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:247 +#: ../../content/administration/maintain/domain_names.rst:252 msgid "Odoo generates a separate SSL certificate for each domain :ref:`mapped in the database manager `, using integration with `Let's Encrypt Certificate Authority and ACME protocol `_." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:252 +#: ../../content/administration/maintain/domain_names.rst:257 msgid "The certificate generation may take up to 24h." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:253 +#: ../../content/administration/maintain/domain_names.rst:258 msgid "Several attempts to validate your certificate are made during the five days following the moment you add your domain name in your database's settings." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:255 +#: ../../content/administration/maintain/domain_names.rst:260 msgid "If you already use another service, you can keep using it or simply change for Odoo." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:260 +#: ../../content/administration/maintain/domain_names.rst:265 msgid "Web base URL of a database" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:262 +#: ../../content/administration/maintain/domain_names.rst:267 msgid "The **web base URL** of a database, or **root URL** affects your main website address and all the links sent to your customers (e.g., quotations, portal links, etc.)." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:265 +#: ../../content/administration/maintain/domain_names.rst:270 msgid "To configure it, access your Odoo database with your custom address, then log in as an administrator of your database (any user in the *Settings* group) from the login screen." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:269 +#: ../../content/administration/maintain/domain_names.rst:274 msgid "Connecting to your database with the original Odoo subdomain address (e.g., ``example.odoo.com`` also updates the web base URL of your database. See below to prevent these automatic updates." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:272 +#: ../../content/administration/maintain/domain_names.rst:277 msgid "Alternatively, you can do it manually. To do so, activate the :ref:`developer mode `, then go to :menuselection:`Settings --> Technical --> System Parameters`." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:275 +#: ../../content/administration/maintain/domain_names.rst:280 msgid "Find the key called ``web.base.url`` (or create it if it does not exist) and enter the full address of your website as value, such as ``https://www.example.com``." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:279 +#: ../../content/administration/maintain/domain_names.rst:284 msgid "The URL must include the protocol ``https://`` (or ``http://``) and must not end with a slash (``/``)." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:282 +#: ../../content/administration/maintain/domain_names.rst:287 msgid "To prevent the automatic update of the web base URL when an administrator logs in the database, you can create the following System Parameter:" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:285 +#: ../../content/administration/maintain/domain_names.rst:290 msgid "key: ``web.base.url.freeze``" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:286 +#: ../../content/administration/maintain/domain_names.rst:291 msgid "value: ``True``" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:291 +#: ../../content/administration/maintain/domain_names.rst:296 msgid "Map your domain name with your website" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:293 +#: ../../content/administration/maintain/domain_names.rst:298 msgid "Mapping your domain name to your website isn't the same as mapping it with your database:" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:295 +#: ../../content/administration/maintain/domain_names.rst:300 msgid "It defines your domain name as the main one for your website, helping search engines to index your website properly." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:297 +#: ../../content/administration/maintain/domain_names.rst:302 msgid "If you have multiple websites, it maps your domain name with the appropriate website." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:299 +#: ../../content/administration/maintain/domain_names.rst:304 msgid "Go to :menuselection:`Website --> Configuration --> Settings --> Website Info`. If you have multiple websites, select the one you want to configure." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:302 +#: ../../content/administration/maintain/domain_names.rst:307 msgid "In the :guilabel:`Domain` field, fill in the web address of your website (e.g., ``https://www.example.com``) and click on :guilabel:`Save`." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:310 +#: ../../content/administration/maintain/domain_names.rst:315 msgid "Mapping your domain name with your Odoo website prevents Google from indexing both your custom domain name ``www.example.com`` and your original odoo database address ``example.odoo.com``." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:313 +#: ../../content/administration/maintain/domain_names.rst:318 msgid "If both addresses are already indexed, it may take some time before Google removes the indexation of the second address. You may also try using the `Google Search Console `_ to fix this." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:318 +#: ../../content/administration/maintain/domain_names.rst:323 msgid ":doc:`/applications/general/email_communication/email_servers`" msgstr "" @@ -1845,6 +1882,202 @@ msgstr "" msgid "No need to manually launch the server, the service is running. You should be able to connect to your Odoo Enterprise instance using your usual mean of identification. You can then link your database with your Odoo Enterprise Subscription by entering the code you received by e-mail in the form input" msgstr "" +#: ../../content/administration/maintain/google_oauth.rst:3 +msgid "Connect Gmail to Odoo using Google OAuth" +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:5 +msgid "Odoo is compatible with Google's OAuth for Gmail. In order to send secure emails from a custom domain, all that is required is to configure a few settings on Google's *Workspace* platform, as well as on the back end of the Odoo database. This configuration works by using either a personal email address or an address created by a custom domain." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:11 +msgid "For more information, visit `Google's documentation `_ on setting up OAuth." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:15 +msgid "Setup in Google" +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:18 +msgid "Create a new project" +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:20 +msgid "To get started, go to the `Google API Platform `_. Log in with your *Google Workspace* account if you have one, otherwise log in with your personal Gmail account (this should match the email address you want to configure in Odoo)." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:25 +msgid "After that, click on :guilabel:`Create Project`, located on the far right of the OAuth consent screen. If a project has already been created in this account, then the :guilabel:`New Project` option will be located on the top left under the :guilabel:`Select a project` drop-down menu." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:29 +msgid "On the :guilabel:`New Project` screen, rename the :guilabel:`Project name` to `Odoo` and browse for the :guilabel:`Location`. Set the :guilabel:`Location` as the `Google Workspace` organization. If you are using a personal Gmail account, then leave the :guilabel:`Location` as `No Organization`." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:37 +msgid "Click on :guilabel:`Create` to finish this step. On the next screen, :guilabel:`User Type` options, select the :guilabel:`External` option, and then click on :guilabel:`Create` again, which will finally navigate to the :guilabel:`Edit app registration` page." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:42 +msgid "Edit app registration" +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:44 +msgid "On the :guilabel:`Oauth consent screen` step, under the :guilabel:`App information` section, enter `Odoo` in the :guilabel:`App name` field. Select the organization's email address under the :guilabel:`User support` email field." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:47 +msgid "Next, under :menuselection:`App Domain --> Authorized domains`, click on :guilabel:`Add Domain` and enter `odoo.com`." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:49 +msgid "After that, under the :guilabel:`Developer contact information` section, enter the organization's email address. Google uses this email address to notify the organization about any changes to your project." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:52 +msgid "Next, click on the :guilabel:`Save and Continue` button." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:53 +msgid "Then, skip the :guilabel:`Scopes` page by scrolling to the bottom and clicking on :guilabel:`Save and Continue`." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:55 +msgid "Next, add the email being configured under the :guilabel:`Test users` step by clicking on :guilabel:`Add Users` and then the :guilabel:`Save and Continue` button. A summary of the :guilabel:`App registration` appears." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:58 +msgid "Finally, scroll to the bottom and click on :guilabel:`Back to Dashboard`." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:61 +msgid "Create Credentials" +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:63 +msgid "Now that you have set up the project, you need to create credentials, which includes the :guilabel:`Client ID` and :guilabel:`Client Secret`. First, click on :guilabel:`Credentials` in the left sidebar menu." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:67 +msgid "Then, click on :guilabel:`Create Credentials` in the top menu and select :guilabel:`OAuth client ID` from the dropdown menu." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:70 +msgid "Under :guilabel:`Application Type`, select :guilabel:`Web Application` from the dropdown menu." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:71 +msgid "In the :guilabel:`Client ID` field, enter `Odoo`." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:72 +msgid "Under the :guilabel:`Authorized redirect URIs` label, click the button :guilabel:`ADD URI`, and then input `https://yourdbname.odoo.com/google_gmail/confirm` in the :guilabel:`URIs 1` field. Be sure to replace the *yourdbname* part of the URL with your actual Odoo database name." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:75 +msgid "Next, click on :guilabel:`Create` to generate an OAuth :guilabel:`Client ID` and :guilabel:`Client Secret`. Finally, copy each generated value for later use when configuring in Odoo, and then navigate to the Odoo database." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:84 +msgid "Setup in Odoo" +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:87 +msgid "Enter Google Credentials" +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:89 +msgid "First, open Odoo and navigate to the :guilabel:`Apps` module. Then, remove the :guilabel:`Apps` filter from the search bar and type in `Google`. Install the module called :guilabel:`Google Gmail`." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:92 +msgid "Next, navigate to :menuselection:`Settings --> General Settings`, and under the :guilabel:`Discuss` section, ensure that the checkbox for :guilabel:`Custom Email Servers` is checked. This populates a new option for :guilabel:`Gmail Credentials`. Then, copy and paste the :guilabel:`Client ID` and :guilabel:`Client Secret` into the respective fields and :guilabel:`Save` the settings." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:98 +msgid "Configure outgoing email server" +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:100 +msgid "After that, on the :guilabel:`General Settings` page, under :guilabel:`Custom Email Servers`, click :guilabel:`Outgoing Email Servers` to configure the external Gmail account." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:107 +msgid "Then, :guilabel:`Create` a new email server and select the option for :guilabel:`Gmail`. Next, fill in the :guilabel:`Description` (can be anything) and the email :guilabel:`Username` and click on :guilabel:`Connect your Gmail account`." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:111 +msgid "A new window from :guilabel:`Google` opens to complete the authorization process. Select the appropriate email address that is being configured in Odoo." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:114 +msgid "If the email address is a personal account, an extra step pops up, click :guilabel:`Continue` to allow the verification and connect the Gmail account to Odoo." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:117 +msgid "Then, allow Odoo to access the Google account by clicking on :guilabel:`Continue` or :guilabel:`Allow`. After that, the page navigates back to the newly configured outgoing email server in Odoo. The configuration automatically loads the token in Odoo, and a tag stating :guilabel:`Gmail Token Valid` appears in green." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:126 +msgid "Finally, save the settings and :guilabel:`Test the Connection`. A confirmation message should appear. The Odoo database can now send safe, secure emails through Google using OAuth authentication." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:131 +msgid "Google OAuth FAQ" +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:134 +msgid "Production VS Testing Publishing Status" +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:136 +msgid "Choosing :guilabel:`Production` as the :guilabel:`Publishing Status` (instead of Testing) will display the following warning message:" +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:143 +msgid "To correct this warning, navigate to the `Google API Platform `_. If the :guilabel:`Publishing status` is :guilabel:`In Production`, click :guilabel:`Back to Testing` to correct the issue." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:148 +msgid "No Test Users Added" +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:150 +msgid "If no test users are added to the OAuth consent screen, then a 403 access denied error will populate." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:157 +msgid "To correct this error, return to the :guilabel:`OAuth consent screen` under :guilabel:`APIs & Services` and add test user(s) to the app. Add the email that you are configuring in Odoo." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:162 +msgid "Gmail Module not updated" +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:164 +msgid "If the :guilabel:`Gmail Module` in Odoo has not been updated to the latest version, then a :guilabel:`Forbidden` error message populates." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:171 +msgid "To correct this error, go to the :guilabel:`Apps` module and clear out the search terms. Then, search for `Gmail` or `Google` and upgrade the :guilabel:`Google Gmail` module. Finally, click on the three dots on the upper right of the module and select :guilabel:`Upgrade`." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:176 +msgid "Application Type" +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:178 +msgid "When creating the :guilabel:`Credentials` (OAuth Client ID and Client Secret), if :guilabel:`Desktop App` is selected for the :guilabel:`Application Type`, an :guilabel:`Authorization Error` appears." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:186 +msgid "To correct this error, delete the credentials already created and create new credentials, selecting :guilabel:`Web Application` for the :guilabel:`Application Type`. Then, under :guilabel:`Authorized redirect URIs`, click :guilabel:`ADD URI` and type: `https://yourdbname.odoo.com/google_gmail/confirm` in the field." +msgstr "" + +#: ../../content/administration/maintain/google_oauth.rst:192 +msgid "Replace *yourdbname* in the URL with the Odoo database name." +msgstr "" + #: ../../content/administration/maintain/hosting_changes.rst:6 msgid "Change hosting solution" msgstr "" @@ -1858,98 +2091,164 @@ msgid "From on-premises to Odoo Online" msgstr "" #: ../../content/administration/maintain/hosting_changes.rst:14 -#: ../../content/administration/maintain/hosting_changes.rst:48 -msgid "Odoo Online is not compatible with **non-standard apps**." -msgstr "" - -#: ../../content/administration/maintain/hosting_changes.rst:16 msgid "Create a :ref:`duplicate ` of your database: in this duplicate, uninstall all the **non-standard apps**." msgstr "" -#: ../../content/administration/maintain/hosting_changes.rst:17 +#: ../../content/administration/maintain/hosting_changes.rst:15 msgid "Grab a \"dump with filestore\" of your database by using the Database Manager." msgstr "" -#: ../../content/administration/maintain/hosting_changes.rst:18 -#: ../../content/administration/maintain/hosting_changes.rst:51 +#: ../../content/administration/maintain/hosting_changes.rst:16 msgid "**If you have time constraints, contact us earlier to schedule the transfer.**" msgstr "" -#: ../../content/administration/maintain/hosting_changes.rst:19 +#: ../../content/administration/maintain/hosting_changes.rst:17 msgid "`Create a support ticket `_ and attach the dump (if the file is too large, use any file transfer service and attach the link to your ticket). Also include your subscription number and the URL you want to use for your database (e.g.: my-company.odoo.com)." msgstr "" -#: ../../content/administration/maintain/hosting_changes.rst:20 -#: ../../content/administration/maintain/hosting_changes.rst:53 +#: ../../content/administration/maintain/hosting_changes.rst:18 +#: ../../content/administration/maintain/hosting_changes.rst:66 msgid "We will make sure your database is compatible and upload it to our cloud. In case of technical issues, we will get in touch with you." msgstr "" -#: ../../content/administration/maintain/hosting_changes.rst:21 -#: ../../content/administration/maintain/hosting_changes.rst:54 +#: ../../content/administration/maintain/hosting_changes.rst:19 msgid "It's done!" msgstr "" -#: ../../content/administration/maintain/hosting_changes.rst:24 -msgid "From on-premises to Odoo.sh" +#: ../../content/administration/maintain/hosting_changes.rst:22 +#: ../../content/administration/maintain/hosting_changes.rst:71 +msgid "Odoo Online is not compatible with **non-standard apps**." msgstr "" -#: ../../content/administration/maintain/hosting_changes.rst:26 -#: ../../content/administration/maintain/hosting_changes.rst:43 -msgid "Follow the :ref:`Import your database section of the Odoo.sh documentation `." +#: ../../content/administration/maintain/hosting_changes.rst:23 +msgid "The database you are moving to Odoo Online must be in a :doc:`supported version `." msgstr "" #: ../../content/administration/maintain/hosting_changes.rst:27 -msgid "...and voilà!" +msgid "From on-premises to Odoo.sh" +msgstr "" + +#: ../../content/administration/maintain/hosting_changes.rst:29 +#: ../../content/administration/maintain/hosting_changes.rst:46 +msgid "Follow the :ref:`Import your database section of the Odoo.sh documentation `." msgstr "" #: ../../content/administration/maintain/hosting_changes.rst:30 -msgid "From Odoo Online to on-premises" -msgstr "" - -#: ../../content/administration/maintain/hosting_changes.rst:32 -#: ../../content/administration/maintain/hosting_changes.rst:40 -msgid "Log into `your Odoo Online user portal `_ and look for the version number of your database." +msgid "...and voilà!" msgstr "" #: ../../content/administration/maintain/hosting_changes.rst:33 -msgid "If your database does not run a :ref:`major version ` of Odoo, you cannot host it on-premises yet, you have to upgrade it first to a new major version. (*e.g.: If your database runs Odoo 12.3 which is not a major version, you have to upgrade it first to Odoo 13.0 or 14.0.*)" -msgstr "" - -#: ../../content/administration/maintain/hosting_changes.rst:34 -#: ../../content/administration/maintain/hosting_changes.rst:42 -msgid "Download a backup of your database by clicking on the \"Gear\" icon next to your database name then :menuselection:`Download` (if the download fails due to your backup file being too large, contact `our support `_)" +msgid "From Odoo Online to on-premises" msgstr "" #: ../../content/administration/maintain/hosting_changes.rst:35 -#: ../../content/administration/maintain/hosting_changes.rst:60 -msgid "Restore it from the database manager on your local server." +#: ../../content/administration/maintain/hosting_changes.rst:43 +msgid "Log into `your Odoo Online user portal `_ and look for the version number of your database." +msgstr "" + +#: ../../content/administration/maintain/hosting_changes.rst:36 +msgid "If your database does not run a :ref:`major version ` of Odoo, you cannot host it on-premises yet, you have to upgrade it first to a new major version. (*e.g.: If your database runs Odoo 12.3 which is not a major version, you have to upgrade it first to Odoo 13.0 or 14.0.*)" +msgstr "" + +#: ../../content/administration/maintain/hosting_changes.rst:37 +#: ../../content/administration/maintain/hosting_changes.rst:45 +msgid "Download a backup of your database by clicking on the \"Gear\" icon next to your database name then :menuselection:`Download` (if the download fails due to your backup file being too large, contact `our support `_)" msgstr "" #: ../../content/administration/maintain/hosting_changes.rst:38 -msgid "From Odoo Online to Odoo.sh" +#: ../../content/administration/maintain/hosting_changes.rst:87 +msgid "Restore it from the database manager on your local server." msgstr "" #: ../../content/administration/maintain/hosting_changes.rst:41 +msgid "From Odoo Online to Odoo.sh" +msgstr "" + +#: ../../content/administration/maintain/hosting_changes.rst:44 msgid "If your database does not run a :ref:`major version ` of Odoo, you cannot host it on Odoo.sh yet, you have to upgrade it first to a new major version. (*e.g.: If your database runs Odoo 12.3 which is not a major version, you have to upgrade it first to Odoo 13.0 or 14.0.*)" msgstr "" -#: ../../content/administration/maintain/hosting_changes.rst:46 +#: ../../content/administration/maintain/hosting_changes.rst:49 msgid "From Odoo.sh to Odoo Online" msgstr "" -#: ../../content/administration/maintain/hosting_changes.rst:50 -msgid "Uninstall all the **non-standard apps**: test it in a staging build first, then do it in your production build." +#: ../../content/administration/maintain/hosting_changes.rst:51 +msgid "Uninstall all the **non-standard apps**." msgstr "" #: ../../content/administration/maintain/hosting_changes.rst:52 -msgid "`Create a support ticket `_ and include your subscription number and the URL you want to use for your database (e.g.: my-company.odoo.com)." +msgid "`Create a support ticket `_ and include the following:" +msgstr "" + +#: ../../content/administration/maintain/hosting_changes.rst:54 +msgid "Your subscription number" +msgstr "" + +#: ../../content/administration/maintain/hosting_changes.rst:55 +msgid "The URL you want to use for your database (e.g., `example.odoo.com`)" +msgstr "" + +#: ../../content/administration/maintain/hosting_changes.rst:56 +msgid "Which branch you want to migrate" msgstr "" #: ../../content/administration/maintain/hosting_changes.rst:57 -msgid "From Odoo.sh to on-premises" +msgid "In which region you want to be hosted:" msgstr "" #: ../../content/administration/maintain/hosting_changes.rst:59 +msgid "Americas" +msgstr "" + +#: ../../content/administration/maintain/hosting_changes.rst:60 +msgid "Europe" +msgstr "" + +#: ../../content/administration/maintain/hosting_changes.rst:61 +msgid "Asia" +msgstr "" + +#: ../../content/administration/maintain/hosting_changes.rst:63 +msgid "Which user(s) will be the administrator(s)" +msgstr "" + +#: ../../content/administration/maintain/hosting_changes.rst:64 +msgid "When (and in which timezone) you want the database to be up and running" +msgstr "" + +#: ../../content/administration/maintain/hosting_changes.rst:68 +msgid "All done!" +msgstr "" + +#: ../../content/administration/maintain/hosting_changes.rst:72 +msgid "Make sure to uninstall all the **non-standard apps** in a staging build before doing it in your production build." +msgstr "" + +#: ../../content/administration/maintain/hosting_changes.rst:76 +msgid "Make sure you select the **region** that is closest to your users to reduce latency." +msgstr "" + +#: ../../content/administration/maintain/hosting_changes.rst:77 +msgid "The future **administrator(s)** must have an odoo.com account." +msgstr "" + +#: ../../content/administration/maintain/hosting_changes.rst:78 +msgid "The specific **date and time** at which you want the database to be up and running are mainly helpful to organize the switch from the odoo.sh server to the Odoo Online servers." +msgstr "" + +#: ../../content/administration/maintain/hosting_changes.rst:80 +msgid "Databases are **not reachable** during their migration." +msgstr "" + +#: ../../content/administration/maintain/hosting_changes.rst:81 +msgid "**If you have time constraints, contact us earlier to schedule the transfer**." +msgstr "" + +#: ../../content/administration/maintain/hosting_changes.rst:84 +msgid "From Odoo.sh to on-premises" +msgstr "" + +#: ../../content/administration/maintain/hosting_changes.rst:86 msgid "Grab a :ref:`backup of your Odoo.sh production database `." msgstr "" @@ -2169,6 +2468,7 @@ msgid ":ref:`online/users`" msgstr "" #: ../../content/administration/maintain/online.rst:36 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:285 #: ../../content/administration/upgrade.rst:10 msgid "Upgrade" msgstr "" @@ -2262,7 +2562,7 @@ msgid "Add tags to sort your databases out. You can search the tags in the searc msgstr "" #: ../../content/administration/maintain/online.rst:110 -#: ../../content/administration/odoo_sh/getting_started/branches.rst:528 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:539 msgid "Delete" msgstr "" @@ -2586,19 +2886,19 @@ msgstr "" msgid "🏁 Future version, not released yet" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:81 +#: ../../content/administration/maintain/supported_versions.rst:80 msgid "I run an older version of Odoo/OpenERP/TinyERP" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:83 +#: ../../content/administration/maintain/supported_versions.rst:82 msgid "OpenERP 7.0, 6.1, 6.0 and 5.0 is not supported anymore, on any platform." msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:85 +#: ../../content/administration/maintain/supported_versions.rst:84 msgid "TinyERP 4.0, 3.0, 2.0 and 1.0 is not supported anymore, on any platform." msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:87 +#: ../../content/administration/maintain/supported_versions.rst:86 msgid "Even though we don't support older versions, you can always `upgrade from any version `_." msgstr "" @@ -2763,6 +3063,7 @@ msgstr "" #: ../../content/administration/odoo_sh/getting_started/settings.rst:7 #: ../../content/administration/odoo_sh/getting_started/status.rst:7 #: ../../content/administration/odoo_sh/overview.rst:5 +#: ../../content/administration/upgrade/odoo_sh.rst:8 msgid "Overview" msgstr "" @@ -2875,7 +3176,7 @@ msgid "``--stop-after-init`` will immediately shutdown the server instance after msgstr "" #: ../../content/administration/odoo_sh/advanced/containers.rst:169 -msgid "More options are available and detailed in the :doc:`CLI documentation `." +msgid "More options are available and detailed in the :doc:`CLI documentation `." msgstr "" #: ../../content/administration/odoo_sh/advanced/containers.rst:172 @@ -3149,7 +3450,7 @@ msgid "If your changes require the update of a module, such as a change in a for msgstr "" #: ../../content/administration/odoo_sh/getting_started/branches.rst:43 -msgid "This method is equivalent to perform an upgrade of the module through the Apps menu, or through the :code:`-u` switch of :doc:`the command line `." +msgid "This method is equivalent to perform an upgrade of the module through the Apps menu, or through the :code:`-u` switch of :doc:`the command line `." msgstr "" #: ../../content/administration/odoo_sh/getting_started/branches.rst:47 @@ -3444,7 +3745,15 @@ msgstr "" msgid "the Odoo.sh dump download button in the :ref:`Builds view `." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:285 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:287 +msgid "Available for production and staging branches for valid projects." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:290 +msgid ":doc:`Upgrade - Odoo.sh <../../upgrade/odoo_sh>`" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:295 #: ../../content/administration/odoo_sh/getting_started/settings.rst:4 #: ../../content/administration/odoo_sh/getting_started/settings.rst:62 #: ../../content/administration/odoo_sh/getting_started/settings.rst:78 @@ -3452,300 +3761,300 @@ msgstr "" msgid "Settings" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:286 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:297 msgid "Here you can find a couple of settings that only apply to the currently selected branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:291 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:302 msgid "**Behaviour upon new commit**" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:293 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:304 msgid "For development and staging branches, you can change the branch's behavior upon receiving a new commit. By default, a development branch will create a new build and a staging branch will update the previous build (see the :ref:`Production Stage `). This is especially useful should the feature you're working on require a particular setup or configuration, to avoid having to manually set it up again on every commit. If you choose new build for a staging branch, it will make a fresh copy from the production build every time a commit is pushed. A branch that is put back from staging to development will automatically be set to 'Do nothing'." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:301 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:312 msgid "**Modules installation**" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:303 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:314 msgid "Choose the modules to install automatically for your development builds." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:308 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:319 msgid "*Install only my modules* will install the modules of the branch only. This is the default option. The :ref:`submodules ` are excluded." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:310 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:321 msgid "*Full installation (all modules)* will install the modules of the branch, the modules included in the submodules and all standard modules of Odoo. When running the full installation, the test suite is disabled." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:312 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:323 msgid "*Install a list of modules* will install the modules specified in the input just below this option. The names are the technical name of the modules, and they must be comma-separated." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:315 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:326 msgid "If the tests are enabled, the standard Odoo modules suite can take up to 1 hour. This setting applies to development builds only. Staging builds duplicate the production build and the production build only installs base." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:320 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:331 msgid "**Test suite**" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:322 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:333 msgid "For development branches, you can choose to enable or disable the test suite. It's enabled by default. When the test suite is enabled, you can restrict them by specifying test tags :ref:`test tags `." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:326 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:337 msgid "**Odoo Version**" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:328 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:339 msgid "For development branches only, you can change the version of Odoo, should you want to test upgraded code or develop features while your production database is in the process of being upgraded to a newer version." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:331 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:342 msgid "In addition, for each version you have two options regarding the code update." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:333 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:344 msgid "You can choose to benefit from the latest bug, security and performance fixes automatically. The sources of your Odoo server will be updated weekly. This is the 'Latest' option." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:335 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:346 msgid "You can choose to pin the Odoo sources to a specific revision by selecting them from a list of dates. Revisions will expire after 3 months. You will be notified by mail when the expiration date approaches and if you don't take action afterwards, you will automatically be set to the latest revision." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:340 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:351 msgid "**Custom domains**" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:342 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:353 msgid "Here you can configure additional domains for the selected branch. It's possible to add other *.odoo.com* domains or your own custom domains. For the latter you have to:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:345 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:356 msgid "own or purchase the domain name," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:346 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:357 msgid "add the domain name in this list," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:347 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:358 msgid "in your registrar's domain name manager, configure the domain name with a ``CNAME`` record set to your production database domain name." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:350 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:361 msgid "For instance, to associate *www.mycompany.com* to your database *mycompany.odoo.com*:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:352 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:363 msgid "in Odoo.sh, add *www.mycompany.com* in the custom domains of your project settings," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:353 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:364 msgid "in your domain name manager (e.g. *godaddy.com*, *gandi.net*, *ovh.com*), configure *www.mycompany.com* with a ``CNAME`` record with as value *mycompany.odoo.com*." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:356 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:367 msgid "Bare domains (e.g. *mycompany.com*) are not accepted:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:358 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:369 msgid "they can only be configured using ``A`` records," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:359 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:370 msgid "``A`` records only accept IP addresses as value," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:360 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:371 msgid "the IP address of your database can change, following an upgrade, a hardware failure or your wish to host your database in another country or continent." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:363 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:374 msgid "Therefore, bare domains could suddenly no longer work because of this change of IP address." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:365 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:376 msgid "In addition, if you would like both *mycompany.com* and *www.mycompany.com* to work with your database, having the first redirecting to the second is amongst the `SEO best practices `_ (See *Provide one version of a URL to reach a document*) in order to have one dominant URL. You can therefore just configure *mycompany.com* to redirect to *www.mycompany.com*. Most domain managers have the feature to configure this redirection. This is commonly called a web redirection." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:372 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:383 msgid "**HTTPS/SSL**" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:374 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:385 msgid "If the redirection is correctly set up, the platform will automatically generate an SSL certificate with `Let's Encrypt `_ within the hour and your domain will be accessible through HTTPS." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:378 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:389 msgid "While it is currently not possible to configure your own SSL certificates on the Odoo.sh platform we are considering the feature if there is enough demand." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:382 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:393 msgid "**SPF and DKIM compliance**" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:384 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:395 msgid "In case the domain of your users email addresses use SPF (Sender Policy Framework) or DKIM (DomainKeys Identified Mail), don't forget to authorize Odoo as a sending host in your domain name settings to increase the deliverability of your outgoing emails. The configuration steps are explained in the documentation about :ref:`SPF ` and :ref:`DKIM `." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:392 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:403 msgid "Forgetting to configure your SPF or DKIM to authorize Odoo as a sending host can lead to the delivery of your emails as spam in your contacts inbox." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:397 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:408 msgid "Shell commands" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:398 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:409 msgid "In the top right-hand corner of the view, different shell commands are available." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:403 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:414 msgid "Each command can be copied in the clipboard to be used in a terminal, and some of them can be used directly from Odoo.sh by clicking the *run* button in such case a popup will prompt the user in order to define eventual placeholders such as ````, ````, ..." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:409 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:420 msgid "Clone" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:410 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:421 msgid "Download the Git repository." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:416 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:427 msgid "Clones the repository *odoo/odoo*." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:418 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:429 msgid ":code:`--recurse-submodules`: Downloads the submodules of your repository. Submodules included in the submodules are downloaded as well." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:419 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:430 msgid ":code:`--branch`: checks out a specific branch of the repository, in this case *master*." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:421 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:432 msgid "The *run* button is not available for this command, as it is meant to be used on your machines." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:424 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:435 msgid "Fork" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:425 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:436 msgid "Create a new branch based on the current branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:431 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:442 msgid "Creates a new branch called *feature-1* based on the branch *master*, and then checkouts it." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:437 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:448 msgid "Uploads the new branch *feature-1* on your remote repository." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:440 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:451 msgid "Merge" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:441 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:452 msgid "Merge the current branch in another branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:447 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:458 msgid "Merges the branch *staging-1* in the current branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:453 -#: ../../content/administration/odoo_sh/getting_started/branches.rst:525 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:464 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:536 msgid "Uploads the changes you just added in the *master* branch on your remote repository." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:456 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:467 msgid "SSH" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:458 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:469 msgid "Setup" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:459 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:470 msgid "In order to use SSH, you have to set up your profile SSH public key (if it is not already done). To do so, follow these steps:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:462 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:473 msgid "`Generate a new SSH key `_" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:464 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:475 msgid "`Copy the SSH key to your clipboard `_ (only apply the step 1)" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:467 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:478 msgid "Paste the copied content to your profile SSH keys and press \"Add\"" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:472 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:483 msgid "The key should appear below" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:478 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:489 msgid "Connection" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:480 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:491 msgid "To connect to your builds using ssh use the following command in a terminal:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:486 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:497 msgid "You will find a shortcut for this command into the SSH tab in the upper right corner." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:491 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:502 msgid "Provided you have the :ref:`correct access rights ` on the project, you'll be granted ssh access to the build." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:495 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:506 msgid "Long running ssh connections are not guaranteed. Idle connections will be disconnected in order to free up resources." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:500 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:511 msgid "Submodule" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:502 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:513 msgid "Add a branch from another repository in your current branch as a *submodule*." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:504 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:515 msgid "*Submodules* allows you to use modules from other repositories in your project." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:506 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:517 msgid "The submodules feature is detailed in the chapter :ref:`Submodules ` of this documentation." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:513 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:524 msgid "Adds the branch *master* of the repository ** as a submodule under the path ** in your current branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:519 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:530 msgid "Commits all your current changes." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:530 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:541 msgid "Delete a branch from your repository." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:536 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:547 msgid "Deletes the branch in your remote repository." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:542 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:553 msgid "Deletes the branch in your local copy of the repository." msgstr "" @@ -4206,7 +4515,7 @@ msgid "Or, from your computer, if you have an :ref:`installation of Odoo ` in which you replace every occurrences of *my_module* to the name of your choice." +msgid "If you do not want to bother installing Odoo on your computer, you can also :download:`download this module structure template ` in which you replace every occurrences of *my_module* to the name of your choice." msgstr "" #: ../../content/administration/odoo_sh/getting_started/first_module.rst:101 @@ -4592,143 +4901,143 @@ msgstr "" msgid "The working directory is composed of the following folders:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:50 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:49 msgid "You can edit the source code (files under */src*) in development and staging builds." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:53 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:52 msgid "Your changes won't be propagated to a new build, you must commit them in your source code if you want to make them persist." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:57 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:56 msgid "For production builds, the source code is read-only, because applying local changes on a production server is not a good practice." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:60 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:59 msgid "The source code of your Github repository is located under */src/user*," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:61 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:60 msgid "The source code of Odoo is located under" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:63 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:62 msgid "*/src/odoo* (`odoo/odoo `_)," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:64 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:63 msgid "*/src/enterprise* (`odoo/enterprise `_)," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:65 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:64 msgid "*/src/themes* (`odoo/design-themes `_)." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:67 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:66 msgid "To open a file in the editor, just double-click on it in the file browser panel on the left." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:72 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:71 msgid "You can then begin to make your changes. You can save your changes with the menu :menuselection:`File --> Save .. File` or by hitting the :kbd:`Ctrl+S` shortcut." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:78 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:77 msgid "If you save a Python file which is under your Odoo server addons path, Odoo will detect it and reload automatically so your changes are reflected immediately, without having to restart the server manually." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:85 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:84 msgid "However, if the change is a data stored in database, such as the label of a field, or a view, you have to update the according module to apply the change. You can update the module of the currently opened file by using the menu :menuselection:`Odoo --> Update current module`. Note that the file considered as currently opened is the file focused in the text editor, not the file highlighted in the file browser." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:94 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:93 msgid "You can also open a terminal and execute the command:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:103 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:102 msgid "Commit & Push your changes" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:105 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:104 msgid "You have the possibility to commit and push your changes to your Github repository." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:107 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:106 msgid "Open a terminal (:menuselection:`File --> New --> Terminal`)," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:108 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:107 msgid "Change the directory to *~/src/user* using :code:`cd ~/src/user`," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:109 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:108 msgid "Stage your changes using :code:`git add`," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:110 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:109 msgid "Commit your changes using :code:`git commit`," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:111 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:110 msgid "Push your changes using :code:`git push https HEAD:`." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:113 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:112 msgid "In this last command," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:115 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:114 msgid "*https* is the name of your *HTTPS* Github remote repository (e.g. https://github.com/username/repository.git)," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:117 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:116 msgid "HEAD is the reference to the latest revision you committed," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:118 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:117 msgid " must be replaced by the name of the branch to which you want to push the changes, most-likely the current branch if you work in a development build." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:125 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:124 msgid "The SSH Github remote is not used because your SSH private key is not hosted in your build containers (for obvious security concerns) nor forwarded through an SSH Agent (as you access this editor through a web browser) and you therefore cannot authenticate yourself to Github using SSH. You have to use the HTTPS remote of your Github repository to push your changes, which is added automatically named as *https* in your Git remotes. You will be prompted to enter your Github username and password. If you activated the two-factor authentication on Github, you can create a `personal access token `_ and use it as password. Granting the ``repo`` permission suffices." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:139 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:138 msgid "The Git source folder *~/src/user* is not checked out on a branch but rather on a detached revision: This is because builds work on specific revisions rather than branches. In other words, this means you can have multiple builds on the same branch, but on different revisions." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:143 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:142 msgid "Once your changes are pushed, according to your :ref:`branch push behavior `, a new build may be created. You can continue to work in the editor you pushed from, as it will have the same revision as the new build that was created, but always make sure to be in an editor of a build using the latest revision of your branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:150 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:149 msgid "Consoles" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:152 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:151 msgid "You can open Python consoles, which are `IPython interactive shells `_. One of the most interesting addition to use a Python console rather than a IPython shell within a terminal is the `rich display `_ capabilities. Thanks to this, you will be able to display objects in HTML." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:160 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:159 msgid "You can for instance display cells of a CSV file using `pandas `_." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:166 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:165 msgid "You can also open an Odoo Shell console to play around with the Odoo registry and model methods of your database. You can also directly read or write on your records." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:171 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:170 msgid "In an Odoo Console, transactions are automatically committed. This means, for instance, that changes in records are applied effectively in the database. If you change the name of a user, the name of the user is changed in your database as well. You therefore should use Odoo consoles carefully on production databases." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:177 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:176 msgid "You can use *env* to invoke models of your database registry, e.g. :code:`env['res.users']`." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:187 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:186 msgid "The class :code:`Pretty` gives you the possibility to easily display lists and dicts in a pretty way, using the `rich display `_ mentioned above." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:195 +#: ../../content/administration/odoo_sh/getting_started/online-editor.rst:194 msgid "You can also use `pandas `_ to display graphs." msgstr "" @@ -5017,7 +5326,6 @@ msgid "|assistance-contact|" msgstr "" #: ../../content/administration/upgrade.rst:32 -#: ../../content/administration/upgrade/odoo_sh.rst:66 msgid ":ref:`upgrade/sla`" msgstr "" @@ -5576,89 +5884,133 @@ msgstr "" msgid "If you are using the Website or Studio app, we recommend you always do a test upgrade before upgrading your production instance." msgstr "" -#: ../../content/administration/upgrade/odoo_sh.rst:7 -#: ../../content/administration/upgrade/on_premise.rst:6 -msgid "Test upgrade request" +#: ../../content/administration/upgrade/odoo_sh.rst:10 +msgid "Odoo.sh is integrated with the upgrade platform to make the upgrade process easier." msgstr "" -#: ../../content/administration/upgrade/odoo_sh.rst:9 -msgid "Download a dump of your database (from the :ref:`Builds view `), choose the **exact copy** and **without filestore** options. Upload the .sql.gz dump on https://upgrade.odoo.com/upload and select the testing purpose. Once it's processed, you'll get a dump of the database in return." -msgstr "" - -#: ../../content/administration/upgrade/odoo_sh.rst:15 -msgid "To have the most up-to-date test version of your database, create a backup of your production database just before creating your request. Upload it in your staging branch, select **Exact dump** and **Without filestore**, and then click *start*." +#: ../../content/administration/upgrade/odoo_sh.rst:13 +msgid "The :guilabel:`Upgrade` tab is available in the branches view. It is only available for valid projects with a valid production build." msgstr "" #: ../../content/administration/upgrade/odoo_sh.rst:20 -msgid "Test your upgraded database" +msgid "The suggested upgrade steps on Odoo.sh are:" msgstr "" #: ../../content/administration/upgrade/odoo_sh.rst:22 -msgid "At the beginning of your upgrade project, make sure that you create a new staging branch for testing purposes by forking your main branch." +msgid "On a :guilabel:`Development` branch, upgrade your custom modules to keep them compatible with the new version and thoroughly **test them**." msgstr "" -#: ../../content/administration/upgrade/odoo_sh.rst:25 -msgid "Once the staging build is complete (it doesn't matter if it failed due to the version incompatibility), import your upgraded dump in the *Backups* tab of the branch." +#: ../../content/administration/upgrade/odoo_sh.rst:24 +msgid "Switch that branch to the :guilabel:`Staging` branch, **upgrade** the last daily production backup and **test it**. Write upgrade scripts if necessary." +msgstr "" + +#: ../../content/administration/upgrade/odoo_sh.rst:26 +msgid "Trigger the production upgrade from your :guilabel:`Production` branch and sit tight." msgstr "" #: ../../content/administration/upgrade/odoo_sh.rst:29 -msgid "The platform automatically detects the version of the dump and changes the version of Odoo's source code to the corresponding version of the build." +msgid ":doc:`../../administration/upgrade`" msgstr "" -#: ../../content/administration/upgrade/odoo_sh.rst:32 -msgid "Test the upgraded database and make sure everything runs as it's supposed to." +#: ../../content/administration/upgrade/odoo_sh.rst:30 +msgid ":doc:`Upgrade FAQ <../upgrade/faq>`" msgstr "" -#: ../../content/administration/upgrade/odoo_sh.rst:35 -#: ../../content/administration/upgrade/on_premise.rst:41 -msgid "Upgrade your production database" +#: ../../content/administration/upgrade/odoo_sh.rst:31 +msgid ":doc:`Introduction to Odoo.sh <../odoo_sh/overview/introduction>`" msgstr "" -#: ../../content/administration/upgrade/odoo_sh.rst:37 -msgid "Once you've tested everything and you're satisfied, start the process over to get an up-to-date upgraded dump:" +#: ../../content/administration/upgrade/odoo_sh.rst:36 +msgid "Upgrade your custom modules" msgstr "" -#: ../../content/administration/upgrade/odoo_sh.rst:40 -msgid "Make a new dump of your production database (as described in step 1)" -msgstr "" - -#: ../../content/administration/upgrade/odoo_sh.rst:41 -msgid "Upload it on upgrade.odoo.com and select the Production purpose" -msgstr "" - -#: ../../content/administration/upgrade/odoo_sh.rst:42 -msgid "Receive the newly upgraded dump and import it in your production branch. The build might get marked as failed because the platform will run it with the upgraded databases' Odoo version together with the old custom code." +#: ../../content/administration/upgrade/odoo_sh.rst:38 +msgid "The first step is to upgrade your custom modules to keep them compatible with the new version. Fork your :guilabel:`Production` branch in the :guilabel:`Development` stage, then go to the settings of your :guilabel:`Development` branch and select the Odoo version you target. If needed, modify your code to be compatible with the new version. Make sure to **test** your features are still working correctly." msgstr "" #: ../../content/administration/upgrade/odoo_sh.rst:45 -msgid "Merge or commit the upgraded custom code in the production branch" +msgid "Depending on your contract, the upgrade of your custom modules can be done by yourself, by your Partner or by Odoo (if you hold a subscription including maintenance of customizations)." msgstr "" -#: ../../content/administration/upgrade/odoo_sh.rst:47 -msgid "If anything goes wrong, remember you can restore a backup. The platform will always make one before you make any Odoo.sh operation on the production database. If the restored backup comes from a previous version, the platform will detect it and change the project's Odoo version back if it needs to." +#: ../../content/administration/upgrade/odoo_sh.rst:51 +msgid "Upgrade your database on a staging branch" msgstr "" #: ../../content/administration/upgrade/odoo_sh.rst:53 -#: ../../content/administration/upgrade/on_premise.rst:48 -msgid "Custom modules (if applicable)" +msgid "Take the upgraded development branch and drag & drop it to :guilabel:`Staging`." msgstr "" #: ../../content/administration/upgrade/odoo_sh.rst:55 -msgid "The upgrade of a database that contains custom modules is a 2 step process." +msgid "Go to the :guilabel:`Upgrade` tab and select the :guilabel:`target version`. Then, click on :guilabel:`Test Upgrade`." msgstr "" -#: ../../content/administration/upgrade/odoo_sh.rst:57 -#: ../../content/administration/upgrade/on_premise.rst:52 -msgid "The standard upgrade is done when your upgrade request is completed." +#: ../../content/administration/upgrade/odoo_sh.rst:62 +msgid "The **latest production daily automatic backup** is sent to the `upgrade platform `_ to start the upgrade test process." msgstr "" -#: ../../content/administration/upgrade/odoo_sh.rst:58 -#: ../../content/administration/upgrade/on_premise.rst:53 -msgid "Your custom modules also need to be upgraded to keep them compatible with the new version." +#: ../../content/administration/upgrade/odoo_sh.rst:66 +msgid "You can follow the upgrade process by going to the :guilabel:`Upgrade` menu of your :guilabel:`Production` branch." msgstr "" -#: ../../content/administration/upgrade/odoo_sh.rst:60 -msgid "Depending on your contract, the upgrade of your custom modules can be done - by yourself - by your Partner - by Odoo (if you hold a subscription to 'Maintenance of Customizations')" +#: ../../content/administration/upgrade/odoo_sh.rst:69 +msgid "When the upgraded backup is ready on the `upgrade platform `_, it is automatically downloaded back to your project." +msgstr "" + +#: ../../content/administration/upgrade/odoo_sh.rst:72 +msgid "The branch is now in a **special mode**: each time a **commit is pushed** on the branch, a **restore operation** of the upgraded backup occurs, and an **update of all the custom modules** happens. This allows you to quickly iterate on your custom modules upgrade scripts. The log file of the upgrade process can be found at :file:`~/logs/upgrade.log` in your newly upgraded staging build." +msgstr "" + +#: ../../content/administration/upgrade/odoo_sh.rst:78 +msgid "The **special upgrade mode** is automatically closed after 30 days." +msgstr "" + +#: ../../content/administration/upgrade/odoo_sh.rst:79 +#: ../../content/administration/upgrade/odoo_sh.rst:128 +msgid "It may happen that custom modules are no longer needed after an upgrade. Custom modules in the upgraded database are set to be updated. If the modules are missing in the code, the update fails, thus failing the whole process. An empty module with a manifest and possibly some custom upgrade script are necessary to clean up the database. The complete removal of the module has to be handled afterwards." +msgstr "" + +#: ../../content/administration/upgrade/odoo_sh.rst:86 +msgid "Functionally test your upgraded database" +msgstr "" + +#: ../../content/administration/upgrade/odoo_sh.rst:88 +msgid "Now that the test upgraded database is available on your staging branch, **thoroughly test it** and make sure everything runs as it's supposed to. Once you are satisfied with the result, you are ready to upgrade your production database." +msgstr "" + +#: ../../content/administration/upgrade/odoo_sh.rst:93 +msgid "Production upgrade" +msgstr "" + +#: ../../content/administration/upgrade/odoo_sh.rst:95 +msgid "Once you are happy with your testing, you can start the process on the :guilabel:`Production` branch." +msgstr "" + +#: ../../content/administration/upgrade/odoo_sh.rst:98 +msgid "On your :guilabel:`Production` branch, go to the :guilabel:`Upgrade` tab, select the :guilabel:`targeted version` and click on the :guilabel:`start Upgrade` button." +msgstr "" + +#: ../../content/administration/upgrade/odoo_sh.rst:105 +msgid "The actual process is **triggered as soon as you push a new commit** in your branch. Make sure you are pushing code that is compatible with the new version. For example by merging the code from your upgraded staging branch." +msgstr "" + +#: ../../content/administration/upgrade/odoo_sh.rst:110 +msgid "You can see the progress of the upgrade by going to the :guilabel:`Upgrade` tab of the main branch." +msgstr "" + +#: ../../content/administration/upgrade/odoo_sh.rst:118 +msgid "Your database is unavailable throughout the process." +msgstr "" + +#: ../../content/administration/upgrade/odoo_sh.rst:121 +msgid "If anything goes wrong, the platform automatically reverts the upgrade, the same as it would be for a regular update. In case of success, a backup is always made." +msgstr "" + +#: ../../content/administration/upgrade/odoo_sh.rst:124 +msgid "The update of your custom modules must be successful to complete the entire upgrade process. Make sure the status of your staging upgrade is :guilabel:`successful` before trying it in production." +msgstr "" + +#: ../../content/administration/upgrade/on_premise.rst:6 +msgid "Test upgrade request" msgstr "" #: ../../content/administration/upgrade/on_premise.rst:8 @@ -5705,14 +6057,30 @@ msgstr "" msgid "Any problem found during testing should be reported via the `helpdesk `_." msgstr "" +#: ../../content/administration/upgrade/on_premise.rst:41 +msgid "Upgrade your production database" +msgstr "" + #: ../../content/administration/upgrade/on_premise.rst:43 msgid "Once you have completed the testing successfully, you can proceed to upgrade your live database in production. Download your upgraded database from the link in the email and import it onto your live environment." msgstr "" +#: ../../content/administration/upgrade/on_premise.rst:48 +msgid "Custom modules (if applicable)" +msgstr "" + #: ../../content/administration/upgrade/on_premise.rst:50 msgid "The upgrade of a database that contains custom modules is a two-step process." msgstr "" +#: ../../content/administration/upgrade/on_premise.rst:52 +msgid "The standard upgrade is done when your upgrade request is completed." +msgstr "" + +#: ../../content/administration/upgrade/on_premise.rst:53 +msgid "Your custom modules also need to be upgraded to keep them compatible with the new version." +msgstr "" + #: ../../content/administration/upgrade/on_premise.rst:55 msgid "Depending on your contract, the upgrade of your custom modules can be done" msgstr "" diff --git a/locale/sources/contributing.pot b/locale/sources/contributing.pot index f87a776c8..eabc06ae6 100644 --- a/locale/sources/contributing.pot +++ b/locale/sources/contributing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 14.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-18 13:48+0000\n" +"POT-Creation-Date: 2022-09-01 15:09+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,95 +16,987 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../content/contributing.rst:5 +#: ../../content/contributing.rst:7 msgid "Contributing" msgstr "" +#: ../../content/contributing.rst:9 +msgid "First, **thank you** for landing here and helping us improve Odoo!" +msgstr "" + +#: ../../content/contributing.rst:11 +msgid "This documentation section is intended as a guide to making contributions for first-timers and veterans." +msgstr "" + +#: ../../content/contributing.rst:14 +msgid "As an open-core project, Odoo accepts contributions from everyone, Odoo employees and members of the Odoo community alike, in all of its open-source `GitHub repositories `_." +msgstr "" + +#: ../../content/contributing/development.rst:6 +msgid "Development" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:6 +msgid "Coding Guidelines" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:8 +msgid "This page introduces the Odoo Coding Guidelines. Those aim to improve the quality of Odoo Apps code. Indeed proper code improves readability, eases maintenance, helps debugging, lowers complexity and promotes reliability. These guidelines should be applied to every new module and to all new development." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:15 +msgid "When modifying existing files in **stable version** the original file style strictly supersedes any other style guidelines. In other words please never modify existing files in order to apply these guidelines. It avoids disrupting the revision history of code lines. Diff should be kept minimal. For more details, see our `pull request guide `_." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:23 +msgid "When modifying existing files in **master (development) version** apply those guidelines to existing code only for modified code or if most of the file is under revision. In other words modify existing files structure only if it is going under major changes. In that case first do a **move** commit then apply the changes related to the feature." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:30 +msgid "Module structure" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:33 +msgid "Directories" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:34 +msgid "A module is organized in important directories. Those contain the business logic; having a look at them should make you understand the purpose of the module." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:37 +msgid "*data/* : demo and data xml" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:38 +msgid "*models/* : models definition" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:39 +msgid "*controllers/* : contains controllers (HTTP routes)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:40 +msgid "*views/* : contains the views and templates" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:41 +msgid "*static/* : contains the web assets, separated into *css/, js/, img/, lib/, ...*" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:43 +msgid "Other optional directories compose the module." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:45 +msgid "*wizard/* : regroups the transient models (``models.TransientModel``) and their views" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:46 +msgid "*report/* : contains the printable reports and models based on SQL views. Python objects and XML views are included in this directory" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:47 +msgid "*tests/* : contains the Python tests" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:51 +msgid "File naming" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:53 +msgid "File naming is important to quickly find information through all odoo addons. This section explains how to name files in a standard odoo module. As an example we use a `plant nursery `_ application. It holds two main models *plant.nursery* and *plant.order*." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:58 +msgid "Concerning *models*, split the business logic by sets of models belonging to a same main model. Each set lies in a given file named based on its main model. If there is only one model, its name is the same as the module name. Each inherited model should be in its own file to help understanding of impacted models." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:72 +msgid "Concerning *security*, three main files should be used:" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:74 +msgid "First one is the definition of access rights done in a :file:`ir.model.access.csv` file." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:75 +msgid "User groups are defined in :file:`_groups.xml`." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:76 +msgid "Record rules are defined in :file:`_security.xml`." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:87 +msgid "Concerning *views*, backend views should be split like models and suffixed by ``_views.xml``. Backend views are list, form, kanban, activity, graph, pivot, .. views. To ease split by model in views main menus not linked to specific actions may be extracted into an optional ``_menus.xml`` file. Templates (QWeb pages used notably for portal / website display) and bundles (import of JS and CSS assets) are put in separate files. Those are respectively ``_templates.xml`` and ``assets.xml`` files." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:107 +msgid "Concerning *data*, split them by purpose (demo or data) and main model. Filenames will be the main_model name suffixed by ``_demo.xml`` or ``_data.xml``. For instance for an application having demo and data for its main model as well as subtypes, activities and mail templates all related to mail module:" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:120 +msgid "Concerning *controllers*, generally all controllers belong to a single controller contained in a file named ``.py``. An old convention in Odoo is to name this file ``main.py`` but it is considered as outdated. If you need to inherit an existing controller from another module do it in ``.py``. For example adding portal controller in an application is done in ``portal.py``." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:134 +msgid "Concerning *static files*, Javascript files follow globally the same logic as python models. Each component should be in its own file with a meaningful name. For instance, the activity widgets are located in ``activity.js`` of mail module. Subdirectories can also be created to structure the 'package' (see web module for more details). The same logic should be applied for the templates of JS widgets (static XML files) and for their styles (scss files). Don't link data (image, libraries) outside Odoo: do not use an URL to an image but copy it in the codebase instead." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:143 +msgid "Concerning *wizards*, naming convention is the same of for python models: ``.py`` and ``_views.xml``. Both are put in the wizard directory. This naming comes from old odoo applications using the wizard keyword for transient models." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:155 +msgid "Concerning *statistics reports* done with python / SQL views and classic views naming is the following :" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:165 +msgid "Concerning *printable reports* which contain mainly data preparation and Qweb templates naming is the following :" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:175 +msgid "The complete tree of our Odoo module therefore looks like" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:234 +msgid "File names should only contain ``[a-z0-9_]`` (lowercase alphanumerics and ``_``)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:237 +msgid "Use correct file permissions : folder 755 and file 644." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:242 +msgid "XML files" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:245 +msgid "Format" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:246 +msgid "To declare a record in XML, the **record** notation (using **) is recommended:" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:248 +msgid "Place ``id`` attribute before ``model``" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:249 +msgid "For field declaration, ``name`` attribute is first. Then place the *value* either in the ``field`` tag, either in the ``eval`` attribute, and finally other attributes (widget, options, ...) ordered by importance." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:254 +msgid "Try to group the record by model. In case of dependencies between action/menu/views, this convention may not be applicable." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:256 +msgid "Use naming convention defined at the next point" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:257 +msgid "The tag ** is only used to set not-updatable data with ``noupdate=1``. If there is only not-updatable data in the file, the ``noupdate=1`` can be set on the ```` tag and do not set a ```` tag." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:275 +msgid "Odoo supports custom tags acting as syntactic sugar:" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:277 +msgid "menuitem: use it as a shortcut to declare a ``ir.ui.menu``" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:278 +msgid "template: use it to declare a QWeb View requiring only the ``arch`` section of the view." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:279 +msgid "report: use to declare a :ref:`report action `" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:280 +msgid "act_window: use it if the record notation can't do what you want" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:282 +msgid "The 4 first tags are preferred over the *record* notation." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:286 +msgid "XML IDs and naming" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:289 +msgid "Security, View and Action" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:291 +msgid "Use the following pattern :" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:293 +msgid "For a menu: :samp:`{}_menu`, or :samp:`{}_menu_{do_stuff}` for submenus." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:294 +msgid "For a view: :samp:`{}_view_{}`, where *view_type* is ``kanban``, ``form``, ``tree``, ``search``, ..." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:296 +msgid "For an action: the main action respects :samp:`{}_action`. Others are suffixed with :samp:`_{}`, where *detail* is a lowercase string briefly explaining the action. This is used only if multiple actions are declared for the model." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:300 +msgid "For window actions: suffix the action name by the specific view information like :samp:`{}_action_view_{}`." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:302 +msgid "For a group: :samp:`{}_group_{}` where *group_name* is the name of the group, generally 'user', 'manager', ..." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:304 +msgid "For a rule: :samp:`{}_rule_{}` where *concerned_group* is the short name of the concerned group ('user' for the 'model_name_group_user', 'public' for public user, 'company' for multi-company rules, ...)." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:309 +msgid "Name should be identical to xml id with dots replacing underscores. Actions should have a real naming as it is used as display name." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:363 +msgid "Inheriting XML" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:365 +msgid "Xml Ids of inheriting views should use the same ID as the original record. It helps finding all inheritance at a glance. As final Xml Ids are prefixed by the module that creates them there is no overlap." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:369 +msgid "Naming should contain an ``.inherit.{details}`` suffix to ease understanding the override purpose when looking at its name." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:380 +msgid "New primary views do not require the inherit suffix as those are new records based upon the first one." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:395 +#: ../../content/contributing/documentation.rst:204 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:861 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:863 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:879 +msgid "Python" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:399 +msgid "Do not forget to read the :ref:`Security Pitfalls ` section as well to write secure code." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:403 +msgid "PEP8 options" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:405 +msgid "Using a linter can help show syntax and semantic warnings or errors. Odoo source code tries to respect Python standard, but some of them can be ignored." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:408 +msgid "E501: line too long" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:409 +msgid "E301: expected 1 blank line, found 0" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:410 +msgid "E302: expected 2 blank lines, found 1" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:413 +msgid "Imports" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:414 +msgid "The imports are ordered as" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:416 +msgid "External libraries (one per line sorted and split in python stdlib)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:417 +msgid "Imports of ``odoo``" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:418 +msgid "Imports from Odoo modules (rarely, and only if necessary)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:420 +msgid "Inside these 3 groups, the imported lines are alphabetically sorted." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:438 +msgid "Idiomatics of Programming (Python)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:440 +msgid "Always favor *readability* over *conciseness* or using the language features or idioms." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:441 +msgid "Don't use ``.clone()``" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:452 +msgid "Python dictionary : creation and update" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:477 +msgid "Use meaningful variable/class/method names" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:478 +msgid "Useless variable : Temporary variables can make the code clearer by giving names to objects, but that doesn't mean you should create temporary variables all the time:" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:490 +msgid "Multiple return points are OK, when they're simpler" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:510 +msgid "Know your builtins : You should at least have a basic understanding of all the Python builtins (http://docs.python.org/library/functions.html)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:518 +msgid "Also, ``if 'key' in my_dict`` and ``if my_dict.get('key')`` have very different meaning, be sure that you're using the right one." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:521 +msgid "Learn list comprehensions : Use list comprehension, dict comprehension, and basic manipulation using ``map``, ``filter``, ``sum``, ... They make the code easier to read." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:534 +msgid "Collections are booleans too : In python, many objects have \"boolean-ish\" value when evaluated in a boolean context (such as an if). Among these are collections (lists, dicts, sets, ...) which are \"falsy\" when empty and \"truthy\" when containing items:" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:545 +msgid "So, you can write ``if some_collection:`` instead of ``if len(some_collection):``." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:548 +msgid "Iterate on iterables" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:562 +msgid "Use dict.setdefault" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:578 +msgid "As a good developer, document your code (docstring on methods, simple comments for tricky part of code)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:580 +msgid "In additions to these guidelines, you may also find the following link interesting: http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html (a little bit outdated, but quite relevant)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:585 +msgid "Programming in Odoo" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:587 +msgid "Avoid to create generators and decorators: only use the ones provided by the Odoo API." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:589 +msgid "As in python, use ``filtered``, ``mapped``, ``sorted``, ... methods to ease code reading and performance." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:594 +msgid "Make your method work in batch" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:595 +msgid "When adding a function, make sure it can process multiple records by iterating on self to treat each record." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:604 +msgid "For performance issue, when developing a 'stat button' (for instance), do not perform a ``search`` or a ``search_count`` in a loop. It is recommended to use ``read_group`` method, to compute all value in only one request." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:619 +msgid "Propagate the context" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:620 +msgid "The context is a ``frozendict`` that cannot be modified. To call a method with a different context, the ``with_context`` method should be used :" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:629 +msgid "Passing parameter in context can have dangerous side-effects." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:631 +msgid "Since the values are propagated automatically, some unexpected behavior may appear. Calling ``create()`` method of a model with *default_my_field* key in context will set the default value of *my_field* for the concerned model. But if during this creation, other objects (such as sale.order.line, on sale.order creation) having a field name *my_field* are created, their default value will be set too." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:637 +msgid "If you need to create a key context influencing the behavior of some object, choice a good name, and eventually prefix it by the name of the module to isolate its impact. A good example are the keys of ``mail`` module : *mail_create_nosubscribe*, *mail_notrack*, *mail_notify_user_signature*, ..." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:644 +msgid "Think extendable" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:646 +msgid "Functions and methods should not contain too much logic: having a lot of small and simple methods is more advisable than having few large and complex methods. A good rule of thumb is to split a method as soon as it has more than one responsibility (see http://en.wikipedia.org/wiki/Single_responsibility_principle)." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:651 +msgid "Hardcoding a business logic in a method should be avoided as it prevents to be easily extended by a submodule." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:677 +msgid "The above code is over extendable for the sake of example but the readability must be taken into account and a tradeoff must be made." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:680 +msgid "Also, name your functions accordingly: small and properly named functions are the starting point of readable/maintainable code and tighter documentation." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:683 +msgid "This recommendation is also relevant for classes, files, modules and packages. (See also http://en.wikipedia.org/wiki/Cyclomatic_complexity)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:688 +msgid "Never commit the transaction" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:689 +msgid "The Odoo framework is in charge of providing the transactional context for all RPC calls. The principle is that a new database cursor is opened at the beginning of each RPC call, and committed when the call has returned, just before transmitting the answer to the RPC client, approximately like this:" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:710 +msgid "If any error occurs during the execution of the RPC call, the transaction is rolled back atomically, preserving the state of the system." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:713 +msgid "Similarly, the system also provides a dedicated transaction during the execution of tests suites, so it can be rolled back or not depending on the server startup options." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:717 +msgid "The consequence is that if you manually call ``cr.commit()`` anywhere there is a very high chance that you will break the system in various ways, because you will cause partial commits, and thus partial and unclean rollbacks, causing among others:" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:722 +msgid "inconsistent business data, usually data loss" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:723 +msgid "workflow desynchronization, documents stuck permanently" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:724 +msgid "tests that can't be rolled back cleanly, and will start polluting the database, and triggering error (this is true even if no error occurs during the transaction)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:735 +msgid "Here is the very simple rule:" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:729 +msgid "You should **NEVER** call ``cr.commit()`` yourself, **UNLESS** you have created your own database cursor explicitly! And the situations where you need to do that are exceptional!" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:733 +msgid "And by the way if you did create your own cursor, then you need to handle error cases and proper rollback, as well as properly close the cursor when you're done with it." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:737 +msgid "And contrary to popular belief, you do not even need to call ``cr.commit()`` in the following situations: - in the ``_auto_init()`` method of an *models.Model* object: this is taken care of by the addons initialization method, or by the ORM transaction when creating custom models - in reports: the ``commit()`` is handled by the framework too, so you can update the database even from within a report - within *models.Transient* methods: these methods are called exactly like regular *models.Model* ones, within a transaction and with the corresponding ``cr.commit()/rollback()`` at the end - etc. (see general rule above if you have in doubt!)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:749 +msgid "All ``cr.commit()`` calls outside of the server framework from now on must have an **explicit comment** explaining why they are absolutely necessary, why they are indeed correct, and why they do not break the transactions. Otherwise they can and will be removed !" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:756 +msgid "Use translation method correctly" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:758 +msgid "Odoo uses a GetText-like method named \"underscore\" ``_( )`` to indicate that a static string used in the code needs to be translated at runtime using the language of the context. This pseudo-method is accessed within your code by importing as follows:" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:767 +msgid "A few very important rules must be followed when using it, in order for it to work and to avoid filling the translations with useless junk." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:770 +msgid "Basically, this method should only be used for static strings written manually in the code, it will not work to translate field values, such as Product names, etc. This must be done instead using the translate flag on the corresponding field." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:775 +msgid "The method accepts optional positional or named parameter The rule is very simple: calls to the underscore method should always be in the form ``_('literal string')`` and nothing else:" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:818 +msgid "Also, keep in mind that translators will have to work with the literal values that are passed to the underscore function, so please try to make them easy to understand and keep spurious characters and formatting to a minimum. Translators must be aware that formatting patterns such as ``%s`` or ``%d``, newlines, etc. need to be preserved, but it's important to use these in a sensible and obvious manner:" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:838 +msgid "In general in Odoo, when manipulating strings, prefer ``%`` over ``.format()`` (when only one variable to replace in a string), and prefer ``%(varname)`` instead of position (when multiple variables have to be replaced). This makes the translation easier for the community translators." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:845 +msgid "Symbols and Conventions" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:855 +msgid "Model name (using the dot notation, prefix by the module name) :" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:848 +msgid "When defining an Odoo Model : use singular form of the name (*res.partner* and *sale.order* instead of *res.partnerS* and *saleS.orderS*)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:850 +msgid "When defining an Odoo Transient (wizard) : use ``.`` where *related_base_model* is the base model (defined in *models/*) related to the transient, and *action* is the short name of what the transient do. Avoid the *wizard* word. For instance : ``account.invoice.make``, ``project.task.delegate.batch``, ..." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:854 +msgid "When defining *report* model (SQL views e.i.) : use ``.report.``, based on the Transient convention." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:857 +msgid "Odoo Python Class : use camelcase (Object-oriented style)." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:868 +msgid "Variable name :" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:866 +msgid "use camelcase for model variable" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:867 +msgid "use underscore lowercase notation for common variable." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:868 +msgid "suffix your variable name with *_id* or *_ids* if it contains a record id or list of id. Don't use ``partner_id`` to contain a record of res.partner" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:876 +msgid "``One2Many`` and ``Many2Many`` fields should always have *_ids* as suffix (example: sale_order_line_ids)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:877 +msgid "``Many2One`` fields should have *_id* as suffix (example : partner_id, user_id, ...)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:887 +msgid "Method conventions" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:879 +msgid "Compute Field : the compute method pattern is *_compute_*" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:880 +msgid "Search method : the search method pattern is *_search_*" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:881 +msgid "Default method : the default method pattern is *_default_*" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:882 +msgid "Selection method: the selection method pattern is *_selection_*" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:883 +msgid "Onchange method : the onchange method pattern is *_onchange_*" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:884 +msgid "Constraint method : the constraint method pattern is *_check_*" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:885 +msgid "Action method : an object action method is prefix with *action_*. Since it uses only one record, add ``self.ensure_one()`` at the beginning of the method." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:898 +msgid "In a Model attribute order should be" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:890 +msgid "Private attributes (``_name``, ``_description``, ``_inherit``, ...)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:891 +msgid "Default method and ``_default_get``" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:892 +msgid "Field declarations" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:893 +msgid "Compute, inverse and search methods in the same order as field declaration" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:894 +msgid "Selection method (methods used to return computed values for selection fields)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:895 +msgid "Constrains methods (``@api.constrains``) and onchange methods (``@api.onchange``)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:896 +msgid "CRUD methods (ORM overrides)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:897 +msgid "Action methods" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:898 +msgid "And finally, other business methods." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:954 +msgid "Javascript and CSS" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:957 +msgid "Static files organization" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:959 +msgid "Odoo addons have some conventions on how to structure various files. We explain here in more details how web assets are supposed to be organized." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:962 +msgid "The first thing to know is that the Odoo server will serve (statically) all files located in a *static/* folder, but prefixed with the addon name. So, for example, if a file is located in *addons/web/static/src/js/some_file.js*, then it will be statically available at the url *your-odoo-server.com/web/static/src/js/some_file.js*" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:967 +msgid "The convention is to organize the code according to the following structure:" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:969 +msgid "*static*: all static files in general" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:971 +msgid "*static/lib*: this is the place where js libs should be located, in a sub folder. So, for example, all files from the *jquery* library are in *addons/web/static/lib/jquery*" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:973 +msgid "*static/src*: the generic static source code folder" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:975 +msgid "*static/src/css*: all css files" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:976 +msgid "*static/src/fonts*" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:977 +msgid "*static/src/img*" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:978 +msgid "*static/src/js*" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:980 +msgid "*static/src/js/tours*: end user tour files (tutorials, not tests)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:982 +msgid "*static/src/scss*: scss files" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:983 +msgid "*static/src/xml*: all qweb templates that will be rendered in JS" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:985 +msgid "*static/tests*: this is where we put all test related files." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:987 +msgid "*static/tests/tours*: this is where we put all tour test files (not tutorials)." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:990 +msgid "Javascript coding guidelines" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:992 +msgid "``use strict;`` is recommended for all javascript files" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:993 +msgid "Use a linter (jshint, ...)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:994 +msgid "Never add minified Javascript Libraries" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:995 +msgid "Use camelcase for class declaration" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:997 +msgid "More precise JS guidelines are detailed in the `github wiki `_. You may also have a look at existing API in Javascript by looking Javascript References." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1002 +msgid "CSS coding guidelines" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1004 +msgid "Prefix all your classes with *o_* where *module_name* is the technical name of the module ('sale', 'im_chat', ...) or the main route reserved by the module (for website module mainly, i.e. : 'o_forum' for *website_forum* module). The only exception for this rule is the webclient: it simply uses *o_* prefix." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1009 +msgid "Avoid using *id* tag" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1010 +msgid "Use Bootstrap native classes" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1011 +msgid "Use underscore lowercase notation to name class" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1016 +msgid "Git" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1019 +msgid "Configure your git" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1021 +msgid "Based on ancestral experience and oral tradition, the following things go a long way towards making your commits more helpful:" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1024 +msgid "Be sure to define both the user.email and user.name in your local git config" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1030 +msgid "Be sure to add your full name to your Github profile here. Please feel fancy and add your team, avatar, your favorite quote, and whatnot ;-)" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1034 +msgid "Commit message structure" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1036 +msgid "Commit message has four parts: tag, module, short description and full description. Try to follow the preferred structure for your commit messages" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1059 +msgid "Tag and module name" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1061 +msgid "Tags are used to prefix your commit. They should be one of the following" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1063 +msgid "**[FIX]** for bug fixes: mostly used in stable version but also valid if you are fixing a recent bug in development version;" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1065 +msgid "**[REF]** for refactoring: when a feature is heavily rewritten;" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1066 +msgid "**[ADD]** for adding new modules;" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1067 +msgid "**[REM]** for removing resources: removing dead code, removing views, removing modules, ...;" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1069 +msgid "**[REV]** for reverting commits: if a commit causes issues or is not wanted reverting it is done using this tag;" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1071 +msgid "**[MOV]** for moving files: use git move and do not change content of moved file otherwise Git may loose track and history of the file; also used when moving code from one file to another;" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1074 +msgid "**[REL]** for release commits: new major or minor stable versions;" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1075 +msgid "**[IMP]** for improvements: most of the changes done in development version are incremental improvements not related to another tag;" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1077 +msgid "**[MERGE]** for merge commits: used in forward port of bug fixes but also as main commit for feature involving several separated commits;" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1079 +msgid "**[CLA]** for signing the Odoo Individual Contributor License;" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1080 +msgid "**[I18N]** for changes in translation files;" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1082 +msgid "After tag comes the modified module name. Use the technical name as functional name may change with time. If several modules are modified, list them or use various to tell it is cross-modules. Unless really required or easier avoid modifying code across several modules in the same commit. Understanding module history may become difficult." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1089 +msgid "Commit message header" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1091 +msgid "After tag and module name comes a meaningful commit message header. It should be self explanatory and include the reason behind the change. Do not use single words like \"bugfix\" or \"improvements\". Try to limit the header length to about 50 characters for readability." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1096 +msgid "Commit message header should make a valid sentence once concatenated with ``if applied, this commit will
``. For example ``[IMP] base: prevent to archive users linked to active partners`` is correct as it makes a valid sentence ``if applied, this commit will prevent users to archive...``." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1102 +msgid "Commit message full description" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1104 +msgid "In the message description specify the part of the code impacted by your changes (module name, lib, transversal object, ...) and a description of the changes." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1107 +msgid "First explain WHY you are modifying code. What is important if someone goes back to your commit in about 4 decades (or 3 days) is why you did it. It is the purpose of the change." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1111 +msgid "What you did can be found in the commit itself. If there was some technical choices involved it is a good idea to explain it also in the commit message after the why. For Odoo R&D developers \"PO team asked me to do it\" is not a valid why, by the way." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1115 +msgid "Please avoid commits which simultaneously impact multiple modules. Try to split into different commits where impacted modules are different. It will be helpful if we need to revert changes in a given module separately." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1119 +msgid "Don't hesitate to be a bit verbose. Most people will only see your commit message and judge everything you did in your life just based on those few sentences. No pressure at all." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1123 +msgid "**You spend several hours, days or weeks working on meaningful features. Take some time to calm down and write clear and understandable commit messages.**" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1126 +msgid "If you are an Odoo R&D developer the WHY should be the purpose of the task you are working on. Full specifications make the core of the commit message. **If you are working on a task that lacks purpose and specifications please consider making them clear before continuing.**" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1131 +msgid "Finally here are some examples of correct commit messages :" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1154 +msgid "Use the long description to explain the *why* not the *what*, the *what* can be seen in the diff" +msgstr "" + #: ../../content/contributing/documentation.rst:5 -msgid "Write documentation" +msgid "Documentation" msgstr "" #: ../../content/contributing/documentation.rst:14 -msgid "**First of all, thank you for landing here and helping us improve the user documentation of Odoo!**" -msgstr "" - -#: ../../content/contributing/documentation.rst:16 msgid "This introductory guide will help you acquire the tools and knowledge you need to write documentation, whether you plan to make a minor content change or document an application from scratch." msgstr "" -#: ../../content/contributing/documentation.rst:23 +#: ../../content/contributing/documentation.rst:21 msgid "reStructuredText" msgstr "" -#: ../../content/contributing/documentation.rst:25 +#: ../../content/contributing/documentation.rst:23 msgid "Our documentation is written in **reStructuredText** (RST), a `lightweight markup language `_ consisting of normal text augmented with markup which allows including headings, images, notes, and so on. This might seem a bit abstract but there is no need to worry. :abbr:`RST (reStructuredText)` is not hard to learn, especially if you intend to make only small changes to the content." msgstr "" -#: ../../content/contributing/documentation.rst:31 +#: ../../content/contributing/documentation.rst:29 msgid "If you need to learn about a specific markup, head over to :doc:`our cheat sheet for RST ` which contains all the information that you should ever need for the user documentation of Odoo." msgstr "" -#: ../../content/contributing/documentation.rst:36 +#: ../../content/contributing/documentation.rst:34 msgid "We kindly ask you to observe a set of :doc:`content ` and :doc:`RST ` guidelines as you write documentation. This ensures that you stay consistent with the rest of the documentation and facilitates the approval of your content changes as they are reviewed by a redactor at Odoo." msgstr "" -#: ../../content/contributing/documentation.rst:42 +#: ../../content/contributing/documentation.rst:40 msgid ":doc:`documentation/content_guidelines`" msgstr "" -#: ../../content/contributing/documentation.rst:43 +#: ../../content/contributing/documentation.rst:41 msgid ":doc:`documentation/rst_cheat_sheet`" msgstr "" -#: ../../content/contributing/documentation.rst:44 +#: ../../content/contributing/documentation.rst:42 msgid ":doc:`documentation/rst_guidelines`" msgstr "" -#: ../../content/contributing/documentation.rst:49 +#: ../../content/contributing/documentation.rst:47 msgid "Getting started" msgstr "" -#: ../../content/contributing/documentation.rst:51 +#: ../../content/contributing/documentation.rst:49 msgid "As our documentation is maintained on GitHub, you will need a free GitHub account. Click `here `_ to create one." msgstr "" -#: ../../content/contributing/documentation.rst:54 +#: ../../content/contributing/documentation.rst:52 msgid "Now, depending on whether you want to update existing content, or rather work on new content and make file changes, you have two courses of action:" msgstr "" -#: ../../content/contributing/documentation.rst:57 +#: ../../content/contributing/documentation.rst:55 msgid "**For small changes** in ``.rst`` files only, i.e. addition/edition of paragraphs or typos, **we suggest that you use the GitHub interface**. This is the easiest and fasted way to submit your request for changes for the documentation and is suitable for non-technical people. Read :ref:`contributing/github-interface` to learn how to use this method." msgstr "" -#: ../../content/contributing/documentation.rst:61 +#: ../../content/contributing/documentation.rst:59 msgid "**For more complex cases**, it is necessary to **use Git and work from a local copy of the documentation**. This method seems intimidating but only requires basic knowledge of Git. See :ref:`contributing/canonical-git-workflow` for more information on this method." msgstr "" -#: ../../content/contributing/documentation.rst:68 +#: ../../content/contributing/documentation.rst:66 msgid "Use the GitHub interface" msgstr "" -#: ../../content/contributing/documentation.rst:70 +#: ../../content/contributing/documentation.rst:68 msgid "Verify that you are browsing the documentation in the version that you intend to change. The version can be selected from the dropdown in the top menu." msgstr "" -#: ../../content/contributing/documentation.rst:73 +#: ../../content/contributing/documentation.rst:71 msgid "Head over to the page that you want to change and click on the **Edit on GitHub** button in the top right corner of the page." msgstr "" -#: ../../content/contributing/documentation.rst:76 +#: ../../content/contributing/documentation.rst:74 msgid "If you do not have edit rights on the repository (`odoo/documentation `_), you need to fork it by clicking on the appropriate button. In other terms, you create a copy of the entire repository on your own account. If you do have the edit rights, skip this step." msgstr "" -#: ../../content/contributing/documentation.rst:83 +#: ../../content/contributing/documentation.rst:81 msgid "Make the appropriate changes while taking care of following the :doc:`content ` and :doc:`RST ` guidelines." msgstr "" -#: ../../content/contributing/documentation.rst:86 +#: ../../content/contributing/documentation.rst:84 msgid "Click on the **Preview changes** button to review your contribution in a more human-readable format. Be aware that the preview is not able to handle all markups correctly. Notes and tips, for instance, are not correctly rendered. The version of your content published to the website will be, however." msgstr "" -#: ../../content/contributing/documentation.rst:91 +#: ../../content/contributing/documentation.rst:89 msgid "Go to the bottom of the page to create a commit (:dfn:`what packs your changes together and labels them with a commit message`) of your changes." msgstr "" @@ -116,259 +1008,256 @@ msgstr "" msgid "In the second text box, justify *why* you made these changes, if you feel that it is not obvious." msgstr "" -#: ../../content/contributing/documentation.rst:98 +#: ../../content/contributing/documentation.rst:96 msgid "Select the option \"Create a new branch for this commit and start a pull request.\" if you have the choice (if you have partial or full edit writes on the repository). If not, skip this step." msgstr "" -#: ../../content/contributing/documentation.rst:101 +#: ../../content/contributing/documentation.rst:99 msgid "Click on the green button. It is either labelled \"Commit changes\" or \"Propose file change\"." msgstr "" -#: ../../content/contributing/documentation.rst:105 +#: ../../content/contributing/documentation.rst:103 msgid "In the dropdown for the selection of the base branch (i.e., the version of the documentation that your changes concern), make sure to select the same version as in the first step of this guide and click on the **Create pull request** button." msgstr "" -#: ../../content/contributing/documentation.rst:111 +#: ../../content/contributing/documentation.rst:109 msgid "Double-check your :abbr:`PR (Pull Request)` and, when ready, click again on the **Create pull request** button to submit your changes for review by a content writer at Odoo." msgstr "" -#: ../../content/contributing/documentation.rst:116 -#: ../../content/contributing/documentation.rst:395 +#: ../../content/contributing/documentation.rst:114 +#: ../../content/contributing/documentation.rst:396 msgid "You're done! If your changes are approved straight away they will appear in the documentation the very next day. It may also be the case that the reviewer has a question or a remark, so make sure to check your notifications or your emails, depending on your account settings." msgstr "" -#: ../../content/contributing/documentation.rst:123 +#: ../../content/contributing/documentation.rst:121 msgid "Use the canonical Git workflow" msgstr "" -#: ../../content/contributing/documentation.rst:128 +#: ../../content/contributing/documentation.rst:126 msgid "Prepare your machine" msgstr "" -#: ../../content/contributing/documentation.rst:133 +#: ../../content/contributing/documentation.rst:131 msgid "Install Git" msgstr "" -#: ../../content/contributing/documentation.rst:135 +#: ../../content/contributing/documentation.rst:133 msgid "We use `Git `_ to manage the files of the user documentation. It is a tool that allows to track the history of changes made to a file and, more importantly, to work on different versions of those files at the same time. It means that you do not need to worry about overwriting someone else’s pending work when you start editing the documentation." msgstr "" -#: ../../content/contributing/documentation.rst:140 +#: ../../content/contributing/documentation.rst:138 msgid "You must then configure Git to identify yourself as the author of your future contribution. Enter the same email address as the one you used to register on GitHub." msgstr "" -#: ../../content/contributing/documentation.rst:143 +#: ../../content/contributing/documentation.rst:141 msgid "Download and install **Git** on your machine." msgstr "" -#: ../../content/contributing/documentation.rst:144 +#: ../../content/contributing/documentation.rst:142 msgid "Verify that `the installation folder of Git is included in your system's PATH variable `_." msgstr "" -#: ../../content/contributing/documentation.rst:146 -#: ../../content/contributing/documentation.rst:171 -#: ../../content/contributing/documentation.rst:319 -#: ../../content/contributing/documentation.rst:336 -#: ../../content/contributing/documentation.rst:367 +#: ../../content/contributing/documentation.rst:144 +#: ../../content/contributing/documentation.rst:169 +#: ../../content/contributing/documentation.rst:317 +#: ../../content/contributing/documentation.rst:337 +#: ../../content/contributing/documentation.rst:368 msgid "Execute the following commands in a terminal:" msgstr "" -#: ../../content/contributing/documentation.rst:156 +#: ../../content/contributing/documentation.rst:154 msgid "Fetch the sources" msgstr "" -#: ../../content/contributing/documentation.rst:158 +#: ../../content/contributing/documentation.rst:156 msgid "As stated earlier, our documentation (in all its versions) is maintained on GitHub at `github.com/odoo/documentation `_. A modification is made by the mean of a :abbr:`PR (Pull Request)` (:dfn:`proposal of content changes`) to allow for a review of the changes before updating the sources of the documentation." msgstr "" -#: ../../content/contributing/documentation.rst:163 +#: ../../content/contributing/documentation.rst:161 msgid "Prior to submitting a modification, you need to make a copy of the sources and download that copy on your machine." msgstr "" -#: ../../content/contributing/documentation.rst:166 +#: ../../content/contributing/documentation.rst:164 msgid "Go to `github.com/odoo/documentation `_ and click on the **Fork** button in the top right corner." msgstr "" -#: ../../content/contributing/documentation.rst:179 +#: ../../content/contributing/documentation.rst:177 msgid "If you do not have edit rights on the repository owned by Odoo, replace \"odoo\" with your Github username in the URL of the command above. If you do have edit rights, it is not necessary to fork the repository." msgstr "" -#: ../../content/contributing/documentation.rst:183 +#: ../../content/contributing/documentation.rst:181 msgid "In order to ease the collaboration between writers coming from many different systems and teams, execute the following group of commands that correspond to your :abbr:`OS (Operating System)` in a terminal." msgstr "" -#: ../../content/contributing/documentation.rst:187 +#: ../../content/contributing/documentation.rst:185 msgid "Windows:" msgstr "" -#: ../../content/contributing/documentation.rst:195 +#: ../../content/contributing/documentation.rst:193 msgid "Linux or Mac OS:" msgstr "" #: ../../content/contributing/documentation.rst:206 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:742 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:744 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:760 -msgid "Python" -msgstr "" - -#: ../../content/contributing/documentation.rst:208 msgid "Because the documentation is written in :abbr:`RST (reStructuredText)`, it needs to be built (:dfn:`converted to HTML`) in order to display nicely. This is done by the documentation generator which takes the original :abbr:`RST (reStructuredText)` files as input, transforms the markups in a human-readable format, and outputs HTML files to be read in your web browser." msgstr "" -#: ../../content/contributing/documentation.rst:213 +#: ../../content/contributing/documentation.rst:211 msgid "The documentation generator that we use is called `Sphinx `_. and is written in `Python `_. You have to install Python in order to use Sphinx. For the record, Sphinx is the program and Python the programming language, but you do not need to know much more about them so don't panic!" msgstr "" -#: ../../content/contributing/documentation.rst:218 +#: ../../content/contributing/documentation.rst:216 msgid "Python comes with its own package manager: `pip `_. It allows installing Python dependencies in a single command." msgstr "" -#: ../../content/contributing/documentation.rst:222 +#: ../../content/contributing/documentation.rst:220 msgid "Download and install the recommended release (`see README file `_) of **Python 3** on your machine." msgstr "" -#: ../../content/contributing/documentation.rst:224 +#: ../../content/contributing/documentation.rst:222 msgid "Make sure to have **pip** installed on your machine (on Windows, you can install pip alongside Python)." msgstr "" -#: ../../content/contributing/documentation.rst:226 +#: ../../content/contributing/documentation.rst:224 msgid "Execute the following commands in a terminal to verify that both installations finished successfully:" msgstr "" -#: ../../content/contributing/documentation.rst:234 +#: ../../content/contributing/documentation.rst:232 msgid "Execute the following commands in a terminal to install the Python dependencies of the documentation:" msgstr "" -#: ../../content/contributing/documentation.rst:243 +#: ../../content/contributing/documentation.rst:241 msgid "Depending on your :abbr:`OS (Operating System)`, you may need to run the commands ``python`` and ``pip`` instead of ``python3`` and ``pip3``" msgstr "" -#: ../../content/contributing/documentation.rst:249 +#: ../../content/contributing/documentation.rst:247 msgid "Make" msgstr "" -#: ../../content/contributing/documentation.rst:251 +#: ../../content/contributing/documentation.rst:249 msgid "`Make `_ is a tool that packs a bunch of command-lines into one to be easier to remember and to type. In our case, it is used to execute complex Sphinx build commands by using a single and simpler one instead." msgstr "" -#: ../../content/contributing/documentation.rst:255 +#: ../../content/contributing/documentation.rst:253 msgid "Download and install **Make** on your machine." msgstr "" -#: ../../content/contributing/documentation.rst:256 +#: ../../content/contributing/documentation.rst:254 msgid "Verify that `the installation folder of Make is included in your system's PATH variable `_." msgstr "" -#: ../../content/contributing/documentation.rst:262 +#: ../../content/contributing/documentation.rst:260 msgid "pngquant" msgstr "" -#: ../../content/contributing/documentation.rst:264 +#: ../../content/contributing/documentation.rst:262 msgid "`pngquant `_ is a tool that we use to compress PNG images so that the documentation does not end up weighting several Gigabytes in a few year span." msgstr "" -#: ../../content/contributing/documentation.rst:267 +#: ../../content/contributing/documentation.rst:265 msgid "Download and install **pngquant** on your machine." msgstr "" -#: ../../content/contributing/documentation.rst:268 +#: ../../content/contributing/documentation.rst:266 msgid "Verify that `the installation folder of pngquant is included in your system's PATH variable `_." msgstr "" -#: ../../content/contributing/documentation.rst:274 +#: ../../content/contributing/documentation.rst:272 msgid "Prepare your version" msgstr "" -#: ../../content/contributing/documentation.rst:276 +#: ../../content/contributing/documentation.rst:274 msgid "Now that your machine is all set up, it is time to do the same for your version of the documentation files. As it would not be convenient to have several people working on the version 13.0 in parallel (conflicts of content would occur all the time), and in order to be able to create a :abbr:`PR (Pull Request)`, you must `create a new branch `_ starting from the branch 13.0. In other words, you copy the entirety of this version’s files and give it another name. For this example, we will go with ``13.0-my_contribution``." msgstr "" -#: ../../content/contributing/documentation.rst:284 +#: ../../content/contributing/documentation.rst:282 msgid "Execute the following commands in a terminal to..." msgstr "" -#: ../../content/contributing/documentation.rst:286 +#: ../../content/contributing/documentation.rst:284 msgid "Navigate to the documentation folder:" msgstr "" -#: ../../content/contributing/documentation.rst:292 +#: ../../content/contributing/documentation.rst:290 msgid "Switch to the version 13.0:" msgstr "" -#: ../../content/contributing/documentation.rst:298 +#: ../../content/contributing/documentation.rst:296 msgid "Create your own branch which will be a copy of 13.0:" msgstr "" -#: ../../content/contributing/documentation.rst:307 +#: ../../content/contributing/documentation.rst:305 msgid "Perform your changes" msgstr "" -#: ../../content/contributing/documentation.rst:309 +#: ../../content/contributing/documentation.rst:307 msgid "You can now perform any change you want to the documentation files. These changes must be compliant with :abbr:`RST (reStructuredText)` syntax (see :doc:`documentation/rst_cheat_sheet`) and with our :doc:`content ` and :doc:`RST ` guidelines." msgstr "" -#: ../../content/contributing/documentation.rst:315 -msgid "If your changes include the addition of a new image, for instance :file:`my_image.png`, proceed as follows:" +#: ../../content/contributing/documentation.rst:313 +msgid "If your changes include the addition of a new image, for instance :file:`my-image.png`, proceed as follows:" msgstr "" -#: ../../content/contributing/documentation.rst:318 +#: ../../content/contributing/documentation.rst:316 msgid "Make sure that the image is in ``.png`` format." msgstr "" +#: ../../content/contributing/documentation.rst:324 +msgid "Delete :file:`my-image.png`." +msgstr "" + +#: ../../content/contributing/documentation.rst:325 +msgid "Rename :file:`my-image-fs8.png` to :file:`my-image.png`." +msgstr "" + #: ../../content/contributing/documentation.rst:326 -msgid "Delete :file:`my_image.png`." +msgid "If your changes include renaming or moving an RST file to a new location, follow the `manual for redirect rules `_ to create the appropriate redirect rule(s)." msgstr "" -#: ../../content/contributing/documentation.rst:327 -msgid "Rename :file:`my_image-fs8.png` to :file:`my_image.png`." -msgstr "" - -#: ../../content/contributing/documentation.rst:332 +#: ../../content/contributing/documentation.rst:333 msgid "Preview your changes" msgstr "" -#: ../../content/contributing/documentation.rst:334 +#: ../../content/contributing/documentation.rst:335 msgid "To preview your changes in a generated documentation, proceed as follows:" msgstr "" -#: ../../content/contributing/documentation.rst:345 +#: ../../content/contributing/documentation.rst:346 msgid "You can omit the :command:`make clean` command when no recent change has been made to the hierarchy of documentation files." msgstr "" -#: ../../content/contributing/documentation.rst:348 +#: ../../content/contributing/documentation.rst:349 msgid "Fix any error or warning shown in the logs of the build." msgstr "" -#: ../../content/contributing/documentation.rst:349 +#: ../../content/contributing/documentation.rst:350 msgid "Open the file :file:`documentation/_build/html/index.html` with your default web browser." msgstr "" -#: ../../content/contributing/documentation.rst:352 +#: ../../content/contributing/documentation.rst:353 msgid "These steps have for only purpose to show you the final results of your changes. They have no impact on the documentation source files." msgstr "" -#: ../../content/contributing/documentation.rst:358 +#: ../../content/contributing/documentation.rst:359 msgid "Submit your changes" msgstr "" -#: ../../content/contributing/documentation.rst:361 +#: ../../content/contributing/documentation.rst:362 msgid "We expect you to have basic knowledge of Git, which should be enough to cover the basic flow of a one-time contribution. If you plan on submitting several contributions, work on older versions of the documentation or perform any other advanced action, we recommend you to be confident with Git. Help yourself with `this manual of Git `_ and `this interactive tutorial `_." msgstr "" -#: ../../content/contributing/documentation.rst:375 +#: ../../content/contributing/documentation.rst:376 msgid "Go to `github.com/odoo/documentation/pulls `_ and click on the **New pull request** button." msgstr "" -#: ../../content/contributing/documentation.rst:380 +#: ../../content/contributing/documentation.rst:381 msgid "If you forked the base repository in the section :ref:`contributing/fetch-sources`, click on the link **compare across forks** If not, skip this step." msgstr "" -#: ../../content/contributing/documentation.rst:385 +#: ../../content/contributing/documentation.rst:386 msgid "In the dropdown for the selection of the base branch (i.e., the version of the documentation that your changes concern), make sure to select the version that your changes target (here **13.0**)." msgstr "" -#: ../../content/contributing/documentation.rst:390 +#: ../../content/contributing/documentation.rst:391 msgid "Double-check your :abbr:`PR (Pull Request)` and, when ready, click again on the **Create pull request** button to submit your changes for review by a redactor at Odoo." msgstr "" @@ -468,131 +1357,95 @@ msgstr "" msgid "**Be concise.**" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:75 -msgid "**Avoid sentences**, questions, and titles starting with \"how to.\"" -msgstr "" - #: ../../content/contributing/documentation/content_guidelines.rst:76 -msgid "**Don't use pronouns** in your titles, especially 2nd person (*your*)" +msgid "**Avoid sentences**, unnecessary verbs, questions, and titles starting with \"how to.\"" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:77 -msgid "Use **sentence case**. This means you capitalize only:" +#: ../../content/contributing/documentation/content_guidelines.rst:78 +msgid "**Don't use pronouns** in your titles, especially 2nd person (*your*)." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:79 -msgid "the first word of the title or heading" -msgstr "" - -#: ../../content/contributing/documentation/content_guidelines.rst:80 -msgid "the first word after a colon" +msgid "Use **sentence case**. This means you capitalize only:" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:81 -msgid "proper nouns (brands, product and service names, etc.)" +msgid "the first word of the title or heading" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:82 -msgid "app features, as written in the apps" +msgid "the first word after a colon" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:85 -msgid "Do not capitalize common nouns when they are not referred to as features. This is more likely to happen in headings rather than in titles." +#: ../../content/contributing/documentation/content_guidelines.rst:83 +msgid "proper nouns (brands, product and service names, etc.)" +msgstr "" + +#: ../../content/contributing/documentation/content_guidelines.rst:86 +msgid "Most titles and headings generally refer to a concept and do *not* represent the name of a feature or a model." +msgstr "" + +#: ../../content/contributing/documentation/content_guidelines.rst:88 +msgid "Do not capitalize the words of an acronym if they don't entail a proper noun." msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:89 -msgid "Examples" +msgid "Verbs in headings are fine since they often describe an action." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:89 -msgid "Explanations" +#: ../../content/contributing/documentation/content_guidelines.rst:92 +msgid "**Titles** (H1)" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:0 -msgid "**Titles**" -msgstr "" - -#: ../../content/contributing/documentation/content_guidelines.rst:0 -msgid "(H1)" -msgstr "" - -#: ../../content/contributing/documentation/content_guidelines.rst:91 -msgid "*Quotation Templates*" -msgstr "" - -#: ../../content/contributing/documentation/content_guidelines.rst:91 -msgid "\"Quotation Templates\" is a feature in Odoo." -msgstr "" - -#: ../../content/contributing/documentation/content_guidelines.rst:93 -msgid "*Lead Mining*" -msgstr "" - -#: ../../content/contributing/documentation/content_guidelines.rst:93 -msgid "\"Lead Mining\" is a feature in Odoo." +#: ../../content/contributing/documentation/content_guidelines.rst:94 +msgid "Quotation templates" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:95 -msgid "*Resupply from another Warehouse*" +msgid "Lead mining" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:95 -msgid "\"Warehouse\" is capitalized as we refer to the feature in the app rather than to a real warehouse." +#: ../../content/contributing/documentation/content_guidelines.rst:96 +msgid "Resupply from another warehouse" +msgstr "" + +#: ../../content/contributing/documentation/content_guidelines.rst:97 +msgid "Synchronize Google Calendar with Odoo" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:98 -msgid "*Synchronize Google Calendar with Odoo*" +msgid "Batch payments: SEPA Direct Debit (SDD)" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:98 -msgid "\"Google Calendar\" is a product and \"Odoo\" is a brand." -msgstr "" - -#: ../../content/contributing/documentation/content_guidelines.rst:0 -msgid "**Headings**" -msgstr "" - -#: ../../content/contributing/documentation/content_guidelines.rst:0 -msgid "(H2, H3, etc.)" +#: ../../content/contributing/documentation/content_guidelines.rst:99 +msgid "Digitize vendor bills with optical character recognition (OCR)" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:101 -msgid "*Confirm the quotation*" +msgid "**Headings** (H2, H3)" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:101 -msgid "\"The quotation\" is a common noun not referring to a feature in Odoo." +#: ../../content/contributing/documentation/content_guidelines.rst:103 +msgid "Project stages" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:104 -msgid "*Test environment*" +msgid "Email alias" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:104 -msgid "\"Environment\" is a common noun." +#: ../../content/contributing/documentation/content_guidelines.rst:105 +msgid "Confirm the quotation" msgstr "" #: ../../content/contributing/documentation/content_guidelines.rst:106 -msgid "*Add a new Payment Acquirer*" +msgid "Generate SEPA Direct Debit XML files to submit payments" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:106 -msgid "\"Payment Acquirers\" is a feature in Odoo." -msgstr "" - -#: ../../content/contributing/documentation/content_guidelines.rst:108 -msgid "*Generate SEPA Direct Debit XML files to submit payments*" -msgstr "" - -#: ../../content/contributing/documentation/content_guidelines.rst:108 -msgid "\"SEPA Direct Debit\" and \"XML\" are considered as proper nouns." -msgstr "" - -#: ../../content/contributing/documentation/content_guidelines.rst:115 +#: ../../content/contributing/documentation/content_guidelines.rst:111 msgid "Document structure" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:117 +#: ../../content/contributing/documentation/content_guidelines.rst:113 msgid "Use different **heading levels** to organize your text by sections and sub-sections. Your headings are not only displayed in the document but also on the navigation menu (only the H1) and on the \"On this page\" sidebar (all H2 to H6)." msgstr "" @@ -604,11 +1457,11 @@ msgstr "" msgid "Your *page title* gives your reader a quick and clear understanding of what your content is about." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:126 +#: ../../content/contributing/documentation/content_guidelines.rst:122 msgid "The *content* in this section describes the upcoming content from a **business point of view**, and shouldn't put the emphasis on Odoo, as this is documentation and not marketing." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:130 +#: ../../content/contributing/documentation/content_guidelines.rst:126 msgid "Start first with a **lead paragraph**, which helps the reader make sure that they've found the right page, then explain the **business aspects of this topic** in the following paragraphs." msgstr "" @@ -644,755 +1497,878 @@ msgstr "" msgid "Subsections are perfect for assessing very specific points. The title can be in the form of a question, if appropriate." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:151 +#: ../../content/contributing/documentation/content_guidelines.rst:147 msgid "**H2: Next Section**" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:155 +#: ../../content/contributing/documentation/content_guidelines.rst:151 msgid ":ref:`RST cheat sheet: headings `" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:156 -msgid ":ref:`RST cheat sheet: specialized directives `" +#: ../../content/contributing/documentation/content_guidelines.rst:152 +msgid ":ref:`RST cheat sheet: markups `" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:161 +#: ../../content/contributing/documentation/content_guidelines.rst:157 msgid "Organizing the documentation" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:163 +#: ../../content/contributing/documentation/content_guidelines.rst:159 msgid "When writing documentation about a given topic, try to keep pages within the same folder organized." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:165 +#: ../../content/contributing/documentation/content_guidelines.rst:161 msgid "For most topics, a single page should do the job. Place it in the appropriate section of the documentation (e.g., content related to the CRM app go under :menuselection:`Applications -> Sales -> CRM`) and follow the :ref:`document structure ` guidelines." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:170 +#: ../../content/contributing/documentation/content_guidelines.rst:166 msgid "For more complex topics, you may need several pages to cover all their aspects. Usually, you will find yourself adding documentation to a topic that is already partially covered. In that case, either create a new page and place it at the same level as other related pages or add new sections to an existing page. If you are documenting a complex topic from scratch, organize your content between one parent page (the :abbr:`TOC (Tree Of Contents)` page) and several child pages. Whenever possible, write content on the parent page and not only on the child pages. Make the parent page accessible from the navigation menu by using the :ref:`show-content ` metadata directive." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:182 +#: ../../content/contributing/documentation/content_guidelines.rst:178 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:440 msgid "Images" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:184 +#: ../../content/contributing/documentation/content_guidelines.rst:180 msgid "Adding a few images to illustrate your text helps the readers to understand and memorize your content. However, avoid adding too many images: it isn't necessary to illustrate all steps and features, and it may overload your page." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:189 +#: ../../content/contributing/documentation/content_guidelines.rst:185 msgid "Don't forget to :ref:`compress your PNG files with pngquant `." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:194 +#: ../../content/contributing/documentation/content_guidelines.rst:190 msgid "Screenshots" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:196 +#: ../../content/contributing/documentation/content_guidelines.rst:192 msgid "Screenshots are automatically resized to fit the content block's width. This implies that screenshots can't be too wide, else they would appear very small on-screen. Therefore, we recommend to avoid to take screenshots of a full screen display of the app, unless it is relevant to do so." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:200 +#: ../../content/contributing/documentation/content_guidelines.rst:196 msgid "A few tips to improve your screenshots:" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:202 +#: ../../content/contributing/documentation/content_guidelines.rst:198 msgid "**Zoom** in your browser. We recommend a 110% zoom for better results." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:203 +#: ../../content/contributing/documentation/content_guidelines.rst:199 msgid "**Resize** your browser's width, either by *resizing the window* itself or by opening the *browser's developer tools* (press the ``F12`` key) and resizing the width." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:205 +#: ../../content/contributing/documentation/content_guidelines.rst:201 msgid "**Select** the relevant area, rather than keeping the full window." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:206 +#: ../../content/contributing/documentation/content_guidelines.rst:202 msgid "If necessary, you can **edit** the screenshot to remove unnecessary fields and to narrow even more Odoo's display." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:214 +#: ../../content/contributing/documentation/content_guidelines.rst:210 msgid "Resizing the window's width is the most important step to do as Odoo's responsive design automatically resizes all fields to match the window's width." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:220 +#: ../../content/contributing/documentation/content_guidelines.rst:216 msgid "Media files" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:222 +#: ../../content/contributing/documentation/content_guidelines.rst:218 msgid "A **media filename**:" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:224 +#: ../../content/contributing/documentation/content_guidelines.rst:220 msgid "is written in **lower-case letters**" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:225 +#: ../../content/contributing/documentation/content_guidelines.rst:221 msgid "is **relevant** to the media's content. (E.g., :file:`screenshot-tips.gif`.)" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:226 +#: ../../content/contributing/documentation/content_guidelines.rst:222 msgid "separates its words with a **hyphen** ``-`` (E.g., :file:`awesome-filename.png`.)" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:228 +#: ../../content/contributing/documentation/content_guidelines.rst:224 msgid "Each document has its own folder in which the media files are located. The folder's name must be the same as the document's filename." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:231 +#: ../../content/contributing/documentation/content_guidelines.rst:227 msgid "For example, the document :file:`doc_filename.rst` refers to two images that are placed in the folder ``doc_filename``." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:243 +#: ../../content/contributing/documentation/content_guidelines.rst:239 msgid "Previously, image filenames would mostly be named with numbers (e.g., :file:`feature01.png`) and placed in a single ``media`` folder. While it is advised not to name your *new* images in that fashion, it is also essential **not to rename unchanged files**, as doing this would double the weight of renamed image files on the repository. They will eventually all be replaced as the content referencing those images is updated." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:252 +#: ../../content/contributing/documentation/content_guidelines.rst:248 msgid "ALT tags" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:254 +#: ../../content/contributing/documentation/content_guidelines.rst:250 msgid "An **ALT tag** is a *text alternative* to an image. This text is displayed if the browser fails to render the image. It is also helpful for users who are visually impaired. Finally, it helps search engines, such as Google, to understand what the image is about and index it correctly, which improves the :abbr:`SEO (Search Engine Optimization)` significantly." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:259 +#: ../../content/contributing/documentation/content_guidelines.rst:255 msgid "Good ALT tags are:" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:261 +#: ../../content/contributing/documentation/content_guidelines.rst:257 msgid "**Short** (one line maximum)" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:262 +#: ../../content/contributing/documentation/content_guidelines.rst:258 msgid "**Not a repetition** of a previous sentence or title" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:263 +#: ../../content/contributing/documentation/content_guidelines.rst:259 msgid "A **good description** of the action happening on the image" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:264 +#: ../../content/contributing/documentation/content_guidelines.rst:260 msgid "Easily **understandable** if read aloud" msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:267 +#: ../../content/contributing/documentation/content_guidelines.rst:263 msgid ":ref:`RST cheat sheet: image directive `" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:3 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:5 msgid "RST cheat sheet" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:8 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:10 msgid "Headings" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:11 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:13 msgid "For each formatting line (e.g., ``===``), write as many symbols (``=``) as there are characters in the header." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:15 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:17 msgid "The symbols used for the formatting are, in fact, not important. Only the order in which they are written matters, as it determines the size of the decorated heading. This means that you may encounter different heading formatting and in a different order, in which case you should follow the formatting in place in the document. In any other case, use the formatting shown below." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:18 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:20 msgid "Heading size" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:18 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:20 msgid "Formatting" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:20 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:22 msgid "H1" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:0 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:0 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:0 -msgid "``=======``" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:0 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:0 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:0 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:0 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:0 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:0 -msgid "``Heading``" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:24 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:28 msgid "H2" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:27 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:33 msgid "H3" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:0 -msgid "``-------``" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:30 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:38 msgid "H4" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:0 -msgid "``~~~~~~~``" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:33 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:43 msgid "H5" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:0 -msgid "``*******``" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:36 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:48 msgid "H6" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:0 -msgid "``^^^^^^^``" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:41 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:55 msgid "Each document must have **exactly one H1 heading**. No less, no more." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:46 -msgid "Markup" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:51 -msgid "Inline markup" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:53 -msgid "Use the following markups to emphasize your text to your liking:" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:56 -msgid "\\*\\*Text\\*\\*" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:56 -msgid "**Text**" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:58 -msgid "\\*Text\\*" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:58 -msgid "*Text*" -msgstr "" - #: ../../content/contributing/documentation/rst_cheat_sheet.rst:60 -msgid "\\`Text\\`" +msgid "Markups" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:60 -msgid "``Text``" +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:65 +msgid "Emphasis (italic)" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:64 -msgid ":ref:`contributing/specialized-directives`" +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:67 +msgid "To emphasize a part of the text. The text is rendered in italic." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:69 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:72 +msgid "Fill out the information *before* saving the form." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:81 +msgid "Strong emphasis (bold)" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:83 +msgid "To emphasize a part of the text. The text is rendered in bold." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:88 +msgid "A **subdomain** is a domain that is a part of another domain." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:97 +msgid "Technical term (literal)" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:99 +msgid "To write a technical term or a specific value to insert. The text is rendered in literal." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:104 +msgid "Insert the IP address of your printer, for example, `192.168.1.25`." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:113 +msgid "Definitions" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:115 +msgid "Use the `dfn` markup to define a term." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:120 +msgid "The documentation is written in RST and needs to be built (:dfn:`converted to HTML`) to display nicely." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:131 +msgid "Abbreviations" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:133 +msgid "Use the `abbr` markup to write a self-defining abbreviation that is displayed as a tooltip." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:138 +msgid "Odoo uses :abbr:`OCR (optical character recognition)` and artificial intelligence technologies to recognize the content of the documents." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:149 +msgid ":abbr:`GUI (Graphical User Interface)` element" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:151 +msgid "Use the `guilabel` markup to identify any text of the interactive user interface (e.g., button labels, view titles, field names, lists items, ...)." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:157 +msgid "Update your credentials, then click on :guilabel:`Save`." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:166 +msgid "Menu selection" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:168 +msgid "Use the `menuselection` markup to guide the user through a sequence of menus." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:173 +msgid "To review your sales performance, go to :menuselection:`Sales --> Reporting --> Dashboard`." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:182 +msgid "File" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:184 +msgid "Use the `file` markup to indicate a file path or name." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:190 +msgid "Create redirections with the :file:`redirects.txt` file at the root of the repository." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:199 +msgid "Command" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:201 +msgid "Use the `command` markup to highlight a command." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:206 +msgid "Run the command :command:`make clean html` to delete existing built files and build the documentation to HTML." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:217 +msgid "Lists" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:222 msgid "Bulleted list" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:85 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:227 +msgid "This is a bulleted list." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:228 +msgid "It has two items, the second item uses two lines." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:240 msgid "Numbered list" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:100 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:245 +msgid "This is a numbered list." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:246 +msgid "Numbering is automatic." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:256 +msgid "Use this format to start the numbering with a number other than one." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:258 +msgid "The numbering is automatic from there." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:267 +msgid "Prefer the use of autonumbered lists with `#.` for better code resilience." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:272 msgid "Nested lists" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:112 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:277 +msgid "This is the first item of a bulleted list." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:279 +msgid "It has a nested numbered list" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:280 +msgid "with two items." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:292 msgid "Hyperlinks" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:117 -msgid "Hyperlink references" +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:297 +msgid "External hyperlinks" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:119 -msgid "Hyperlink references are links to a URL with a custom label. They follow this syntax: ```label `_``" +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:299 +msgid "External hyperlinks are links to a URL with a custom label. They follow this syntax: ```label `_``" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:123 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:303 msgid "The URL can be a relative path to a file within the documentation." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:126 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:147 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:193 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:233 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:264 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:289 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:314 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:304 +msgid "Use the :ref:`documentation pages hyperlinks ` if you target another documentation page." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:310 +msgid "For instance, `this is an external hyperlink to Odoo's website `_." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:319 +msgid "External hyperlink aliases" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:321 +msgid "External hyperlink aliases allow creating shortcuts for external hyperlinks." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:322 +msgid "The definition syntax is as follows: ``.. _target: URL``" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:323 +msgid "There are two ways to reference them, depending on the use case:" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:325 +msgid "``target_`` creates a hyperlink with the target name as label and the URL as reference. Note that the ``_`` moved after the target!" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:327 +msgid "```label `_`` does exactly what you expect: the label replaces the name of the target, and the target is replaced by the URL." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:333 +msgid "A `proof-of-concept `_ is a simplified version, a prototype of what is expected to agree on the main lines of expected changes. `PoC `_ is a common abbreviation." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:347 +msgid "Custom anchors" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:349 +msgid "Custom anchors follow the same syntax as external hyperlink aliases but without any URL. Indeed, they are internal. They allow referencing a specific part of a document by using the target as an anchor. When the user clicks on the reference, the documentation scrolls to the part of the page containing the anchor." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:354 +msgid "The definition syntax is: ``.. _target:``" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:355 +msgid "There are two ways to reference them, both using the ``ref`` markup:" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:357 +msgid "``:ref:`target``` creates a hyperlink to the anchor with the heading defined below as label." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:358 +msgid "``:ref:`label ``` creates a hyperlink to the anchor with the given label." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:360 +msgid "See :ref:`contributing/relative-links` to learn how to write proper relative links for internal references." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:364 +msgid "Custom anchors can be referenced from other files than the ones in which they are defined." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:365 +msgid "Notice that there is no ``_`` at the end, contrary to what is done with :ref:`external hyperlinks `." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:371 +msgid "This can easily be done by creating a new product, see `How to create a product? `_ for additional help." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:374 +msgid "**How to create a product?**" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:376 +msgid "As explained at the `start of the page `_, ..." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:394 +msgid "Documentation pages hyperlinks" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:397 +msgid "The ``doc`` markup allows referencing a documentation page wherever it is in the file tree through a relative file path." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:398 +msgid "As usual, there are two ways to use the markup:" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:401 +msgid "``:doc:`path_to_doc_page``` creates a hyperlink to the documentation page with the title of the page as label." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:403 +msgid "``:doc:`label ``` creates a hyperlink to the documentation page with the given label." +msgstr "" + #: ../../content/contributing/documentation/rst_cheat_sheet.rst:409 +msgid "Please refer to `this documentation `_ and to `Send a pro-forma invoice `_." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:420 +msgid "File download hyperlinks" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:422 +msgid "The ``download`` markup allows referencing files (that are not necessarily :abbr:`RST (reStructuredText)` documents) within the source tree to be downloaded." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:428 +msgid "Download this `module structure template `_ to start building your module in no time." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:442 +msgid "The ``image`` markup allows inserting images in a document." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:458 +msgid "Add the :code:`:class: o-no-modal` `option `_ to an image to prevent opening it in a modal." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:465 +msgid "Alert blocks (admonitions)" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:470 +msgid "Seealso" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:476 +msgid "`Customer invoices `_" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:477 +msgid "`Pro-forma invoices `_" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:488 +msgid "Note" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:494 +msgid "Use this alert block to grab the reader's attention about additional information." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:504 +msgid "Tip" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:510 +msgid "Use this alert block to inform the reader about a useful trick that requires an action." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:520 #: ../../content/contributing/documentation/rst_guidelines.rst:17 msgid "Example" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:128 -msgid "This excerpt of :abbr:`RST (reStructuredText)`: ``For instance, `this is a hyperlink reference `_.`` is rendered as follows in HTML: “For instance, `this is a hyperlink reference `_.”" +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:526 +msgid "Use this alert block to show an example." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:135 -msgid "External hyperlink targets" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:137 -msgid "External hyperlink targets allow creating shortcuts for hyperlink references." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:138 -msgid "The definition syntax is as follows: ``.. _target: URL``" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:139 -msgid "There are two ways to reference them, depending on the use case:" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:141 -msgid "``target_`` creates a hyperlink with the target name as label and the URL as reference. Note that the ``_`` moved after the target!" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:143 -msgid "```label `_`` does exactly what you expect: the label replaces the name of the target, and the target is replaced by the URL." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:150 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:196 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:236 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:267 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:292 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:317 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:353 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:374 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:393 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:412 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:431 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:450 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:469 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:490 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:509 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:530 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:570 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:613 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:690 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:786 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:876 -msgid "RST" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:160 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:212 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:244 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:275 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:300 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:331 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:362 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:382 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:401 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:420 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:439 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:458 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:478 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:498 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:518 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:540 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:589 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:648 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:734 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:810 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:885 -msgid "Render" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:162 -msgid "A `proof-of-concept `_ is a simplified version, a prototype of what is expected to agree on the main lines of expected changes. `PoC `_ is a common abbreviation." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:169 -msgid "Internal hyperlink targets" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:171 -msgid "Internal hyperlink targets follow the same syntax as external hyperlink targets but without any URL. Indeed, they are internal. They allow referencing a specific part of a document by using the target as an anchor. When the user clicks on the reference, the documentation scrolls to the part of the page containing the target." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:177 -msgid "Targets can be referenced from other files than the ones in which they are defined." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:179 -msgid "The definition syntax is: ``.. _target:``" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:180 -msgid "There are two ways to reference them, both using the ``ref`` directive:" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:182 -msgid "``:ref:`target``` creates a hyperlink to the anchor with the heading defined below as label." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:183 -msgid "``:ref:`label ``` creates a hyperlink to the anchor with the given label." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:185 -msgid "See :ref:`contributing/relative-links` to learn how to write proper relative links for internal references." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:189 -msgid "Notice that there is no ``_`` at the end, as it is done with :ref:`hyperlink targets `." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:214 -msgid "This can easily be done by creating a new product, see `How to create a product? `_ for additional help." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:217 -msgid "**How to create a product?**" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:219 -msgid "As explained at the `start of the page `_, ..." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:224 -msgid "Implicit hyperlink targets" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:228 -msgid "Implicit hyperlink targets are a special kind of internal hyperlink targets: they are automatically generated by section titles, footnotes, etc. Consequently, they don’t have a definition syntax." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:230 -msgid "They can be referenced the same first way as external hyperlink targets by using the name of the section title as URL." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:246 -msgid "This can easily be done by creating a new user, see `How to create a new user? `_ for additional help. ..." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:252 -msgid "The ``doc`` directive" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:255 -msgid "The ``doc`` directive allows referencing a documentation page wherever it is in the file tree through a relative file path." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:256 -msgid "As usual, there are two ways to use the directive:" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:258 -msgid "``:doc:`path_to_doc_page``` creates a hyperlink reference to the documentation page with the title of the page as label." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:260 -msgid "``:doc:`label ``` creates a hyperlink reference to the documentation page with the given label." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:277 -msgid "Please refer to `this documentation `_ and to `Send a pro-forma invoice `_." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:283 -msgid "The ``download`` directive" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:285 -msgid "The ``download`` directive allows referencing files (that are not necessarily :abbr:`RST (reStructuredText)` documents) within the source tree to be downloaded." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:302 -msgid "Download this `module structure template `_ to start building your module in no time." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:308 -msgid "The ``image`` directive" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:310 -msgid "The ``image`` directive allows inserting images in a document. It comes with a set of optional parameter directives that can individually be omitted if considered redundant." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:345 -msgid "Admonitions (alert blocks)" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:350 -msgid "Seealso" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:365 -msgid "`Customer invoices `_" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:366 -msgid "`Pro-forma invoices `_" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:371 -msgid "Note" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:385 -msgid "Use this admonition to grab the reader's attention about additional information." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:390 -msgid "Tip" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:404 -msgid "Use this admonition to inform the reader about a useful trick that requires an action." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:423 -msgid "Use this admonition to show an example." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:428 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:536 msgid "Exercise" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:442 -msgid "Use this admonition to suggest an exercise to the reader." +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:542 +msgid "Use this alert block to suggest an exercise to the reader." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:447 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:552 msgid "Important" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:461 -msgid "Use this admonition to notify the reader about an important information." +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:558 +msgid "Use this alert block to notify the reader about important information." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:466 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:568 msgid "Warning" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:481 -msgid "Use this admonition to require the reader to proceed with caution with what is described in the warning." +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:574 +msgid "Use this alert block to require the reader to proceed with caution with what is described in the warning." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:487 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:586 msgid "Danger" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:501 -msgid "Use this admonition to bring the reader's attention to a serious threat." +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:592 +msgid "Use this alert block to bring the reader's attention to a serious threat." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:506 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:602 msgid "Custom" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:520 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:607 msgid "Title" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:522 -msgid "Customize this admonition with a **Title** of your choice." +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:609 +msgid "Customize this alert block with a **Title** of your choice." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:527 -msgid "Code blocks" +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:620 +msgid "Tables" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:550 -msgid "Content tabs" +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:623 +msgid "List tables" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:553 -msgid "The `tabs` directive may not work well in some situations. In particular:" +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:625 +msgid "List tables use two-level bulleted lists to convert data into a table. The first level represents the rows and the second level represents the columns." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:555 -msgid "The tabs' headers cannot be translated." +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:635 +msgid "Name" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:556 -msgid "A tab cannot contain :ref:`headings `." +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:636 +msgid "Country" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:557 -msgid "An :ref:`admonition ` cannot contain tabs." +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:637 +msgid "Favorite color" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:558 -msgid "A tab cannot contain :ref:`internal hyperlink targets `." +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:638 +msgid "Raúl" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:564 -msgid "Basic tabs" +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:639 +msgid "Montenegro" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:566 -msgid "Basic tabs are useful to split content into multiple options. The `tabs` directive is used to define a sequence of tabs. Each tab is then defined with the `tab` directive followed by a label." +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:640 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:672 +msgid "Purple" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:593 -msgid "Odoo Online" +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:641 +msgid "Mélanie" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:595 -msgid "Content dedicated to Odoo Online users." +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:642 +msgid "France" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:597 -msgid "Odoo.sh" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:599 -msgid "Alternative for Odoo.sh users." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:601 -msgid "On-premise" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:603 -msgid "Third version for On-premise users." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:608 -msgid "Nested tabs" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:610 -msgid "Tabs can be nested inside one another." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:652 -msgid "Stars" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:656 -msgid "The Sun" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:658 -msgid "The closest star to us." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:660 -msgid "Proxima Centauri" +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:643 +msgid "Red" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:662 -msgid "The second closest star to us." +msgid "Grid tables" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:664 -msgid "Polaris" +msgid "Grid tables represent the rendered table and are more visual to work with." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:666 -msgid "The North Star." +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:670 +msgid "Shirts" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:668 -msgid "Moons" +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:670 +msgid "T-shirts" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:672 -msgid "The Moon" +msgid "**Available colours**" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:672 +msgid "Green" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:674 -msgid "Orbits the Earth." +msgid "Turquoise" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:674 +msgid "Orange" msgstr "" #: ../../content/contributing/documentation/rst_cheat_sheet.rst:676 +msgid "**Sleeves length**" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:676 +msgid "Long sleeves" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:676 +msgid "Short sleeves" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:692 +msgid "Use `=` instead of `-` to define header rows." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:693 +msgid "Remove `-` and `|` separators to merge cells." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:694 +msgid "Make use of `this convenient table generator `_ to build your tables. Then, copy-paste the generated formatting into your document." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:700 +msgid "Code blocks" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:720 +msgid "Content tabs" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:723 +msgid "The `tabs` markup may not work well in some situations. In particular:" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:725 +msgid "The tabs' headers cannot be translated." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:726 +msgid "A tab cannot contain :ref:`headings `." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:727 +msgid "An :ref:`alert block ` cannot contain tabs." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:728 +msgid "A tab cannot contain :ref:`custom anchors `." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:733 +msgid "Basic tabs" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:735 +msgid "Basic tabs are useful to split the content into multiple options. The `tabs` markup is used to define sequence of tabs. Each tab is then defined with the `tab` markup followed by a label." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:743 +msgid "Odoo Online" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:745 +msgid "Content dedicated to Odoo Online users." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:747 +msgid "Odoo.sh" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:749 +msgid "Alternative for Odoo.sh users." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:751 +msgid "On-premise" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:753 +msgid "Third version for On-premise users." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:774 +msgid "Nested tabs" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:776 +msgid "Tabs can be nested inside one another." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:783 +msgid "Stars" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:787 +msgid "The Sun" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:789 +msgid "The closest star to us." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:791 +msgid "Proxima Centauri" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:793 +msgid "The second closest star to us." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:795 +msgid "Polaris" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:797 +msgid "The North Star." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:799 +msgid "Moons" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:803 +msgid "The Moon" +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:805 +msgid "Orbits the Earth." +msgstr "" + +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:807 msgid "Titan" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:678 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:809 msgid "Orbits Jupiter." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:683 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:846 msgid "Group tabs" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:685 -msgid "Group tabs are special tabs that synchronize based on a group label. The last selected group is remembered and automatically selected when the user returns on the page or visits another page with the tabs group. The `group-tab` directive is used to define group tabs." +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:848 +msgid "Group tabs are special tabs that synchronize based on a group label. The last selected group is remembered and automatically selected when the user returns to the page or visits another page with the tabs group. The `group-tab` markup is used to define group tabs." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:738 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:740 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:752 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:857 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:859 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:871 msgid "C++" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:746 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:748 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:767 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:865 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:867 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:886 msgid "Java" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:778 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:938 msgid "Code tabs" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:780 -msgid "Code tabs are essentially :ref:`group tabs ` that treat the content as a :ref:`code block `. The `code-tab` directive is used to define a code tab. Just as for the `code-block` directive, the language defines the syntax highlighting of the tab. If set, the label is used instead of the language for grouping tabs." +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:940 +msgid "Code tabs are essentially :ref:`group tabs ` that treat the content as a :ref:`code block `. The `code-tab` markup is used to define a code tab. Just as for the `code-block` markup, the language defines the syntax highlighting of the tab. If set, the label is used instead of the language for grouping tabs." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:834 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:991 msgid "Document metadata" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:836 -msgid "Sphinx supports document-wide metadata directives that specify a behavior for the entire page." +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:993 +msgid "Sphinx supports document-wide metadata markups that specify a behavior for the entire page." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:837 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:994 msgid "They must be placed between colons (`:`) at the top of the source file." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:840 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:997 msgid "**Metadata**" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:840 -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:919 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:997 msgid "**Purpose**" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:842 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:999 msgid "`show-content`" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:842 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:999 msgid "Make a toctree page accessible from the navigation menu." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:844 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:1001 msgid "`show-toc`" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:844 -msgid "Show the table of content on a page that has the `show-content` metadata directive." +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:1001 +msgid "Show the table of content on a page that has the `show-content` metadata markup." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:847 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:1004 msgid "`code-column`" msgstr "" @@ -1404,204 +2380,80 @@ msgstr "" msgid "For example, see :doc:`/applications/finance/accounting/getting_started/memento`." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:852 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:1009 msgid "`hide-page-toc`" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:852 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:1009 msgid "Hide the \"On this page\" sidebar and use full page width for the content." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:854 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:1011 msgid "`custom-css`" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:854 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:1011 msgid "Link CSS files (comma-separated) to the document." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:856 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:1013 msgid "`custom-js`" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:856 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:1013 msgid "Link JS files (comma-separated) to the document." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:858 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:1015 msgid "`classes`" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:858 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:1015 msgid "Assign the specified classes to the `
` element of the document." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:860 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:1017 msgid "`orphan`" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:860 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:1017 msgid "Suppress the need to include the document in a toctree." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:862 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:1019 msgid "`nosearch`" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:862 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:1019 msgid "Exclude the document from search results." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:868 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:1025 msgid "Formatting tips" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:873 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:1030 msgid "Break the line but not the paragraph" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:888 -msgid "First super long line that you break in two… here is rendered as a single line." +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:0 +msgid "A first long line that you break in two -> here <- is rendered as a single line." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:889 -msgid "Second line that follows a line break." +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:0 +msgid "A second line that follows a line break." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:894 -msgid "Add comments" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:896 -msgid "If you made a particular choice of writing or formatting that a future writer should be able to understand and take into account, consider writing a comment. Comments are blocks of text that do not count as a part of the documentation and that are used to pass a message to writers of the source code. They consist of a line starting with two dots and a space, followed by the comment." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:901 -msgid "``.. For instance, this line will not be rendered in the documentation.``" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:906 -msgid "Use tables" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:908 -msgid "Make use of `this convenient table generator `_ to build your tables. Then, copy-paste the generated formatting into your document." -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:914 -msgid "Spice up your writing with specialized directives" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:916 -msgid "Use these additional directives to fine-tune your content:" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:919 -msgid "**Directive**" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:919 -msgid "**Example**" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:921 -msgid "**RST**" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:921 -msgid "**HTML**" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:923 -msgid "``abbr``" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:923 -msgid "Self-defining abbreviations" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:923 -msgid "``:abbr:`SO (Sales Order)```" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:923 -msgid ":abbr:`SO (Sales Order)`" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:925 -msgid "``command``" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:925 -msgid "Highlight a command" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:925 -msgid "``:command:`python example.py```" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:925 -msgid ":command:`python example.py`" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:927 -msgid "``dfn``" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:927 -msgid "Define a term" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:927 -msgid "``:dfn:`a definition for a new term```" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:927 -msgid ":dfn:`a definition for a new term`" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:929 -msgid "``file``" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:929 -msgid "Indicate a file path" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:929 -msgid "``:file:`~/odoo/odoo-bin```" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:929 -msgid ":file:`~/odoo/odoo-bin`" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:931 -msgid "``menuselection``" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:931 -msgid "Guide a user through a sequence of menus" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:931 -msgid "``:menuselection:`Sales --> Configuration --> Settings```" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:931 -msgid ":menuselection:`Sales --> Configuration --> Settings`" -msgstr "" - -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:937 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:1048 msgid "Escape markup symbols (Advanced)" msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:939 +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:1050 msgid "Markup symbols escaped with backslashes (``\\``) are rendered normally. For instance, ``this \\*\\*line of text\\*\\* with \\*markup\\* symbols`` is rendered as “this \\*\\*line of text\\*\\* with \\*markup\\* symbols”." msgstr "" -#: ../../content/contributing/documentation/rst_cheat_sheet.rst:943 -msgid "When it comes to backticks (`````), which are used in many case such as :ref:`hyperlink references `, using backslashes for escaping is no longer an option because the outer backticks interpret enclosed backslashes and thus prevent them from escaping inner backticks. For instance, ```\\`this formatting\\```` produces an ``[UNKNOWN NODE title_reference]`` error. Instead, `````this formatting````` should be used to produce the following result: ```this formatting```." +#: ../../content/contributing/documentation/rst_cheat_sheet.rst:1054 +msgid "When it comes to backticks (`````), which are used in many cases such as :ref:`external hyperlinks `, using backslashes for escaping is no longer an option because the outer backticks interpret enclosed backslashes and thus prevent them from escaping inner backticks. For instance, ```\\`this formatting\\```` produces an ``[UNKNOWN NODE title_reference]`` error. Instead, `````this formatting````` should be used to produce the following result: ```this formatting```." msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:3 @@ -1661,11 +2513,11 @@ msgid "In RST, it is possible to break a line without forcing a line break on th msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:61 -msgid "You can safely break a line around the separators (``-->``) of ``menuselection`` directives and anywhere in a hyperlink reference. For the ``doc``, ``ref`` and ``download`` directives, this is only true for the label part of the reference." +msgid "You can safely break a line around the separators (``-->``) of ``menuselection`` markups and anywhere in a hyperlink reference. For the ``doc``, ``ref`` and ``download`` markups, this is only true for the label part of the reference." msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:66 -msgid "Example: Line breaks within directive and inline markup" +msgid "Example: Line breaks within markups" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:75 @@ -1677,7 +2529,7 @@ msgid "Use only spaces (never tabs)." msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:79 -msgid "Use as many spaces at the beginning of an indented line as needed to align it with the first character of the directive in the line above. This usually implies 3 spaces but you only need 2 for bulleted lists." +msgid "Use as many spaces at the beginning of an indented line as needed to align it with the first character of the markup in the line above. This usually implies 3 spaces but you only need 2 for bulleted lists." msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:84 @@ -1693,49 +2545,49 @@ msgid "Example: Continuation lines resume below the ``I``’s of “Invoice” ( msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:114 -msgid "Use the menuselection directive" +msgid "Use the menuselection markup" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:116 -msgid "Although chaining characters ``‣`` and menu names works fine to indicate a user which menus to click, it is best to use the ``menuselection`` directive (see :ref:`contributing/specialized-directives`) for the same result. Indeed, it renders the menus chain consistently with the rest of the documentation and would automatically adapt to the new graphic chart if we were to switch to a new one. This directive is used inline as follows: ``:menuselection:`Settings --> Products --> Variants```." +msgid "Although chaining characters ``‣`` and menu names works fine to indicate a user which menus to click, it is best to use the ``menuselection`` markup (see :ref:`contributing/menuselection`) for the same result. Indeed, it renders the menus chain consistently with the rest of the documentation and would automatically adapt to the new graphic chart if we were to switch to a new one. This markup is used inline as follows: ``:menuselection:`Sales --> Settings --> Products --> Variants```." msgstr "" -#: ../../content/contributing/documentation/rst_guidelines.rst:126 +#: ../../content/contributing/documentation/rst_guidelines.rst:125 msgid "Write resilient code" msgstr "" -#: ../../content/contributing/documentation/rst_guidelines.rst:128 +#: ../../content/contributing/documentation/rst_guidelines.rst:127 msgid "Prefer the use of ``#.`` in numbered lists instead of ``1.``, ``2.``, etc. This removes the risk of breaking the numbering when adding new elements to the list and is easier to maintain." msgstr "" -#: ../../content/contributing/documentation/rst_guidelines.rst:130 +#: ../../content/contributing/documentation/rst_guidelines.rst:129 msgid "Avoid using implicit hyperlink targets and prefer internal hyperlink targets instead. Referencing the implicit target ``How to print quotations?`` is more prone to break than a reference to the explicit target ``_print_quotation`` which never appears in the rendered HTML and is thus even less likely to be modified." msgstr "" -#: ../../content/contributing/documentation/rst_guidelines.rst:138 +#: ../../content/contributing/documentation/rst_guidelines.rst:137 msgid "Prefix hyperlink targets with application names" msgstr "" -#: ../../content/contributing/documentation/rst_guidelines.rst:140 -msgid "As hyperlink targets are visible from the entire documentation when referenced with the ``ref`` directive, it is recommended to prefix the target name with that of the related application. For instance, naming a target ``_amazon/form`` instead of ``_form`` avoids unwanted behaviors and makes the purpose of the target clear." +#: ../../content/contributing/documentation/rst_guidelines.rst:139 +msgid "As hyperlink targets are visible from the entire documentation when referenced with the ``ref`` markup, it is recommended to prefix the target name with that of the related application. For instance, naming a target ``_amazon/form`` instead of ``_form`` avoids unwanted behaviors and makes the purpose of the target clear." msgstr "" -#: ../../content/contributing/documentation/rst_guidelines.rst:148 +#: ../../content/contributing/documentation/rst_guidelines.rst:147 msgid "Don’t break hyperlink targets" msgstr "" -#: ../../content/contributing/documentation/rst_guidelines.rst:150 +#: ../../content/contributing/documentation/rst_guidelines.rst:149 msgid "When refactoring (improving without adding new content) section headings or hyperlink targets, take care not to break any hyperlink reference to these targets or update them accordingly." msgstr "" -#: ../../content/contributing/documentation/rst_guidelines.rst:156 +#: ../../content/contributing/documentation/rst_guidelines.rst:155 msgid "Use single-underscore suffixes for hyperlink references" msgstr "" -#: ../../content/contributing/documentation/rst_guidelines.rst:161 +#: ../../content/contributing/documentation/rst_guidelines.rst:160 msgid "Although using a double-underscore suffix works most of the time for classic hyperlink references, it is not recommended as double-underscores normally indicate an anonymous hyperlink reference. This is a special kind of hyperlink reference that makes use of nameless hyperlink targets consisting only of two underscore." msgstr "" -#: ../../content/contributing/documentation/rst_guidelines.rst:163 +#: ../../content/contributing/documentation/rst_guidelines.rst:162 msgid "tl;dr: Double-underscore suffixes work until they don’t and are bad practice, use single-underscore suffixes instead." msgstr "" diff --git a/locale/sources/developer.pot b/locale/sources/developer.pot index 4bd78cb27..c60252f56 100644 --- a/locale/sources/developer.pot +++ b/locale/sources/developer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 14.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-08 13:24+0000\n" +"POT-Creation-Date: 2022-09-01 15:09+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -24,6 +24,2829 @@ msgstr "" msgid "Learn through tutorials and get help using reference guides." msgstr "" +#: ../../content/developer/api.rst:5 +#: ../../content/developer/reference/addons/http.rst:52 +#: ../../content/developer/reference/addons/orm.rst:48 +#: ../../content/developer/reference/javascript/qweb.rst:592 +msgid "API" +msgstr "" + +#: ../../content/developer/api/external_api.rst:3 +msgid "External API" +msgstr "" + +#: ../../content/developer/api/external_api.rst:5 +msgid "Odoo is usually extended internally via modules, but many of its features and all of its data are also available from the outside for external analysis or integration with various tools. Part of the :ref:`reference/orm/model` API is easily available over XML-RPC_ and accessible from a variety of languages." +msgstr "" + +#: ../../content/developer/api/external_api.rst:11 +msgid "Connection" +msgstr "" + +#: ../../content/developer/api/external_api.rst:14 +msgid "Configuration" +msgstr "" + +#: ../../content/developer/api/external_api.rst:16 +msgid "If you already have an Odoo server installed, you can just use its parameters." +msgstr "" + +#: ../../content/developer/api/external_api.rst:20 +msgid "For Odoo Online instances (.odoo.com), users are created without a *local* password (as a person you are logged in via the Odoo Online authentication system, not by the instance itself). To use XML-RPC on Odoo Online instances, you will need to set a password on the user account you want to use:" +msgstr "" + +#: ../../content/developer/api/external_api.rst:26 +msgid "Log in your instance with an administrator account." +msgstr "" + +#: ../../content/developer/api/external_api.rst:27 +msgid "Go to :menuselection:`Settings --> Users & Companies --> Users`." +msgstr "" + +#: ../../content/developer/api/external_api.rst:28 +msgid "Click on the user you want to use for XML-RPC access." +msgstr "" + +#: ../../content/developer/api/external_api.rst:29 +msgid "Click on :guilabel:`Action` and select :guilabel:`Change Password`." +msgstr "" + +#: ../../content/developer/api/external_api.rst:30 +msgid "Set a :guilabel:`New Password` value then click :guilabel:`Change Password`." +msgstr "" + +#: ../../content/developer/api/external_api.rst:32 +msgid "The *server url* is the instance's domain (e.g. *https://mycompany.odoo.com*), the *database name* is the name of the instance (e.g. *mycompany*). The *username* is the configured user's login as shown by the *Change Password* screen." +msgstr "" + +#: ../../content/developer/api/external_api.rst:68 +msgid "API Keys" +msgstr "" + +#: ../../content/developer/api/external_api.rst:72 +msgid "Odoo has support for **api keys** and (depending on modules or settings) may **require** these keys to perform webservice operations." +msgstr "" + +#: ../../content/developer/api/external_api.rst:75 +msgid "The way to use API Keys in your scripts is to simply replace your **password** by the key. The login remains in-use. You should store the API Key as carefully as the password as they essentially provide the same access to your user account (although they can not be used to log-in via the interface)." +msgstr "" + +#: ../../content/developer/api/external_api.rst:80 +msgid "In order to add a key to your account, simply go to your :guilabel:`Preferences` (or :guilabel:`My Profile`):" +msgstr "" + +#: ../../content/developer/api/external_api.rst:86 +msgid "then open the :guilabel:`Account Security` tab, and click :guilabel:`New API Key`:" +msgstr "" + +#: ../../content/developer/api/external_api.rst:92 +msgid "Input a description for the key, **this description should be as clear and complete as possible**: it is the only way you will have to identify your keys later and know whether you should remove them or keep them around." +msgstr "" + +#: ../../content/developer/api/external_api.rst:96 +msgid "Click :guilabel:`Generate Key`, then copy the key provided. **Store this key carefully**: it is equivalent to your password, and just like your password the system will not be able to retrieve or show the key again later on. If you lose this key, you will have to create a new one (and probably delete the one you lost)." +msgstr "" + +#: ../../content/developer/api/external_api.rst:102 +msgid "Once you have keys configured on your account, they will appear above the :guilabel:`New API Key` button, and you will be able to delete them:" +msgstr "" + +#: ../../content/developer/api/external_api.rst:108 +msgid "**A deleted API key can not be undeleted or re-set**. You will have to generate a new key and update all the places where you used the old one." +msgstr "" + +#: ../../content/developer/api/external_api.rst:112 +msgid "Test database" +msgstr "" + +#: ../../content/developer/api/external_api.rst:114 +msgid "To make exploration simpler, you can also ask https://demo.odoo.com for a test database:" +msgstr "" + +#: ../../content/developer/api/external_api.rst:131 +msgid "PHP" +msgstr "" + +#: ../../content/developer/api/external_api.rst:140 +msgid "These examples use the `Ripcord `_ library, which provides a simple XML-RPC API. Ripcord requires that `XML-RPC support be enabled `_ in your PHP installation." +msgstr "" + +#: ../../content/developer/api/external_api.rst:146 +msgid "Since calls are performed over `HTTPS `_, it also requires that the `OpenSSL extension `_ be enabled." +msgstr "" + +#: ../../content/developer/api/external_api.rst:151 +msgid "Java" +msgstr "" + +#: ../../content/developer/api/external_api.rst:168 +msgid "These examples use the `Apache XML-RPC library `_." +msgstr "" + +#: ../../content/developer/api/external_api.rst:170 +msgid "The examples do not include imports as these imports couldn't be pasted in the code." +msgstr "" + +#: ../../content/developer/api/external_api.rst:174 +msgid "Logging in" +msgstr "" + +#: ../../content/developer/api/external_api.rst:176 +msgid "Odoo requires users of the API to be authenticated before they can query most data." +msgstr "" + +#: ../../content/developer/api/external_api.rst:179 +msgid "The ``xmlrpc/2/common`` endpoint provides meta-calls which don't require authentication, such as the authentication itself or fetching version information. To verify if the connection information is correct before trying to authenticate, the simplest call is to ask for the server's version. The authentication itself is done through the ``authenticate`` function and returns a user identifier (``uid``) used in authenticated calls instead of the login." +msgstr "" + +#: ../../content/developer/api/external_api.rst:210 +#: ../../content/developer/api/external_api.rst:296 +#: ../../content/developer/api/external_api.rst:338 +#: ../../content/developer/api/external_api.rst:377 +#: ../../content/developer/api/external_api.rst:417 +#: ../../content/developer/api/external_api.rst:481 +#: ../../content/developer/api/external_api.rst:514 +#: ../../content/developer/api/external_api.rst:562 +#: ../../content/developer/api/external_api.rst:645 +#: ../../content/developer/api/external_api.rst:716 +#: ../../content/developer/api/external_api.rst:785 +#: ../../content/developer/api/external_api.rst:834 +#: ../../content/developer/api/external_api.rst:946 +#: ../../content/developer/api/external_api.rst:1111 +#: ../../content/developer/howtos/web.rst:655 +msgid "Result:" +msgstr "" + +#: ../../content/developer/api/external_api.rst:243 +msgid "Calling methods" +msgstr "" + +#: ../../content/developer/api/external_api.rst:245 +msgid "The second endpoint is ``xmlrpc/2/object``. It is used to call methods of odoo models via the ``execute_kw`` RPC function." +msgstr "" + +#: ../../content/developer/api/external_api.rst:248 +msgid "Each call to ``execute_kw`` takes the following parameters:" +msgstr "" + +#: ../../content/developer/api/external_api.rst:250 +msgid "the database to use, a string" +msgstr "" + +#: ../../content/developer/api/external_api.rst:251 +msgid "the user id (retrieved through ``authenticate``), an integer" +msgstr "" + +#: ../../content/developer/api/external_api.rst:252 +msgid "the user's password, a string" +msgstr "" + +#: ../../content/developer/api/external_api.rst:253 +msgid "the model name, a string" +msgstr "" + +#: ../../content/developer/api/external_api.rst:254 +msgid "the method name, a string" +msgstr "" + +#: ../../content/developer/api/external_api.rst:255 +msgid "an array/list of parameters passed by position" +msgstr "" + +#: ../../content/developer/api/external_api.rst:256 +msgid "a mapping/dict of parameters to pass by keyword (optional)" +msgstr "" + +#: ../../content/developer/api/external_api.rst:260 +msgid "For instance, to see if we can read the ``res.partner`` model, we can call ``check_access_rights`` with ``operation`` passed by position and ``raise_exception`` passed by keyword (in order to get a true/false result rather than true/error):" +msgstr "" + +#: ../../content/developer/api/external_api.rst:303 +msgid "List records" +msgstr "" + +#: ../../content/developer/api/external_api.rst:305 +msgid "Records can be listed and filtered via :meth:`~odoo.models.Model.search`." +msgstr "" + +#: ../../content/developer/api/external_api.rst:307 +msgid ":meth:`~odoo.models.Model.search` takes a mandatory :ref:`domain ` filter (possibly empty), and returns the database identifiers of all records matching the filter." +msgstr "" + +#: ../../content/developer/api/external_api.rst:313 +msgid "To list customer companies, for instance:" +msgstr "" + +#: ../../content/developer/api/external_api.rst:345 +msgid "Pagination" +msgstr "" + +#: ../../content/developer/api/external_api.rst:347 +msgid "By default a search will return the ids of all records matching the condition, which may be a huge number. ``offset`` and ``limit`` parameters are available to only retrieve a subset of all matched records." +msgstr "" + +#: ../../content/developer/api/external_api.rst:384 +msgid "Count records" +msgstr "" + +#: ../../content/developer/api/external_api.rst:386 +msgid "Rather than retrieve a possibly gigantic list of records and count them, :meth:`~odoo.models.Model.search_count` can be used to retrieve only the number of records matching the query. It takes the same :ref:`domain ` filter as :meth:`~odoo.models.Model.search` and no other parameter." +msgstr "" + +#: ../../content/developer/api/external_api.rst:424 +msgid "Calling ``search`` then ``search_count`` (or the other way around) may not yield coherent results if other users are using the server: stored data could have changed between the calls." +msgstr "" + +#: ../../content/developer/api/external_api.rst:429 +msgid "Read records" +msgstr "" + +#: ../../content/developer/api/external_api.rst:431 +msgid "Record data are accessible via the :meth:`~odoo.models.Model.read` method, which takes a list of ids (as returned by :meth:`~odoo.models.Model.search`), and optionally a list of fields to fetch. By default, it fetches all the fields the current user can read, which tends to be a huge amount." +msgstr "" + +#: ../../content/developer/api/external_api.rst:487 +msgid "Conversely, picking only three fields deemed interesting." +msgstr "" + +#: ../../content/developer/api/external_api.rst:521 +msgid "Even if the ``id`` field is not requested, it is always returned." +msgstr "" + +#: ../../content/developer/api/external_api.rst:524 +msgid "List record fields" +msgstr "" + +#: ../../content/developer/api/external_api.rst:526 +msgid ":meth:`~odoo.models.Model.fields_get` can be used to inspect a model's fields and check which ones seem to be of interest." +msgstr "" + +#: ../../content/developer/api/external_api.rst:529 +msgid "Because it returns a large amount of meta-information (it is also used by client programs) it should be filtered before printing, the most interesting items for a human user are ``string`` (the field's label), ``help`` (a help text if available) and ``type`` (to know which values to expect, or to send when updating a record)." +msgstr "" + +#: ../../content/developer/api/external_api.rst:604 +msgid "Search and read" +msgstr "" + +#: ../../content/developer/api/external_api.rst:606 +msgid "Because it is a very common task, Odoo provides a :meth:`~odoo.models.Model.search_read` shortcut which, as its name suggests, is equivalent to a :meth:`~odoo.models.Model.search` followed by a :meth:`~odoo.models.Model.read`, but avoids having to perform two requests and keep ids around." +msgstr "" + +#: ../../content/developer/api/external_api.rst:612 +msgid "Its arguments are similar to :meth:`~odoo.models.Model.search`'s, but it can also take a list of ``fields`` (like :meth:`~odoo.models.Model.read`, if that list is not provided it will fetch all fields of matched records)." +msgstr "" + +#: ../../content/developer/api/external_api.rst:683 +msgid "Create records" +msgstr "" + +#: ../../content/developer/api/external_api.rst:685 +msgid "Records of a model are created using :meth:`~odoo.models.Model.create`. The method creates a single record and returns its database identifier." +msgstr "" + +#: ../../content/developer/api/external_api.rst:688 +msgid ":meth:`~odoo.models.Model.create` takes a mapping of fields to values, used to initialize the record. For any field which has a default value and is not set through the mapping argument, the default value will be used." +msgstr "" + +#: ../../content/developer/api/external_api.rst:723 +msgid "While most value types are what would expect (integer for :class:`~odoo.fields.Integer`, string for :class:`~odoo.fields.Char` or :class:`~odoo.fields.Text`)," +msgstr "" + +#: ../../content/developer/api/external_api.rst:727 +msgid ":class:`~odoo.fields.Date`, :class:`~odoo.fields.Datetime` and :class:`~odoo.fields.Binary` fields use string values" +msgstr "" + +#: ../../content/developer/api/external_api.rst:729 +msgid ":class:`~odoo.fields.One2many` and :class:`~odoo.fields.Many2many` use a special command protocol detailed in :meth:`the documentation to the write method `." +msgstr "" + +#: ../../content/developer/api/external_api.rst:734 +msgid "Update records" +msgstr "" + +#: ../../content/developer/api/external_api.rst:736 +msgid "Records can be updated using :meth:`~odoo.models.Model.write`. It takes a list of records to update and a mapping of updated fields to values similar to :meth:`~odoo.models.Model.create`." +msgstr "" + +#: ../../content/developer/api/external_api.rst:740 +msgid "Multiple records can be updated simultaneously, but they will all get the same values for the fields being set. It is not possible to perform \"computed\" updates (where the value being set depends on an existing value of a record)." +msgstr "" + +#: ../../content/developer/api/external_api.rst:792 +msgid "Delete records" +msgstr "" + +#: ../../content/developer/api/external_api.rst:794 +msgid "Records can be deleted in bulk by providing their ids to :meth:`~odoo.models.Model.unlink`." +msgstr "" + +#: ../../content/developer/api/external_api.rst:841 +msgid "Inspection and introspection" +msgstr "" + +#: ../../content/developer/api/external_api.rst:843 +msgid "While we previously used :meth:`~odoo.models.Model.fields_get` to query a model and have been using an arbitrary model from the start, Odoo stores most model metadata inside a few meta-models which allow both querying the system and altering models and fields (with some limitations) on the fly over XML-RPC." +msgstr "" + +#: ../../content/developer/api/external_api.rst:852 +msgid "``ir.model``" +msgstr "" + +#: ../../content/developer/api/external_api.rst:854 +msgid "Provides information about Odoo models via its various fields." +msgstr "" + +#: ../../content/developer/api/external_api.rst:856 +#: ../../content/developer/api/external_api.rst:992 +#: ../../content/developer/howtos/web.rst:1326 +#: ../../content/developer/reference/addons/actions.rst:19 +#: ../../content/developer/reference/addons/actions.rst:416 +#: ../../content/developer/reference/addons/data.rst:221 +#: ../../content/developer/reference/addons/views.rst:1487 +#: ../../content/developer/reference/addons/views.rst:1523 +#: ../../content/developer/reference/addons/views.rst:1607 +#: ../../content/developer/reference/addons/views.rst:1728 +#: ../../content/developer/reference/addons/views.rst:1901 +#: ../../content/developer/reference/addons/views.rst:2039 +msgid "``name``" +msgstr "" + +#: ../../content/developer/api/external_api.rst:857 +msgid "a human-readable description of the model" +msgstr "" + +#: ../../content/developer/api/external_api.rst:858 +#: ../../content/developer/reference/addons/views.rst:1855 +msgid "``model``" +msgstr "" + +#: ../../content/developer/api/external_api.rst:859 +msgid "the name of each model in the system" +msgstr "" + +#: ../../content/developer/api/external_api.rst:861 +#: ../../content/developer/api/external_api.rst:999 +#: ../../content/developer/reference/addons/actions.rst:231 +msgid "``state``" +msgstr "" + +#: ../../content/developer/api/external_api.rst:861 +msgid "whether the model was generated in Python code (``base``) or by creating an ``ir.model`` record (``manual``)" +msgstr "" + +#: ../../content/developer/api/external_api.rst:864 +msgid "``field_id``" +msgstr "" + +#: ../../content/developer/api/external_api.rst:864 +msgid "list of the model's fields through a :class:`~odoo.fields.One2many` to :ref:`reference/webservice/inspection/fields`" +msgstr "" + +#: ../../content/developer/api/external_api.rst:867 +#: ../../content/developer/reference/addons/actions.rst:148 +msgid "``view_ids``" +msgstr "" + +#: ../../content/developer/api/external_api.rst:867 +msgid ":class:`~odoo.fields.One2many` to the :ref:`reference/views` defined for the model" +msgstr "" + +#: ../../content/developer/api/external_api.rst:871 +msgid "``access_ids``" +msgstr "" + +#: ../../content/developer/api/external_api.rst:870 +msgid ":class:`~odoo.fields.One2many` relation to the :ref:`reference/security/acl` set on the model" +msgstr "" + +#: ../../content/developer/api/external_api.rst:873 +msgid "``ir.model`` can be used to" +msgstr "" + +#: ../../content/developer/api/external_api.rst:875 +msgid "Query the system for installed models (as a precondition to operations on the model or to explore the system's content)." +msgstr "" + +#: ../../content/developer/api/external_api.rst:877 +msgid "Get information about a specific model (generally by listing the fields associated with it)." +msgstr "" + +#: ../../content/developer/api/external_api.rst:879 +msgid "Create new models dynamically over RPC." +msgstr "" + +#: ../../content/developer/api/external_api.rst:882 +msgid "Custom model names must start with ``x_``." +msgstr "" + +#: ../../content/developer/api/external_api.rst:883 +msgid "The ``state`` must be provided and set to ``manual``, otherwise the model will not be loaded." +msgstr "" + +#: ../../content/developer/api/external_api.rst:885 +msgid "It is not possible to add new *methods* to a custom model, only fields." +msgstr "" + +#: ../../content/developer/api/external_api.rst:889 +msgid "A custom model will initially contain only the \"built-in\" fields available on all models:" +msgstr "" + +#: ../../content/developer/api/external_api.rst:984 +msgid "``ir.model.fields``" +msgstr "" + +#: ../../content/developer/api/external_api.rst:986 +msgid "Provides information about the fields of Odoo models and allows adding custom fields without using Python code." +msgstr "" + +#: ../../content/developer/api/external_api.rst:990 +#: ../../content/developer/reference/addons/actions.rst:229 +#: ../../content/developer/reference/addons/actions.rst:433 +msgid "``model_id``" +msgstr "" + +#: ../../content/developer/api/external_api.rst:990 +msgid ":class:`~odoo.fields.Many2one` to :ref:`reference/webservice/inspection/models` to which the field belongs" +msgstr "" + +#: ../../content/developer/api/external_api.rst:993 +msgid "the field's technical name (used in ``read`` or ``write``)" +msgstr "" + +#: ../../content/developer/api/external_api.rst:994 +msgid "``field_description``" +msgstr "" + +#: ../../content/developer/api/external_api.rst:995 +msgid "the field's user-readable label (e.g. ``string`` in ``fields_get``)" +msgstr "" + +#: ../../content/developer/api/external_api.rst:996 +msgid "``ttype``" +msgstr "" + +#: ../../content/developer/api/external_api.rst:997 +msgid "the :ref:`type ` of field to create" +msgstr "" + +#: ../../content/developer/api/external_api.rst:999 +msgid "whether the field was created via Python code (``base``) or via ``ir.model.fields`` (``manual``)" +msgstr "" + +#: ../../content/developer/api/external_api.rst:1001 +msgid "``required``, ``readonly``, ``translate``" +msgstr "" + +#: ../../content/developer/api/external_api.rst:1002 +msgid "enables the corresponding flag on the field" +msgstr "" + +#: ../../content/developer/api/external_api.rst:1004 +#: ../../content/developer/reference/addons/data.rst:226 +#: ../../content/developer/reference/addons/data.rst:250 +#: ../../content/developer/reference/addons/views.rst:878 +#: ../../content/developer/reference/addons/views.rst:1532 +#: ../../content/developer/reference/addons/views.rst:1933 +#: ../../content/developer/reference/addons/views.rst:2045 +#: ../../content/developer/reference/addons/views.rst:2109 +msgid "``groups``" +msgstr "" + +#: ../../content/developer/api/external_api.rst:1004 +msgid ":ref:`field-level access control `, a :class:`~odoo.fields.Many2many` to ``res.groups``" +msgstr "" + +#: ../../content/developer/api/external_api.rst:1008 +msgid "``selection``, ``size``, ``on_delete``, ``relation``, ``relation_field``, ``domain``" +msgstr "" + +#: ../../content/developer/api/external_api.rst:1007 +msgid "type-specific properties and customizations, see :ref:`the fields documentation ` for details" +msgstr "" + +#: ../../content/developer/api/external_api.rst:1011 +msgid "Like custom models, only new fields created with ``state=\"manual\"`` are activated as actual fields on the model." +msgstr "" + +#: ../../content/developer/api/external_api.rst:1013 +msgid "Computed fields can not be added via ``ir.model.fields``, some field meta-information (defaults, onchange) can not be set either." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:5 +msgid "Extract API" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:7 +msgid "Odoo provides a service allowing you to automate the processing of your invoices. The service scans your document using an Optical Character Recognition (OCR) engine and then uses AI-based algorithms to extract the fields of interest such as the total, the due date, or the invoice lines. More functional information can be found on the `demo page `_." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:11 +msgid "This service is a paid service. Each invoice processing will cost you one credit. Three different sized packs can be bought on `iap.odoo.com `_." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:13 +msgid "You can either use this service directly in the Odoo Accounting App or through the API. The Extract API which is detailed in the next section allows you to integrate our service directly into your own projects." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:17 +msgid "Invoices" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:18 +msgid "The extract API use the JSON-RPC2_ protocol. The diffent routes are located at the following address: **https://iap-extract.odoo.com**." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:21 +msgid "Expected successful flow" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:23 +msgid "Call :ref:`webservices/extract_api/invoice_parse` to submit your invoices (one call for each invoice). On success, you receive a `document_id` in the response." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:24 +msgid "You then have to regularly poll :ref:`webservices/extract_api/invoice_get_results` to get the document's parsing status." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:25 +msgid "Once the result received, you can validate it by calling :ref:`webservices/extract_api/invoice_validate` and sending the expected values. This step is optional but greatly helps the system to improve." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:28 +msgid "These 3 routes are detailed in this :ref:`section `. The HTTP POST method should be used for all of them. A python implementation of the full flow can be found :download:`here ` and a token for integration testing is provided in the :ref:`integration testing section `." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:34 +msgid "Routes" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:39 +msgid "``/iap/invoice_extract/parse``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:42 +#: ../../content/developer/api/extract_api.rst:145 +#: ../../content/developer/api/extract_api.rst:359 +#: ../../content/developer/howtos/themes.rst:959 +msgid "Description" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:43 +msgid "Request a processing of the document from the OCR. The route will return a `document_id` you can use to obtain the result of your request." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:46 +#: ../../content/developer/api/extract_api.rst:149 +#: ../../content/developer/api/extract_api.rst:364 +msgid "Request Body" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:48 +#: ../../content/developer/api/extract_api.rst:151 +#: ../../content/developer/api/extract_api.rst:366 +msgid "``jsonrpc`` (required)" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:49 +msgid "Must be exactly “2.0”." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:50 +#: ../../content/developer/api/extract_api.rst:153 +#: ../../content/developer/api/extract_api.rst:368 +msgid "``method`` (required)" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:51 +msgid "Must be “call”." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:52 +#: ../../content/developer/api/extract_api.rst:155 +msgid "``id`` (required)" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:53 +msgid "An identifier established by the client. It allows the client to keep track of which response goes with which request. This makes asynchronous calls easier." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:76 +#: ../../content/developer/api/extract_api.rst:374 +msgid "``params``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:55 +msgid "``account_token`` (required)" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:56 +msgid "The token of the account from which credits will be taken. Each successful call costs one token." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:58 +msgid "``version`` (optional)" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:58 +msgid "The version will determine the format of your requests and the format of the server response. Some results can be unavailable in older versions. For the current version 1.2.0, send ‘120’. If not specified, the latest version will be used." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:62 +msgid "``documents`` (required)" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:61 +msgid "The invoice must be provided as a string in the ASCII encoding. The list should contain only one string. If multiple strings are provided only the first string corresponding to a pdf will be processed. If no pdf is found, the first string will be processed. This field is a list only for legacy reasons. The supported extensions are *pdf*, *png*, *jpg* and *bmp*." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:76 +msgid "``user_infos`` (required)" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:65 +msgid "Information concerning the person to whom the invoice is intended. This information is not required in order for the service to work but it greatly improves the quality of the result." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:67 +msgid "``user_company_vat`` (optional)" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:68 +msgid "VAT number of the client." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:69 +msgid "``user_company_name`` (optional)" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:70 +msgid "Name of the client’s company." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:71 +msgid "``user_company_country_code`` (optional)" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:72 +msgid "Country code of the client. Format: `ISO3166 alpha-2 `_." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:73 +msgid "``user_lang`` (optional)" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:74 +msgid "The client language. Format: *language_code + _ + locale* (ex: fr_FR, en_US)." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:76 +msgid "``user_email`` (optional)" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:76 +msgid "The client email." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:100 +#: ../../content/developer/api/extract_api.rst:177 +#: ../../content/developer/api/extract_api.rst:465 +#: ../../content/developer/reference/addons/http.rst:78 +msgid "Response" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:102 +#: ../../content/developer/api/extract_api.rst:179 +#: ../../content/developer/api/extract_api.rst:467 +msgid "``jsonrpc``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:103 +msgid "A string specifying the version of the JSON-RPC protocol. It will be “2.0”." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:104 +#: ../../content/developer/api/extract_api.rst:181 +#: ../../content/developer/api/extract_api.rst:469 +#: ../../content/developer/reference/addons/actions.rst:219 +#: ../../content/developer/reference/addons/data.rst:70 +#: ../../content/developer/reference/addons/data.rst:155 +#: ../../content/developer/reference/addons/data.rst:232 +#: ../../content/developer/reference/addons/data.rst:242 +#: ../../content/developer/reference/addons/views.rst:849 +msgid "``id``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:105 +msgid "The identifier you set in the request body." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:112 +#: ../../content/developer/api/extract_api.rst:191 +#: ../../content/developer/api/extract_api.rst:475 +msgid "``result``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:107 +#: ../../content/developer/api/extract_api.rst:186 +#: ../../content/developer/api/extract_api.rst:472 +msgid "``status_code``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:108 +#: ../../content/developer/api/extract_api.rst:187 +#: ../../content/developer/api/extract_api.rst:473 +msgid "|STATUS_CODE|" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:109 +#: ../../content/developer/api/extract_api.rst:188 +#: ../../content/developer/api/extract_api.rst:475 +msgid "``status_msg``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:110 +#: ../../content/developer/api/extract_api.rst:189 +#: ../../content/developer/api/extract_api.rst:475 +msgid "|STATUS_MSG|" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:112 +msgid "``document_id``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:112 +#: ../../content/developer/api/extract_api.rst:191 +msgid "Only present if the request is successful." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:114 +msgid "The API does not actually use the JSON-RPC error scheme. Instead the API has its own error scheme bundled inside a successful JSON-RPC result." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:117 +#: ../../content/developer/api/extract_api.rst:196 +#: ../../content/developer/api/extract_api.rst:478 +msgid "status_code" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:117 +#: ../../content/developer/api/extract_api.rst:196 +#: ../../content/developer/api/extract_api.rst:478 +msgid "status_msg" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:119 +#: ../../content/developer/api/extract_api.rst:198 +#: ../../content/developer/api/extract_api.rst:480 +msgid "0" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:119 +#: ../../content/developer/api/extract_api.rst:198 +#: ../../content/developer/api/extract_api.rst:480 +msgid "Success" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:120 +#: ../../content/developer/api/extract_api.rst:200 +msgid "2" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:120 +#: ../../content/developer/api/extract_api.rst:200 +msgid "An error occurred" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:121 +msgid "3" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:121 +msgid "You don't have enough credit" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:122 +#: ../../content/developer/howtos/rdtraining/C_data.rst:184 +msgid "6" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:122 +msgid "Unsupported file format" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:123 +#: ../../content/developer/api/extract_api.rst:201 +msgid "9" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:123 +#: ../../content/developer/api/extract_api.rst:201 +msgid "Server is currently under maintenance. Please try again later." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:142 +msgid "``/iap/invoice_extract/get_results``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:146 +msgid "Request the results of the documents ids obtained with the :ref:`/parse ` route. Can either return the results or a \"request pending\" message." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:152 +#: ../../content/developer/api/extract_api.rst:154 +#: ../../content/developer/api/extract_api.rst:156 +#: ../../content/developer/api/extract_api.rst:159 +#: ../../content/developer/api/extract_api.rst:180 +#: ../../content/developer/api/extract_api.rst:182 +#: ../../content/developer/api/extract_api.rst:367 +#: ../../content/developer/api/extract_api.rst:369 +#: ../../content/developer/api/extract_api.rst:468 +#: ../../content/developer/api/extract_api.rst:470 +msgid "|SAME_AS_PARSE|" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:161 +msgid "``params``:" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:158 +msgid "``version`` (required)" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:161 +msgid "``documents_ids`` (required)" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:161 +msgid "The list of ``document_id`` for which you want to get the current parsing status." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:184 +msgid "Dictionary where each key is a document_id. For each ``document_id``:" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:191 +msgid "``results``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:193 +msgid "result keys are strings despite the fact that the document_ids given in the request body are integers." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:199 +#: ../../content/developer/howtos/rdtraining/C_data.rst:184 +msgid "1" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:199 +msgid "Not ready" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:234 +msgid "``feature_result``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:236 +msgid "Each field of interest we want to extract from the invoice such as the total or the due date are also called features. An exhaustive list of all the extracted features can be found in the table below." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:238 +msgid "For each feature, we return a list of candidates and we spotlight the candidate our model predicts to be the best fit for the feature." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:240 +msgid "``selected_value``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:241 +msgid "The best candidate for this feature." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:243 +msgid "``words``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:243 +msgid "List of all the candidates for this feature ordered by decreasing score." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:255 +msgid "``candidate``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:257 +msgid "For each candidate we give its representation and position in the document. Candidates are sorted by decreasing order of suitability." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:259 +msgid "``content``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:260 +msgid "Representation of the candidate." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:262 +msgid "``coords``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:262 +msgid "``[center_x, center_y, width, height, rotation_angle]``. The position and dimensions are relative to the size of the page and are therefore between 0 and 1. The angle is a clockwise rotation measured in degrees." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:265 +#: ../../content/developer/reference/addons/data.rst:253 +msgid "``page``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:265 +msgid "Page of the original document on which the candidate is located (starts at 0)." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:277 +msgid "Feature name" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:277 +msgid "Specifities" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:279 +msgid "``SWIFT_code``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:279 +msgid "**content** is a dictionary encoded as a string." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:281 +msgid "It contains information about the detected SWIFT code (or `BIC `_)." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:284 +msgid "Keys:" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:286 +msgid "``bic``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:287 +msgid "detected BIC (string)." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:288 +#: ../../content/developer/reference/addons/views.rst:600 +#: ../../content/developer/reference/addons/views.rst:717 +msgid "``name`` (optional)" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:289 +msgid "bank name (string)." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:290 +msgid "``country_code``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:291 +msgid "ISO3166 alpha-2 country code of the bank (string)." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:292 +msgid "``city`` (optional)" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:293 +msgid "city of the bank (string)." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:295 +msgid "``verified_bic``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:295 +msgid "True if the BIC has been found in our DB (bool)." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:297 +msgid "Name and city are present only if verified_bic is true." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:299 +msgid "``VAT_Number``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:299 +#: ../../content/developer/api/extract_api.rst:301 +#: ../../content/developer/api/extract_api.rst:303 +#: ../../content/developer/api/extract_api.rst:305 +#: ../../content/developer/api/extract_api.rst:319 +#: ../../content/developer/api/extract_api.rst:325 +msgid "**content** is a string" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:301 +msgid "``country``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:303 +msgid "``currency``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:305 +msgid "``date``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:307 +msgid "Format : *YYYY-MM-DD HH:MM:SS*" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:309 +msgid "``due_date``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:309 +msgid "Same as for ``date``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:311 +msgid "``global_taxes``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:311 +#: ../../content/developer/api/extract_api.rst:317 +#: ../../content/developer/api/extract_api.rst:321 +#: ../../content/developer/api/extract_api.rst:323 +msgid "**content** is a float" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:313 +msgid "**candidate** has an additional field ``amount_type``. Its value is always percent." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:315 +msgid "**selected_values** is a list of candidates." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:317 +msgid "``global_taxes_amount``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:319 +msgid "``invoice_id``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:321 +msgid "``subtotal``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:323 +msgid "``total``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:325 +msgid "``supplier``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:329 +msgid "``feature_result`` for the ``invoice_lines`` feature" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:331 +msgid "It follows a more specific structure. It is basically a list of dictionaries where each dictionary represents an invoice line. Each value follows a :ref:`webservices/extract_api/invoice_get_results/feature_result` structure." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:356 +msgid "``/iap/invoice_extract/validate``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:360 +msgid "Route that validates the different features of an invoice. The validation step is an optional step but is strongly recommended. By telling the system if it were right or wrong for each feature you give an important feedback. It has no direct impact but it helps the system to greatly improve its prediction accuracy for the invoices you will send in the future." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:371 +msgid "``documents_id`` (required)" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:372 +msgid "Id of the document for which you want to validate the result." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:374 +msgid "``values``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:374 +msgid "Contains the validation for each feature. The field ``merged_line`` indicates if the ``invoice_lines`` have been merged or not." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:376 +msgid "You don't have to validate all the features in order for the validation to succeed. However :ref:`/validate ` can't be called multiple times for a same invoice. Therefore you should validate all the features you want to validate at once." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:398 +msgid "``validation``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:400 +msgid "A **validation** for a given feature is a dictionary containing the textual representation of the expected value for this given feature. This format apply for all the features except for ``global_taxes`` and ``invoice_lines`` which have more complex validation format." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:409 +msgid "validation for ``global_taxes``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:411 +msgid "**content** is a list of dictionaries. Each dictionary represents a tax:" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:413 +msgid "``amount``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:414 +msgid "Amount on which the tax is applied." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:415 +msgid "``tax_amount``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:416 +msgid "Amount of the tax." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:417 +msgid "``tax_amount_type``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:418 +msgid "Indicates if the ``tax_amount`` is a percentage or a fixed value. The type must be specified using the literal string \"fixed\" or \"percent\"." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:420 +msgid "``tax_price_include``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:420 +msgid "Indicates if ``amount`` already contains the tax or not." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:436 +msgid "validation for ``invoice_lines``" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:438 +msgid "**lines** is a list of dictionaries. Each dictionary represents an invoice line. The dictionary keys speak for themselves." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:481 +msgid "12" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:481 +msgid "Validation format is incorrect" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:500 +#: ../../content/developer/reference/addons/testing.rst:535 +msgid "Integration Testing" +msgstr "" + +#: ../../content/developer/api/extract_api.rst:502 +msgid "You can test your integration by using *integration_token* as ``account_token`` in the :ref:`/parse ` request." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:504 +msgid "Using this token put you in test mode and allows you to simulate the entire flow without really parsing a document and without being billed one credit for each successful invoice parsing." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:506 +msgid "The only technical differences in test mode is that the document you send is not parsed by the system and that the response you get from :ref:`/get_results ` is a hard-coded one." +msgstr "" + +#: ../../content/developer/api/extract_api.rst:509 +msgid "A python implementation of the full flow can be found :download:`here `." +msgstr "" + +#: ../../content/developer/api/iap.rst:6 +msgid "In-App Purchase" +msgstr "" + +#: ../../content/developer/api/iap.rst:8 +msgid "In-App Purchase (IAP) allows providers of ongoing services through Odoo apps to be compensated for ongoing service use rather than — and possibly instead of — a sole initial purchase." +msgstr "" + +#: ../../content/developer/api/iap.rst:12 +msgid "In that context, Odoo acts mostly as a *broker* between a client and an Odoo App Developer:" +msgstr "" + +#: ../../content/developer/api/iap.rst:15 +msgid "Users purchase service tokens from Odoo." +msgstr "" + +#: ../../content/developer/api/iap.rst:16 +msgid "Service providers draw tokens from the user's Odoo account when service is requested." +msgstr "" + +#: ../../content/developer/api/iap.rst:21 +msgid "This document is intended for *service providers* and presents the latter, which can be done either via direct JSON-RPC2_ or if you are using Odoo using the convenience helpers it provides." +msgstr "" + +#: ../../content/developer/api/iap.rst:26 +#: ../../content/developer/reference/javascript/javascript_reference.rst:18 +msgid "Overview" +msgstr "" + +#: ../../content/developer/api/iap.rst:31 +msgid "The Players" +msgstr "" + +#: ../../content/developer/api/iap.rst:33 +msgid "The Service Provider is (probably) you the reader, you will be providing value to the client in the form of a service paid per-use." +msgstr "" + +#: ../../content/developer/api/iap.rst:35 +msgid "The Client installed your Odoo App, and from there will request services." +msgstr "" + +#: ../../content/developer/api/iap.rst:36 +msgid "Odoo brokers crediting, the Client adds credit to their account, and you can draw credits from there to provide services." +msgstr "" + +#: ../../content/developer/api/iap.rst:38 +msgid "The External Service is an optional player: *you* can either provide a service directly, or you can delegate the actual service acting as a bridge/translator between an Odoo system and the actual service." +msgstr "" + +#: ../../content/developer/api/iap.rst:46 +msgid "The Credits" +msgstr "" + +#: ../../content/developer/api/iap.rst:48 +msgid "The credits went from integer to float value starting **October 2018**. Integer values are still supported." +msgstr "" + +#: ../../content/developer/api/iap.rst:51 +msgid "Every service provided through the IAP platform can be used by the clients with tokens or *credits*. The credits are an float unit and their monetary value depends on the service and is decided by the provider. This could be:" +msgstr "" + +#: ../../content/developer/api/iap.rst:56 +msgid "for an sms service: 1 credit = 1 sms;" +msgstr "" + +#: ../../content/developer/api/iap.rst:57 +msgid "for an ad service: 1 credit = 1 ad; or" +msgstr "" + +#: ../../content/developer/api/iap.rst:58 +msgid "for a postage service: 1 credit = 1 post stamp." +msgstr "" + +#: ../../content/developer/api/iap.rst:60 +msgid "A credit can also simply be associated with a fixed amount of money to palliate the variations of price (e.g. the prices of sms and stamps may vary following the countries)." +msgstr "" + +#: ../../content/developer/api/iap.rst:64 +msgid "The value of the credits is fixed with the help of prepaid credit packs that the clients can buy on https://iap.odoo.com (see :ref:`Packs `)." +msgstr "" + +#: ../../content/developer/api/iap.rst:67 +msgid "In the following explanations we will ignore the External Service, they are just a detail of the service you provide." +msgstr "" + +#: ../../content/developer/api/iap.rst:73 +msgid "'Normal' service flow" +msgstr "" + +#: ../../content/developer/api/iap.rst:75 +msgid "If everything goes well, the normal flow is the following:" +msgstr "" + +#: ../../content/developer/api/iap.rst:77 +msgid "The Client requests a service of some sort." +msgstr "" + +#: ../../content/developer/api/iap.rst:78 +msgid "The Service Provider asks Odoo if there are enough credits for the service in the Client's account, and creates a transaction over that amount." +msgstr "" + +#: ../../content/developer/api/iap.rst:81 +msgid "The Service Provider provides the service (either on their own or calling to External Services)." +msgstr "" + +#: ../../content/developer/api/iap.rst:83 +msgid "The Service Provider goes back to Odoo to capture (if the service could be provided) or cancel (if the service could not be provided) the transaction created at step 2." +msgstr "" + +#: ../../content/developer/api/iap.rst:86 +msgid "Finally, the Service Provider notifies the Client that the service has been rendered, possibly (depending on the service) displaying or storing its results in the client's system." +msgstr "" + +#: ../../content/developer/api/iap.rst:93 +msgid "Insufficient credits" +msgstr "" + +#: ../../content/developer/api/iap.rst:95 +msgid "However, if the Client's account lacks credits for the service, the flow will be as follows:" +msgstr "" + +#: ../../content/developer/api/iap.rst:97 +msgid "The Client requests a service as previously." +msgstr "" + +#: ../../content/developer/api/iap.rst:98 +msgid "The Service Provider asks Odoo if there are enough credits on the Client's account and gets a negative reply." +msgstr "" + +#: ../../content/developer/api/iap.rst:100 +msgid "This is signaled back to the Client." +msgstr "" + +#: ../../content/developer/api/iap.rst:101 +msgid "Who is redirected to their Odoo account to credit it and re-try." +msgstr "" + +#: ../../content/developer/api/iap.rst:105 +msgid "Building your service" +msgstr "" + +#: ../../content/developer/api/iap.rst:107 +msgid "For this example, the service we will provide is ~~mining dogecoins~~ burning 10 seconds of CPU for a credit. For your own services, you could, for example:" +msgstr "" + +#: ../../content/developer/api/iap.rst:110 +msgid "provide an online service yourself (e.g. convert quotations to faxes for business in Japan);" +msgstr "" + +#: ../../content/developer/api/iap.rst:112 +msgid "provide an *offline* service yourself (e.g. provide accountancy service); or" +msgstr "" + +#: ../../content/developer/api/iap.rst:113 +msgid "act as intermediary to an other service provider (e.g. bridge to an MMS gateway)." +msgstr "" + +#: ../../content/developer/api/iap.rst:119 +msgid "Register the service on Odoo" +msgstr "" + +#: ../../content/developer/api/iap.rst:121 +#: ../../content/developer/api/iap.rst:225 +#: ../../content/developer/api/iap.rst:407 +#: ../../content/developer/api/iap.rst:409 +#: ../../content/developer/api/iap.rst:510 +#: ../../content/developer/howtos/company.rst:229 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:96 +#: ../../content/developer/howtos/translations.rst:21 +#: ../../content/developer/howtos/web.rst:137 +#: ../../content/developer/howtos/web.rst:1878 +#: ../../content/developer/howtos/website.rst:490 +#: ../../content/developer/reference/addons/actions.rst:176 +#: ../../../odoo/odoo/api.py:docstring of odoo.api:3 +#: ../../content/developer/reference/addons/orm.rst:620 +#: ../../content/developer/reference/addons/orm.rst:622 +#: ../../content/developer/reference/addons/orm.rst:737 +#: ../../content/developer/reference/addons/orm.rst:894 +#: ../../content/developer/reference/addons/security.rst:28 +#: ../../content/developer/reference/addons/security.rst:186 +#: ../../content/developer/reference/addons/views.rst:13 +#: ../../content/developer/reference/addons/views.rst:70 +#: ../../content/developer/reference/addons/views.rst:81 +#: ../../content/developer/reference/addons/views.rst:179 +#: ../../content/developer/reference/addons/views.rst:241 +#: ../../content/developer/reference/addons/views.rst:857 +#: ../../content/developer/reference/addons/views.rst:981 +#: ../../content/developer/reference/addons/views.rst:983 +#: ../../content/developer/reference/addons/views.rst:1278 +#: ../../content/developer/reference/addons/views.rst:1367 +#: ../../content/developer/reference/addons/views.rst:1385 +#: ../../content/developer/reference/addons/views.rst:1514 +#: ../../content/developer/reference/addons/views.rst:2211 +#: ../../content/developer/reference/javascript/qweb.rst:342 +#: ../../content/developer/reference/javascript/qweb.rst:423 +msgid "Todo" +msgstr "" + +#: ../../content/developer/api/iap.rst:121 +msgid "complete this part with screenshots" +msgstr "" + +#: ../../content/developer/api/iap.rst:123 +msgid "The first step is to register your service on the IAP endpoint (production and/or test) before you can actually query user accounts. To create a service, go to your *Portal Account* on the IAP endpoint (https://iap.odoo.com for production, https://iap-sandbox.odoo.com for testing, the endpoints are *independent* and *not synchronized*). Alternatively, you can go to your portal on Odoo (https://iap.odoo.com/my/home) and select *In-App Services*." +msgstr "" + +#: ../../content/developer/api/iap.rst:132 +msgid "On production, there is a manual validation step before the service can be used to manage real transactions. This step is automatically passed when on sandbox to ease the tests." +msgstr "" + +#: ../../content/developer/api/iap.rst:136 +msgid "Log in then go to :menuselection:`My Account --> Your In-App Services`, click Create and provide the information of your service." +msgstr "" + +#: ../../content/developer/api/iap.rst:140 +msgid "The service has *seven* important fields:" +msgstr "" + +#: ../../content/developer/api/iap.rst:142 +msgid ":samp:`name` - :class:`ServiceName`: This is the string you will need to provide inside the client's :ref:`app ` when requesting a transaction from Odoo. (e.g. :class:`self.env['iap.account].get(name)`). As good practice, this should match the technical name of your app." +msgstr "" + +#: ../../content/developer/api/iap.rst:147 +msgid ":samp:`label` - :class:`Label`: The name displayed on the shopping portal for the client." +msgstr "" + +#: ../../content/developer/api/iap.rst:152 +msgid "Both the :class:`ServiceName` and :class:`Label` are unique. As good practice, the :class:`ServiceName` should usually match the name of your Odoo Client App." +msgstr "" + +#: ../../content/developer/api/iap.rst:155 +msgid ":samp:`icon` - :class:`Icon`: A generic icon that will serve as default for your :ref:`packs `." +msgstr "" + +#: ../../content/developer/api/iap.rst:158 +msgid ":samp:`key` - :class:`ServiceKey`: The developer key that identifies you in IAP (see :ref:`your service `) and allows to draw credits from the client's account. It will be shown only once upon creation of the service and can be regenerated at will." +msgstr "" + +#: ../../content/developer/api/iap.rst:164 +msgid "Your :class:`ServiceKey` *is a secret*, leaking your service key allows other application developers to draw credits bought for your service(s)." +msgstr "" + +#: ../../content/developer/api/iap.rst:168 +msgid ":samp:`trial credits` - :class:`Float`: This corresponds to the credits you are ready to offer upon first use to your app users. Note that such service will only be available to clients that have an active enterprise contract." +msgstr "" + +#: ../../content/developer/api/iap.rst:172 +msgid ":samp:`privacy policy` - :class:`PrivacyPolicy`: This is an url to the privacy policy of your service. This should explicitly mention the **information you collect**, how you **use it, its relevance** to make your service work and inform the client on how they can **access, update or delete their personal information**." +msgstr "" + +#: ../../content/developer/api/iap.rst:189 +msgid "You can then create *credit packs* which clients can purchase in order to use your service." +msgstr "" + +#: ../../content/developer/api/iap.rst:195 +msgid "Packs" +msgstr "" + +#: ../../content/developer/api/iap.rst:197 +msgid "A credit pack is essentially a product with five characteristics:" +msgstr "" + +#: ../../content/developer/api/iap.rst:199 +msgid "Name: name of the pack," +msgstr "" + +#: ../../content/developer/api/iap.rst:200 +msgid "Icon: specific icon for the pack (if not provided, it will fallback on the service icon)," +msgstr "" + +#: ../../content/developer/api/iap.rst:201 +msgid "Description: details on the pack that will appear on the shop page as well as the invoice," +msgstr "" + +#: ../../content/developer/api/iap.rst:203 +msgid "Amount: amount of credits the client is entitled to when buying the pack," +msgstr "" + +#: ../../content/developer/api/iap.rst:204 +msgid "Price: price in EUR (for the time being, USD support is planned)." +msgstr "" + +#: ../../content/developer/api/iap.rst:208 +msgid "Odoo takes a 25% commission on all pack sales. Adjust your selling price accordingly." +msgstr "" + +#: ../../content/developer/api/iap.rst:213 +msgid "Depending on the strategy, the price per credit may vary from one pack to another." +msgstr "" + +#: ../../content/developer/api/iap.rst:223 +msgid "Odoo App" +msgstr "" + +#: ../../content/developer/api/iap.rst:225 +msgid "does this actually require apps?" +msgstr "" + +#: ../../content/developer/api/iap.rst:227 +msgid "The second step is to develop an `Odoo App`_ which clients can install in their Odoo instance and through which they can *request* the services you provide. Our app will just add a button to the Partners form which lets a user request burning some CPU time on the server." +msgstr "" + +#: ../../content/developer/api/iap.rst:232 +msgid "First, we will create an *odoo module* depending on ``iap``. IAP is a standard V11 module and the dependency ensures a local account is properly set up and we will have access to some necessary views and useful helpers." +msgstr "" + +#: ../../content/developer/api/iap.rst:236 +#: ../../content/developer/api/iap.rst:251 +msgid "`coalroller/__manifest__.py`" +msgstr "" + +#: ../../content/developer/api/iap.rst:246 +msgid "Second, the \"local\" side of the integration. Here we will only be adding an action button to the partners view, but you can of course provide significant local value via your application and additional parts via a remote service." +msgstr "" + +#: ../../content/developer/api/iap.rst:264 +msgid "`coalroller/views/res_partner_views.xml`" +msgstr "" + +#: ../../content/developer/api/iap.rst:289 +msgid "We can now implement the action method/callback. This will *call our own server*." +msgstr "" + +#: ../../content/developer/api/iap.rst:292 +msgid "There are no requirements when it comes to the server or the communication protocol between the app and our server, but ``iap`` provides a :func:`~odoo.addons.iap.tools.iap_tools.iap_jsonrpc` helper to call a JSON-RPC2_ endpoint on an other Odoo instance and transparently re-raise relevant Odoo exceptions (:class:`~odoo.addons.iap.tools.iap_tools.InsufficientCreditError`, :class:`odoo.exceptions.AccessError` and :class:`odoo.exceptions.UserError`)." +msgstr "" + +#: ../../content/developer/api/iap.rst:299 +msgid "In that call, we will need to provide:" +msgstr "" + +#: ../../content/developer/api/iap.rst:301 +msgid "any relevant client parameter (none here)," +msgstr "" + +#: ../../content/developer/api/iap.rst:302 +msgid "the :class:`token ` of the current client that is provided by the ``iap.account`` model's ``account_token`` field. You can retrieve the account for your service by calling :samp:`env['iap.account'].get({service_name})` where :class:`service_name ` is the name of the service registered on IAP endpoint." +msgstr "" + +#: ../../content/developer/api/iap.rst:308 +msgid "`coalroller/models/res_partner.py`" +msgstr "" + +#: ../../content/developer/api/iap.rst:336 +msgid "``iap`` automatically handles :class:`~odoo.addons.iap.tools.iap_tools.InsufficientCreditError` coming from the action and prompts the user to add credits to their account." +msgstr "" + +#: ../../content/developer/api/iap.rst:340 +msgid ":func:`~odoo.addons.iap.tools.iap_tools.iap_jsonrpc` takes care of re-raising :class:`~odoo.addons.iap.models.iap.InsufficientCreditError` for you." +msgstr "" + +#: ../../content/developer/api/iap.rst:345 +msgid "If you are not using :func:`~odoo.addons.iap.tools.iap_tools.iap_jsonrpc` you *must* be careful to re-raise :class:`~odoo.addons.iap.tools.iap_tools.InsufficientCreditError` in your handler otherwise the user will not be prompted to credit their account, and the next call will fail the same way." +msgstr "" + +#: ../../content/developer/api/iap.rst:354 +#: ../../content/developer/reference/javascript/javascript_reference.rst:1097 +msgid "Service" +msgstr "" + +#: ../../content/developer/api/iap.rst:356 +msgid "Though that is not *required*, since ``iap`` provides both a client helper for JSON-RPC2_ calls (:func:`~odoo.addons.iap.tools.iap_tools.iap_jsonrpc`) and a service helper for transactions (:class:`~odoo.addons.iap.tools.iap_tools.iap_charge`) we will also be implementing the service side as an Odoo module:" +msgstr "" + +#: ../../content/developer/api/iap.rst:361 +#: ../../content/developer/api/iap.rst:449 +msgid "`coalroller_service/__manifest__.py`" +msgstr "" + +#: ../../content/developer/api/iap.rst:371 +msgid "Since the query from the client comes as JSON-RPC2_ we will need the corresponding controller which can call :class:`~odoo.addons.iap.tools.iap_tools.iap_charge` and perform the service within:" +msgstr "" + +#: ../../content/developer/api/iap.rst:375 +#: ../../content/developer/api/iap.rst:462 +msgid "`coalroller_service/controllers/main.py`" +msgstr "" + +#: ../../content/developer/api/iap.rst:407 +msgid "for the actual IAP will the \"portal\" page be on odoo.com or iap.odoo.com?" +msgstr "" + +#: ../../content/developer/api/iap.rst:409 +msgid "\"My Account\" > \"Your InApp Services\"?" +msgstr "" + +#: ../../content/developer/api/iap.rst:412 +msgid "The :class:`~odoo.addons.iap.tools.iap_tools.iap_charge` helper will:" +msgstr "" + +#: ../../content/developer/api/iap.rst:414 +msgid "authorize (create) a transaction with the specified number of credits, if the account does not have enough credits it will raise the relevant error" +msgstr "" + +#: ../../content/developer/api/iap.rst:417 +msgid "execute the body of the ``with`` statement" +msgstr "" + +#: ../../content/developer/api/iap.rst:418 +msgid "if the body of the ``with`` executes successfully, update the price of the transaction if needed" +msgstr "" + +#: ../../content/developer/api/iap.rst:420 +msgid "capture (confirm) the transaction" +msgstr "" + +#: ../../content/developer/api/iap.rst:421 +msgid "otherwise, if an error is raised from the body of the ``with``, cancel the transaction (and release the hold on the credits)" +msgstr "" + +#: ../../content/developer/api/iap.rst:426 +msgid "By default, :class:`~odoo.addons.iap.tools.iap_tools.iap_charge` contacts the *production* IAP endpoint, https://iap.odoo.com. While developing and testing your service you may want to point it towards the *development* IAP endpoint https://iap-sandbox.odoo.com." +msgstr "" + +#: ../../content/developer/api/iap.rst:431 +msgid "To do so, set the ``iap.endpoint`` config parameter in your service Odoo: in debug/developer mode, :menuselection:`Setting --> Technical --> Parameters --> System Parameters`, just define an entry for the key ``iap.endpoint`` if none already exists)." +msgstr "" + +#: ../../content/developer/api/iap.rst:436 +msgid "The :class:`~odoo.addons.iap.tools.iap_tools.iap_charge` helper has two additional optional parameters we can use to make things clearer to the end-user." +msgstr "" + +#: ../../content/developer/api/iap.rst:441 +#: ../../content/developer/reference/addons/reports.rst:197 +msgid "``description``" +msgstr "" + +#: ../../content/developer/api/iap.rst:440 +msgid "is a message which will be associated with the transaction and will be displayed in the user's dashboard, it is useful to remind the user why the charge exists." +msgstr "" + +#: ../../content/developer/api/iap.rst:447 +msgid "``credit_template``" +msgstr "" + +#: ../../content/developer/api/iap.rst:444 +msgid "is the name of a :ref:`reference/qweb` template which will be rendered and shown to the user if their account has less credit available than the service provider is requesting, its purpose is to tell your users why they should be interested in your IAP offers." +msgstr "" + +#: ../../content/developer/api/iap.rst:487 +msgid "`coalroller_service/views/no-credit.xml`" +msgstr "" + +#: ../../content/developer/api/iap.rst:510 +msgid "how do you test your service?" +msgstr "" + +#: ../../content/developer/api/iap.rst:513 +msgid "JSON-RPC2_ Transaction API" +msgstr "" + +#: ../../content/developer/api/iap.rst:518 +msgid "The IAP transaction API does not require using Odoo when implementing your server gateway, calls are standard JSON-RPC2_." +msgstr "" + +#: ../../content/developer/api/iap.rst:520 +msgid "Calls use different *endpoints* but the same *method* on all endpoints (``call``)." +msgstr "" + +#: ../../content/developer/api/iap.rst:522 +msgid "Exceptions are returned as JSON-RPC2_ errors, the formal exception name is available on ``data.name`` for programmatic manipulation." +msgstr "" + +#: ../../content/developer/api/iap.rst:525 +msgid "`iap.odoo.com documentation`_ for additional information." +msgstr "" + +#: ../../content/developer/api/iap.rst:528 +#: ../../content/developer/api/iap.rst:770 +msgid "Authorize" +msgstr "" + +#: ../../content/developer/api/iap.rst:532 +msgid "Verifies that the user's account has at least as ``credit`` available *and creates a hold (pending transaction) on that amount*." +msgstr "" + +#: ../../content/developer/api/iap.rst:535 +msgid "Any amount currently on hold by a pending transaction is considered unavailable to further authorize calls." +msgstr "" + +#: ../../content/developer/api/iap.rst:538 +msgid "Returns a :class:`TransactionToken` identifying the pending transaction which can be used to capture (confirm) or cancel said transaction (`iap.odoo.com documentation`_)." +msgstr "" + +#: ../../content/developer/api/iap.rst:0 +#: ../../content/developer/api/iap.rst:0 +#: ../../content/developer/api/iap.rst:0 +#: ../../content/developer/api/iap.rst:0 +#: ../../content/developer/api/iap.rst:0 +#: ../../content/developer/api/iap.rst:0 +#: ../../content/developer/api/iap.rst:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel._check_company:0 +#: ../../../odoo/odoo/http.py:docstring of odoo.http.route:0 +#: ../../../odoo/odoo/http.py:docstring of odoo.http.WebRequest:0 +#: ../../../odoo/odoo/http.py:docstring of odoo.http.WebRequest.csrf_token:0 +#: ../../../odoo/odoo/http.py:docstring of odoo.http.HttpRequest.make_response:0 +#: ../../../odoo/odoo/http.py:docstring of odoo.http.HttpRequest.render:0 +#: ../../../odoo/odoo/http.py:docstring of odoo.http.Response:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Field:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Field:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Char:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Float:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Binary:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Html:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Image:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Monetary:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Selection:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Text:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.add:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Date.context_today:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.end_of:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.start_of:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.subtract:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Date.to_date:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Date.to_string:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.add:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Datetime.context_timestamp:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.end_of:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.start_of:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.subtract:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Datetime.to_datetime:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Datetime.to_string:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Many2one:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.One2many:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Many2many:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Many2many:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Many2oneReference:0 +#: ../../../odoo/odoo/api.py:docstring of odoo.api.returns:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.with_company:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.with_env:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.invalidate_cache:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.create:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.copy:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.default_get:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.name_create:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.write:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.flush:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.browse:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.search:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.name_search:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.read:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.read_group:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.fields_get:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.fields_view_get:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.filtered:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.mapped:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.sorted:0 +#: ../../../odoo/odoo/exceptions.py:docstring of odoo.exceptions.RedirectWarning:0 +#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.browse_ref:0 +#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.ref:0 +#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.browse_ref:0 +#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.ref:0 +#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.browse_ref:0 +#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.ref:0 +#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.Form:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel._populate:0 +#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.cartesian:0 +#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.compute:0 +#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.iterate:0 +#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.randint:0 +#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.randomize:0 +#: ../../content/developer/reference/javascript/qweb.rst:0 +msgid "Parameters" +msgstr "" + +#: ../../content/developer/api/iap.rst:544 +msgid "optional, helps users identify the reason for charges on their account" +msgstr "" + +#: ../../content/developer/api/iap.rst:546 +msgid "optional, allows the user to benefit from trial credits if his database is eligible (see :ref:`Service registration `)" +msgstr "" + +#: ../../content/developer/api/iap.rst:0 +#: ../../../odoo/odoo/http.py:docstring of odoo.http.WebRequest.csrf_token:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../content/developer/reference/addons/mixins.rst:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.add:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.end_of:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.start_of:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.subtract:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Date.to_date:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Date.to_string:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.add:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Datetime.context_timestamp:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.end_of:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.start_of:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.subtract:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Datetime.to_datetime:0 +#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Datetime.to_string:0 +#: ../../../odoo/odoo/api.py:docstring of odoo.api.Environment.company:0 +#: ../../../odoo/odoo/api.py:docstring of odoo.api.Environment.companies:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.create:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.copy:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.default_get:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.name_create:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.browse:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.search:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.name_search:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.read:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.read_group:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.fields_view_get:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.name_get:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.get_metadata:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.filtered:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.mapped:0 +#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.browse_ref:0 +#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.ref:0 +#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.browse_ref:0 +#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.ref:0 +#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.browse_ref:0 +#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.ref:0 +#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel._populate_factories:0 +#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.cartesian:0 +#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.compute:0 +#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.constant:0 +#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.iterate:0 +#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.randint:0 +#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.randomize:0 +#: ../../content/developer/reference/javascript/javascript_reference.rst:0 +#: ../../content/developer/reference/javascript/javascript_reference.rst:0 +#: ../../content/developer/reference/javascript/javascript_reference.rst:0 +#: ../../content/developer/reference/javascript/mobile.rst:0 +#: ../../content/developer/reference/javascript/mobile.rst:0 +#: ../../content/developer/reference/javascript/qweb.rst:0 +msgid "Returns" +msgstr "" + +#: ../../content/developer/api/iap.rst:548 +msgid ":class:`TransactionToken` if the authorization succeeded" +msgstr "" + +#: ../../content/developer/api/iap.rst:0 +#: ../../content/developer/api/iap.rst:0 +#: ../../content/developer/api/iap.rst:0 +#: ../../content/developer/api/iap.rst:0 +#: ../../content/developer/api/iap.rst:0 +msgid "raises" +msgstr "" + +#: ../../content/developer/api/iap.rst:549 +msgid ":class:`~odoo.exceptions.AccessError` if the service token is invalid" +msgstr "" + +#: ../../content/developer/api/iap.rst:550 +msgid ":class:`~odoo.addons.iap.models.iap.InsufficientCreditError` if the account does not have enough credits" +msgstr "" + +#: ../../content/developer/api/iap.rst:551 +msgid "``TypeError`` if the ``credit`` value is not an integer or a float" +msgstr "" + +#: ../../content/developer/api/iap.rst:573 +#: ../../content/developer/api/iap.rst:849 +msgid "Capture" +msgstr "" + +#: ../../content/developer/api/iap.rst:577 +msgid "Confirms the specified transaction, transferring the reserved credits from the user's account to the service provider's." +msgstr "" + +#: ../../content/developer/api/iap.rst:580 +msgid "Capture calls are idempotent: performing capture calls on an already captured transaction has no further effect." +msgstr "" + +#: ../../content/developer/api/iap.rst:585 +msgid "optional parameter to capture a smaller amount of credits than authorized" +msgstr "" + +#: ../../content/developer/api/iap.rst:586 +#: ../../content/developer/api/iap.rst:618 +msgid ":class:`~odoo.exceptions.AccessError`" +msgstr "" + +#: ../../content/developer/api/iap.rst:606 +#: ../../content/developer/api/iap.rst:811 +msgid "Cancel" +msgstr "" + +#: ../../content/developer/api/iap.rst:610 +msgid "Cancels the specified transaction, releasing the hold on the user's credits." +msgstr "" + +#: ../../content/developer/api/iap.rst:613 +msgid "Cancel calls are idempotent: performing capture calls on an already cancelled transaction has no further effect." +msgstr "" + +#: ../../content/developer/api/iap.rst:636 +#: ../../content/developer/howtos/rdtraining/04_basicmodel.rst:127 +msgid "Types" +msgstr "" + +#: ../../content/developer/api/iap.rst:638 +msgid "Exceptions aside, these are *abstract types* used for clarity, you should not care how they are implemented." +msgstr "" + +#: ../../content/developer/api/iap.rst:643 +msgid "String identifying your service on https://iap.odoo.com (production) as well as the account related to your service in the client's database." +msgstr "" + +#: ../../content/developer/api/iap.rst:648 +msgid "Identifier generated for the provider's service. Each key (and service) matches a token of a fixed value, as generated by the service provide." +msgstr "" + +#: ../../content/developer/api/iap.rst:651 +msgid "Multiple types of tokens correspond to multiple services. As an exampe, SMS and MMS could either be the same service (with an MMS being 'worth' multiple SMS) or could be separate services at separate price points." +msgstr "" + +#: ../../content/developer/api/iap.rst:655 +msgid "Your service key *is a secret*, leaking your service key allows other application developers to draw credits bought for your service(s)." +msgstr "" + +#: ../../content/developer/api/iap.rst:661 +msgid "Identifier for a user account." +msgstr "" + +#: ../../content/developer/api/iap.rst:665 +msgid "Transaction identifier, returned by the authorization process and consumed by either capturing or cancelling the transaction." +msgstr "" + +#: ../../content/developer/api/iap.rst:670 +msgid "Raised during transaction authorization if the credits requested are not currently available on the account (either not enough credits or too many pending transactions/existing holds)." +msgstr "" + +#: ../../content/developer/api/iap.rst:677 +msgid "Raised by:" +msgstr "" + +#: ../../content/developer/api/iap.rst:679 +msgid "any operation to which a service token is required, if the service token is invalid; or" +msgstr "" + +#: ../../content/developer/api/iap.rst:680 +msgid "any failure in an inter-server call. (typically, in :func:`~odoo.addons.iap.tools.iap_tools.iap_jsonrpc`)." +msgstr "" + +#: ../../content/developer/api/iap.rst:685 +msgid "Raised by any unexpected behaviour at the discretion of the App developer (*you*)." +msgstr "" + +#: ../../content/developer/api/iap.rst:689 +msgid "Test the API" +msgstr "" + +#: ../../content/developer/api/iap.rst:691 +msgid "In order to test the developed app, we propose a sandbox platform that allows you to:" +msgstr "" + +#: ../../content/developer/api/iap.rst:693 +msgid "Test the whole flow from the client's point of view - Actual services and transactions that can be consulted. (again this requires to change the endpoint, see the danger note in :ref:`Service `)." +msgstr "" + +#: ../../content/developer/api/iap.rst:696 +msgid "Test the API." +msgstr "" + +#: ../../content/developer/api/iap.rst:698 +msgid "The latter consists in specific tokens that will work on **IAP-Sandbox only**." +msgstr "" + +#: ../../content/developer/api/iap.rst:700 +msgid "Token ``000000``: Represents a non-existing account. Returns an :class:`~odoo.addons.iap.tools.iap_tools.InsufficientCreditError` on authorize attempt." +msgstr "" + +#: ../../content/developer/api/iap.rst:702 +msgid "Token ``000111``: Represents an account without sufficient credits to perform any service. Returns an :class:`~odoo.addons.iap.tools.iap_tools.InsufficientCreditError` on authorize attempt." +msgstr "" + +#: ../../content/developer/api/iap.rst:704 +msgid "Token ``111111``: Represents an account with enough credits to perform any service. An authorize attempt will return a dummy transaction token that is processed by the capture and cancel routes." +msgstr "" + +#: ../../content/developer/api/iap.rst:710 +msgid "Those tokens are only active on the IAP-Sanbox server." +msgstr "" + +#: ../../content/developer/api/iap.rst:711 +msgid "The service key is completely ignored with this flow, If you want to run a robust test of your service, you should ignore these tokens." +msgstr "" + +#: ../../content/developer/api/iap.rst:715 +msgid "Odoo Helpers" +msgstr "" + +#: ../../content/developer/api/iap.rst:717 +msgid "For convenience, if you are implementing your service using Odoo the ``iap`` module provides a few helpers to make IAP flow even simpler." +msgstr "" + +#: ../../content/developer/api/iap.rst:723 +msgid "Charging" +msgstr "" + +#: ../../content/developer/api/iap.rst:727 +msgid "A *context manager* for authorizing and automatically capturing or cancelling transactions for use in the backend/proxy." +msgstr "" + +#: ../../content/developer/api/iap.rst:730 +msgid "Works much like e.g. a cursor context manager:" +msgstr "" + +#: ../../content/developer/api/iap.rst:732 +msgid "immediately authorizes a transaction with the specified parameters;" +msgstr "" + +#: ../../content/developer/api/iap.rst:733 +msgid "executes the ``with`` body;" +msgstr "" + +#: ../../content/developer/api/iap.rst:734 +msgid "if the body executes in full without error, captures the transaction;" +msgstr "" + +#: ../../content/developer/api/iap.rst:735 +msgid "otherwise cancels it." +msgstr "" + +#: ../../content/developer/api/iap.rst:737 +#: ../../content/developer/api/iap.rst:776 +#: ../../content/developer/api/iap.rst:817 +#: ../../content/developer/api/iap.rst:855 +msgid "used to retrieve the ``iap.endpoint`` configuration key" +msgstr "" + +#: ../../content/developer/api/iap.rst:774 +msgid "Will authorize everything." +msgstr "" + +#: ../../content/developer/api/iap.rst:815 +msgid "Will cancel an authorized transaction." +msgstr "" + +#: ../../content/developer/api/iap.rst:853 +msgid "Will capture the amount ``credit`` on the given transaction." +msgstr "" + +#: ../../content/developer/cli.rst:6 +msgid "Command-line interface (CLI)" +msgstr "" + +#: ../../content/developer/cli.rst:8 +msgid "The CLI :dfn:`command-line interface` offers several functionalities related to Odoo. You can use it to :ref:`run the server `, :ref:`launch Odoo as a Python console environment `, :ref:`scaffold an Odoo module `, :ref:`populate a database `, or :ref:`count the number of lines of code `." +msgstr "" + +#: ../../content/developer/cli.rst:15 +msgid "The command to use to call the CLI depends on how you installed Odoo. In the examples below, we assume that you are :ref:`running Odoo from source ` with the :file:`odoo-bin` file. If you installed Odoo :ref:`from a distribution package ` or :ref:`with Docker `, you must adapt the command." +msgstr "" + +#: ../../content/developer/cli.rst:23 +msgid "Run Odoo from source" +msgstr "" + +#: ../../content/developer/cli.rst:25 +msgid "Navigate to the root of the directory where you downloaded the source files of Odoo Community." +msgstr "" + +#: ../../content/developer/cli.rst:27 +msgid "Run all CLI commands with :command:`./odoo-bin`" +msgstr "" + +#: ../../content/developer/cli.rst:29 +msgid "Odoo was installed from a distribution package" +msgstr "" + +#: ../../content/developer/cli.rst:31 +msgid "When Odoo was installed, an executable named `odoo` was added to your user's PATH. Replace all occurrences of :command:`odoo-bin` with :command:`odoo` in the examples below." +msgstr "" + +#: ../../content/developer/cli.rst:34 +msgid "Odoo was installed with Docker" +msgstr "" + +#: ../../content/developer/cli.rst:36 +msgid "Please refer to the `documentation of the official Docker image of Odoo `_." +msgstr "" + +#: ../../content/developer/cli.rst:42 +msgid "Running the server" +msgstr "" + +#: ../../content/developer/cli.rst:48 +msgid "database(s) used when installing or updating modules. Providing a comma-separated list restrict access to databases provided in list." +msgstr "" + +#: ../../content/developer/cli.rst:52 +msgid "For advanced database options, take a look :ref:`below `." +msgstr "" + +#: ../../content/developer/cli.rst:56 +msgid "comma-separated list of modules to install before running the server (requires :option:`-d`)." +msgstr "" + +#: ../../content/developer/cli.rst:61 +msgid "comma-separated list of modules to update before running the server (requires :option:`-d`)." +msgstr "" + +#: ../../content/developer/cli.rst:66 +msgid "comma-separated list of directories in which modules are stored. These directories are scanned for modules." +msgstr "" + +#: ../../content/developer/cli.rst:73 +msgid "provide an alternate :ref:`configuration file `" +msgstr "" + +#: ../../content/developer/cli.rst:77 +msgid "saves the server configuration to the current configuration file (:file:`{$HOME}/.odoorc` by default, and can be overridden using :option:`-c`)." +msgstr "" + +#: ../../content/developer/cli.rst:83 +msgid "disables demo data loading for modules installed comma-separated, use ``all`` for all modules." +msgstr "" + +#: ../../content/developer/cli.rst:88 +msgid "runs tests after module installation" +msgstr "" + +#: ../../content/developer/cli.rst:92 +msgid "Comma-separated list of specs to filter which tests to execute. Enable unit tests if set." +msgstr "" + +#: ../../content/developer/cli.rst:94 +msgid "Example: `--test-tags :TestClass.test_func,/test_module,external`" +msgstr "" + +#: ../../content/developer/cli.rst:96 +msgid "The `-` specifies if we want to include or exclude tests matching this spec." +msgstr "" + +#: ../../content/developer/cli.rst:97 +msgid "The tag will match tags added on a class with a :func:`~odoo.tests.common.tagged` decorator (all :ref:`test classes ` have `standard` and `at_install` tags until explicitly removed, see the decorator documentation)." +msgstr "" + +#: ../../content/developer/cli.rst:100 +msgid "`*` will match all tags." +msgstr "" + +#: ../../content/developer/cli.rst:101 +msgid "If tag is omitted on include mode, its value is `standard`." +msgstr "" + +#: ../../content/developer/cli.rst:102 +msgid "If tag is omitted on exclude mode, its value is `*`." +msgstr "" + +#: ../../content/developer/cli.rst:103 +msgid "The module, class, and method will respectively match the module name, test class name and test method name." +msgstr "" + +#: ../../content/developer/cli.rst:105 +msgid "Filtering and executing the tests happens twice: right after each module installation/update and at the end of the modules loading. At each stage tests are filtered by `--test-tags` specs and additionally by dynamic specs `at_install` and `post_install` correspondingly." +msgstr "" + +#: ../../content/developer/cli.rst:113 +msgid "Specify directory where to write screenshots when an HttpCase.browser_js test fails. It defaults to :file:`/tmp/odoo_tests/{db_name}/screenshots`" +msgstr "" + +#: ../../content/developer/cli.rst:118 +msgid "Enable screencasts and specify directory where to write screencasts files. The ``ffmpeg`` utility needs to be installed to encode frames into a video file. Otherwise frames will be kept instead of the video file." +msgstr "" + +#: ../../content/developer/cli.rst:125 +msgid "Database" +msgstr "" + +#: ../../content/developer/cli.rst:129 +msgid "database username, used to connect to PostgreSQL." +msgstr "" + +#: ../../content/developer/cli.rst:133 +msgid "database password, if using `password authentication`_." +msgstr "" + +#: ../../content/developer/cli.rst:137 +msgid "host for the database server" +msgstr "" + +#: ../../content/developer/cli.rst:139 +msgid "``localhost`` on Windows" +msgstr "" + +#: ../../content/developer/cli.rst:140 +msgid "UNIX socket otherwise" +msgstr "" + +#: ../../content/developer/cli.rst:144 +msgid "port the database listens on, defaults to 5432" +msgstr "" + +#: ../../content/developer/cli.rst:148 +msgid "hides databases that do not match ````. The filter is a `regular expression`_, with the additions that:" +msgstr "" + +#: ../../content/developer/cli.rst:151 +msgid "``%h`` is replaced by the whole hostname the request is made on." +msgstr "" + +#: ../../content/developer/cli.rst:152 +msgid "``%d`` is replaced by the subdomain the request is made on, with the exception of ``www`` (so domain ``odoo.com`` and ``www.odoo.com`` both match the database ``odoo``)." +msgstr "" + +#: ../../content/developer/cli.rst:156 +msgid "These operations are case sensitive. Add option ``(?i)`` to match all databases (so domain ``odoo.com`` using ``(?i)%d`` matches the database ``Odoo``)." +msgstr "" + +#: ../../content/developer/cli.rst:160 +msgid "Since version 11, it's also possible to restrict access to a given database listen by using the --database parameter and specifying a comma-separated list of databases" +msgstr "" + +#: ../../content/developer/cli.rst:164 +msgid "When combining the two parameters, db-filter supersedes the comma-separated database list for restricting database list, while the comma-separated list is used for performing requested operations like upgrade of modules." +msgstr "" + +#: ../../content/developer/cli.rst:172 +msgid "Restrict access to databases whose name starts with 11" +msgstr "" + +#: ../../content/developer/cli.rst:178 +msgid "Restrict access to only two databases, 11firstdatabase and 11seconddatabase" +msgstr "" + +#: ../../content/developer/cli.rst:184 +msgid "Restrict access to only two databases, 11firstdatabase and 11seconddatabase, and update base module on one database: 11firstdatabase. If database 11seconddatabase doesn't exist, the database is created and base modules is installed" +msgstr "" + +#: ../../content/developer/cli.rst:193 +msgid "Restrict access to databases whose name starts with 11, and update base module on one database: 11firstdatabase. If database 11seconddatabase doesn't exist, the database is created and base modules is installed" +msgstr "" + +#: ../../content/developer/cli.rst:200 +msgid "when creating new databases from the database-management screens, use the specified `template database`_. Defaults to ``template0``." +msgstr "" + +#: ../../content/developer/cli.rst:205 +msgid "Path to the PostgreSQL binaries that are used by the database manager to dump and restore databases. You have to specify this option only if these binaries are located in a non-standard directory." +msgstr "" + +#: ../../content/developer/cli.rst:211 +msgid "Suppresses the ability to list databases available on the system" +msgstr "" + +#: ../../content/developer/cli.rst:215 +msgid "Control the SSL security of the connection between Odoo and PostgreSQL. Value should be one of 'disable', 'allow', 'prefer', 'require', 'verify-ca' or 'verify-full' Default value is 'prefer'" +msgstr "" + +#: ../../content/developer/cli.rst:223 +msgid "Emails" +msgstr "" + +#: ../../content/developer/cli.rst:227 +msgid "Email address used as when Odoo needs to send mails" +msgstr "" + +#: ../../content/developer/cli.rst:231 +msgid "Address of the SMTP server to connect to in order to send mails" +msgstr "" + +#: ../../content/developer/cli.rst:237 +msgid "If set, odoo should use SSL/STARTSSL SMTP connections" +msgstr "" + +#: ../../content/developer/cli.rst:241 +msgid "Username to connect to the SMTP server" +msgstr "" + +#: ../../content/developer/cli.rst:245 +msgid "Password to connect to the SMTP server" +msgstr "" + +#: ../../content/developer/cli.rst:250 +msgid "Internationalisation" +msgstr "" + +#: ../../content/developer/cli.rst:252 +msgid "Use these options to translate Odoo to another language. See i18n section of the user manual. Option '-d' is mandatory. Option '-l' is mandatory in case of importation" +msgstr "" + +#: ../../content/developer/cli.rst:258 +msgid "specifies the languages (separated by commas) for the translations you want to be loaded" +msgstr "" + +#: ../../content/developer/cli.rst:263 +msgid "specify the language of the translation file. Use it with --i18n-export or --i18n-import" +msgstr "" + +#: ../../content/developer/cli.rst:268 +msgid "export all sentences to be translated to a CSV file, a PO file or a TGZ archive and exit." +msgstr "" + +#: ../../content/developer/cli.rst:273 +msgid "import a CSV or a PO file with translations and exit. The '-l' option is required." +msgstr "" + +#: ../../content/developer/cli.rst:278 +msgid "overwrites existing translation terms on updating a module or importing a CSV or a PO file." +msgstr "" + +#: ../../content/developer/cli.rst:283 +msgid "specify modules to export. Use in combination with --i18n-export" +msgstr "" + +#: ../../content/developer/cli.rst:288 +msgid "Advanced Options" +msgstr "" + +#: ../../content/developer/cli.rst:293 +msgid "Developer features" +msgstr "" + +#: ../../content/developer/cli.rst:297 +msgid "``all``: all the features below are activated" +msgstr "" + +#: ../../content/developer/cli.rst:299 +msgid "``xml``: read template qweb from xml file directly instead of database. Once a template has been modified in database, it will be not be read from the xml file until the next update/init." +msgstr "" + +#: ../../content/developer/cli.rst:303 +msgid "``reload``: restart server when python file are updated (may not be detected depending on the text editor used)" +msgstr "" + +#: ../../content/developer/cli.rst:306 +msgid "``qweb``: break in the evaluation of qweb template when a node contains ``t-debug='debugger'``" +msgstr "" + +#: ../../content/developer/cli.rst:308 +msgid "``(i)p(u)db``: start the chosen python debugger in the code when an unexpected error is raised before logging and returning the error." +msgstr "" + +#: ../../content/developer/cli.rst:315 +msgid "HTTP" +msgstr "" + +#: ../../content/developer/cli.rst:319 +msgid "do not start the HTTP or long-polling workers (may still start :ref:`cron ` workers)" +msgstr "" + +#: ../../content/developer/cli.rst:322 +msgid "has no effect if :option:`--test-enable` is set, as tests require an accessible HTTP server" +msgstr "" + +#: ../../content/developer/cli.rst:327 +msgid "TCP/IP address on which the HTTP server listens, defaults to ``0.0.0.0`` (all addresses)" +msgstr "" + +#: ../../content/developer/cli.rst:332 +msgid "Port on which the HTTP server listens, defaults to 8069." +msgstr "" + +#: ../../content/developer/cli.rst:336 +msgid "TCP port for long-polling connections in multiprocessing or gevent mode, defaults to 8072. Not used in default (threaded) mode." +msgstr "" + +#: ../../content/developer/cli.rst:341 +msgid "enables the use of ``X-Forwarded-*`` headers through `Werkzeug's proxy support`_." +msgstr "" + +#: ../../content/developer/cli.rst:344 +msgid "proxy mode *must not* be enabled outside of a reverse proxy scenario" +msgstr "" + +#: ../../content/developer/cli.rst:350 +msgid "Logging" +msgstr "" + +#: ../../content/developer/cli.rst:352 +msgid "By default, Odoo displays all logging of level_ ``info`` except for workflow logging (``warning`` only), and log output is sent to ``stdout``. Various options are available to redirect logging to other destinations and to customize the amount of logging output." +msgstr "" + +#: ../../content/developer/cli.rst:359 +msgid "sends logging output to the specified file instead of stdout. On Unix, the file `can be managed by external log rotation programs `_ and will automatically be reopened when replaced" +msgstr "" + +#: ../../content/developer/cli.rst:366 +msgid "logs to the system's event logger: `syslog on unices `_ and `the Event Log on Windows `_." +msgstr "" + +#: ../../content/developer/cli.rst:369 +msgid "Neither is configurable" +msgstr "" + +#: ../../content/developer/cli.rst:373 +msgid "logs to the ``ir.logging`` model (``ir_logging`` table) of the specified database. The database can be the name of a database in the \"current\" PostgreSQL, or `a PostgreSQL URI`_ for e.g. log aggregation." +msgstr "" + +#: ../../content/developer/cli.rst:379 +msgid ":samp:`{LOGGER}:{LEVEL}`, enables ``LOGGER`` at the provided ``LEVEL`` e.g. ``odoo.models:DEBUG`` will enable all logging messages at or above ``DEBUG`` level in the models." +msgstr "" + +#: ../../content/developer/cli.rst:383 +msgid "The colon ``:`` is mandatory" +msgstr "" + +#: ../../content/developer/cli.rst:384 +msgid "The logger can be omitted to configure the root (default) handler" +msgstr "" + +#: ../../content/developer/cli.rst:385 +msgid "If the level is omitted, the logger is set to ``INFO``" +msgstr "" + +#: ../../content/developer/cli.rst:387 +msgid "The option can be repeated to configure multiple loggers e.g." +msgstr "" + +#: ../../content/developer/cli.rst:395 +msgid "enable DEBUG logging for RPC requests, equivalent to ``--log-handler=odoo.http.rpc.request:DEBUG``" +msgstr "" + +#: ../../content/developer/cli.rst:400 +msgid "enable DEBUG logging for RPC responses, equivalent to ``--log-handler=odoo.http.rpc.response:DEBUG``" +msgstr "" + +#: ../../content/developer/cli.rst:405 +msgid "enables DEBUG logging of HTTP requests and responses, equivalent to ``--log-handler=odoo.http:DEBUG``" +msgstr "" + +#: ../../content/developer/cli.rst:410 +msgid "enables DEBUG logging of SQL querying, equivalent to ``--log-handler=odoo.sql_db:DEBUG``" +msgstr "" + +#: ../../content/developer/cli.rst:415 +msgid "Shortcut to more easily set predefined levels on specific loggers. \"real\" levels (``critical``, ``error``, ``warn``, ``debug``) are set on the ``odoo`` and ``werkzeug`` loggers (except for ``debug`` which is only set on ``odoo``)." +msgstr "" + +#: ../../content/developer/cli.rst:420 +msgid "Odoo also provides debugging pseudo-levels which apply to different sets of loggers:" +msgstr "" + +#: ../../content/developer/cli.rst:425 +msgid "``debug_sql``" +msgstr "" + +#: ../../content/developer/cli.rst:424 +msgid "sets the SQL logger to ``debug``" +msgstr "" + +#: ../../content/developer/cli.rst:426 +msgid "equivalent to ``--log-sql``" +msgstr "" + +#: ../../content/developer/cli.rst:429 +msgid "``debug_rpc``" +msgstr "" + +#: ../../content/developer/cli.rst:428 +msgid "sets the ``odoo`` and HTTP request loggers to ``debug``" +msgstr "" + +#: ../../content/developer/cli.rst:430 +msgid "equivalent to ``--log-level debug --log-request``" +msgstr "" + +#: ../../content/developer/cli.rst:435 +msgid "``debug_rpc_answer``" +msgstr "" + +#: ../../content/developer/cli.rst:432 +msgid "sets the ``odoo`` and HTTP request and response loggers to ``debug``" +msgstr "" + +#: ../../content/developer/cli.rst:435 +msgid "equivalent to ``--log-level debug --log-request --log-response``" +msgstr "" + +#: ../../content/developer/cli.rst:439 +msgid "In case of conflict between :option:`--log-level` and :option:`--log-handler`, the latter is used" +msgstr "" + +#: ../../content/developer/cli.rst:445 +msgid "Multiprocessing" +msgstr "" + +#: ../../content/developer/cli.rst:449 +msgid "if ``count`` is not 0 (the default), enables multiprocessing and sets up the specified number of HTTP workers (sub-processes processing HTTP and RPC requests)." +msgstr "" + +#: ../../content/developer/cli.rst:453 +msgid "multiprocessing mode is only available on Unix-based systems" +msgstr "" + +#: ../../content/developer/cli.rst:455 +msgid "A number of options allow limiting and recycling workers:" +msgstr "" + +#: ../../content/developer/cli.rst:459 +msgid "Number of requests a worker will process before being recycled and restarted." +msgstr "" + +#: ../../content/developer/cli.rst:462 +msgid "Defaults to *8196*." +msgstr "" + +#: ../../content/developer/cli.rst:466 +msgid "Maximum allowed virtual memory per worker. If the limit is exceeded, the worker is killed and recycled at the end of the current request." +msgstr "" + +#: ../../content/developer/cli.rst:469 +msgid "Defaults to *2048MiB*." +msgstr "" + +#: ../../content/developer/cli.rst:473 +msgid "Hard limit on virtual memory, any worker exceeding the limit will be immediately killed without waiting for the end of the current request processing." +msgstr "" + +#: ../../content/developer/cli.rst:477 +msgid "Defaults to *2560MiB*." +msgstr "" + +#: ../../content/developer/cli.rst:481 +msgid "Prevents the worker from using more than CPU seconds for each request. If the limit is exceeded, the worker is killed." +msgstr "" + +#: ../../content/developer/cli.rst:484 +msgid "Defaults to *60*." +msgstr "" + +#: ../../content/developer/cli.rst:488 +msgid "Prevents the worker from taking longer than seconds to process a request. If the limit is exceeded, the worker is killed." +msgstr "" + +#: ../../content/developer/cli.rst:491 +msgid "Differs from :option:`--limit-time-cpu` in that this is a \"wall time\" limit including e.g. SQL queries." +msgstr "" + +#: ../../content/developer/cli.rst:494 +msgid "Defaults to *120*." +msgstr "" + +#: ../../content/developer/cli.rst:498 +msgid "number of workers dedicated to :ref:`cron ` jobs. Defaults to *2*. The workers are threads in multi-threading mode and processes in multi-processing mode." +msgstr "" + +#: ../../content/developer/cli.rst:501 +msgid "For multi-processing mode, this is in addition to the HTTP worker processes." +msgstr "" + +#: ../../content/developer/cli.rst:506 +msgid "Configuration file" +msgstr "" + +#: ../../content/developer/cli.rst:510 +msgid "Most of the command-line options can also be specified via a configuration file. Most of the time, they use similar names with the prefix ``-`` removed and other ``-`` are replaced by ``_`` e.g. :option:`--db-template` becomes ``db_template``." +msgstr "" + +#: ../../content/developer/cli.rst:515 +msgid "Some conversions don't match the pattern:" +msgstr "" + +#: ../../content/developer/cli.rst:517 +msgid ":option:`--db-filter` becomes ``dbfilter``" +msgstr "" + +#: ../../content/developer/cli.rst:518 +msgid ":option:`--no-http` corresponds to the ``http_enable`` boolean" +msgstr "" + +#: ../../content/developer/cli.rst:519 +msgid "logging presets (all options starting with ``--log-`` except for :option:`--log-handler` and :option:`--log-db`) just add content to ``log_handler``, use that directly in the configuration file" +msgstr "" + +#: ../../content/developer/cli.rst:522 +msgid ":option:`--smtp` is stored as ``smtp_server``" +msgstr "" + +#: ../../content/developer/cli.rst:523 +msgid ":option:`--database` is stored as ``db_name``" +msgstr "" + +#: ../../content/developer/cli.rst:524 +msgid ":option:`--i18n-import` and :option:`--i18n-export` aren't available at all from configuration files" +msgstr "" + +#: ../../content/developer/cli.rst:527 +msgid "The default configuration file is :file:`{$HOME}/.odoorc` which can be overridden using :option:`--config `. Specifying :option:`--save ` will save the current configuration state back to that file. The configuration items relative to the command-line are to be specified in the section ``[options]``." +msgstr "" + +#: ../../content/developer/cli.rst:533 +msgid "Here is a sample file:" +msgstr "" + +#: ../../content/developer/cli.rst:558 +msgid "Shell" +msgstr "" + +#: ../../content/developer/cli.rst:560 +msgid "Odoo command-line also allows to launch odoo as a python console environment. This enables direct interaction with the :ref:`orm ` and its functionalities." +msgstr "" + +#: ../../content/developer/cli.rst:570 +msgid "Specify a preferred REPL to use in shell mode." +msgstr "" + +#: ../../content/developer/cli.rst:576 +msgid "Scaffolding" +msgstr "" + +#: ../../content/developer/cli.rst:580 +msgid "Scaffolding is the automated creation of a skeleton structure to simplify bootstrapping (of new modules, in the case of Odoo). While not necessary it avoids the tedium of setting up basic structures and looking up what all starting requirements are." +msgstr "" + +#: ../../content/developer/cli.rst:585 +msgid "Scaffolding is available via the :command:`odoo-bin scaffold` subcommand." +msgstr "" + +#: ../../content/developer/cli.rst:593 +msgid "the name of the module to create, may munged in various manners to generate programmatic names (e.g. module directory name, model names, …)" +msgstr "" + +#: ../../content/developer/cli.rst:598 +msgid "directory in which to create the new module, defaults to the current directory" +msgstr "" + +#: ../../content/developer/cli.rst:603 +msgid "a template directory, files are passed through jinja2_ then copied to the ``destination`` directory" +msgstr "" + +#: ../../content/developer/cli.rst:607 +msgid "This will create module *my_module* in directory */addons/*." +msgstr "" + +#: ../../content/developer/cli.rst:612 +msgid "Database Population" +msgstr "" + +#: ../../content/developer/cli.rst:616 +msgid "Odoo CLI supports database population features. If the feature is :ref:`implemented on a given model `, it allows automatic data generation of the model's records to test your modules in databases containing non-trivial amounts of records." +msgstr "" + +#: ../../content/developer/cli.rst:626 +msgid "list of models for which the database should be filled" +msgstr "" + +#: ../../content/developer/cli.rst:630 +msgid "population size, the actual records number depends on the model's `_populate_sizes` attribute. The generated records content is specified by the :meth:`~odoo.models._populate_factories` method of a given model (cf. the :file:`populate` folder of modules for further details)." +msgstr "" + +#: ../../content/developer/cli.rst:636 +msgid ":ref:`reference/testing/populate`" +msgstr "" + +#: ../../content/developer/cli.rst:641 +msgid "Cloc" +msgstr "" + +#: ../../content/developer/cli.rst:645 +msgid "Odoo Cloc is a tool to count the number of relevant lines written in Python, Javascript or XML. This can be used as a rough metric for pricing maintenance of extra modules." +msgstr "" + +#: ../../content/developer/cli.rst:650 +msgid "Command-line options" +msgstr "" + +#: ../../content/developer/cli.rst:655 +msgid "Process the code of all extra modules installed on the provided database, and of all server actions and computed fields manually created in the provided database." +msgstr "" + +#: ../../content/developer/cli.rst:657 +msgid "The :option:`--addons-path` option is required to specify the path(s) to the module folder(s)." +msgstr "" + +#: ../../content/developer/cli.rst:660 +msgid "If combined with :option:`--path`, the count will be that of the sum of both options' results (with possible overlaps). At least one of these two options is required to specify which code to process." +msgstr "" + +#: ../../content/developer/cli.rst:667 +msgid ":ref:`reference/cmdline/cloc/database-option`" +msgstr "" + +#: ../../content/developer/cli.rst:672 +msgid "Process the files in the provided path." +msgstr "" + +#: ../../content/developer/cli.rst:675 +msgid "If combined with :option:`--database`, the count will be that of the sum of both options' results (with possible overlaps). At least one of these two options is required to specify which code to process." +msgstr "" + +#: ../../content/developer/cli.rst:682 +msgid "Multiple paths can be provided by repeating the option." +msgstr "" + +#: ../../content/developer/cli.rst:689 +msgid ":ref:`reference/cmdline/cloc/path-option`" +msgstr "" + +#: ../../content/developer/cli.rst:695 +msgid "Comma-separated list of directories in which modules are stored. These directories are scanned for modules." +msgstr "" + +#: ../../content/developer/cli.rst:696 +msgid "Required if the :option:`--database` option is used." +msgstr "" + +#: ../../content/developer/cli.rst:701 +msgid "Specify a configuration file to use in place of the :option:`--addons-path` option." +msgstr "" + +#: ../../content/developer/cli.rst:710 +msgid "Show the details of lines counted for each file." +msgstr "" + +#: ../../content/developer/cli.rst:714 +msgid "Processed files" +msgstr "" + +#: ../../content/developer/cli.rst:719 +msgid "With the :option:`--database` option" +msgstr "" + +#: ../../content/developer/cli.rst:721 +msgid "Odoo Cloc counts the lines in each file of extra installed modules in a given database. In addition, it counts the Python lines of server actions and custom computed fields that have been directly created in the database or imported." +msgstr "" + +#: ../../content/developer/cli.rst:726 +msgid "Some files are excluded from the count by default:" +msgstr "" + +#: ../../content/developer/cli.rst:728 +msgid "The manifest (:file:`__manifest__.py` or :file:`__openerp__.py`)" +msgstr "" + +#: ../../content/developer/cli.rst:729 +msgid "The contents of the folder :file:`static/lib`" +msgstr "" + +#: ../../content/developer/cli.rst:730 +msgid "The tests defined in the folder :file:`tests` and :file:`static/tests`" +msgstr "" + +#: ../../content/developer/cli.rst:731 +msgid "The migrations scripts defined in the folder :file:`migrations`" +msgstr "" + +#: ../../content/developer/cli.rst:732 +msgid "The XML files declared in the ``demo`` or ``demo_xml`` sections of the manifest" +msgstr "" + +#: ../../content/developer/cli.rst:734 +msgid "For special cases, a list of files that should be ignored by Odoo Cloc can be defined per module. This is specified by the ``cloc_exclude`` entry of the manifest:" +msgstr "" + +#: ../../content/developer/cli.rst:746 +msgid "The pattern ``**/*`` can be used to ignore an entire module. This can be useful to exclude a module from maintenance service costs." +msgstr "" + +#: ../../content/developer/cli.rst:748 +msgid "For more information about the pattern syntax, see `glob `_." +msgstr "" + +#: ../../content/developer/cli.rst:755 +msgid "With the :option:`--path` option" +msgstr "" + +#: ../../content/developer/cli.rst:757 +msgid "This method works the same as with the :ref:`--database option ` if a manifest file is present in the given folder. Otherwise, it counts all files." +msgstr "" + +#: ../../content/developer/cli.rst:763 +msgid "Identifying Extra Modules" +msgstr "" + +#: ../../content/developer/cli.rst:765 +msgid "To distinguish between standard and extra modules, Odoo Cloc uses the following heuristic: modules that are located (real file system path, after following symbolic links) in the same parent directory as the ``base``, ``web`` or ``web_enterprise`` standard modules are considered standard. Other modules are treated as extra modules." +msgstr "" + +#: ../../content/developer/cli.rst:772 +msgid "Error Handling" +msgstr "" + +#: ../../content/developer/cli.rst:774 +msgid "Some file cannot be counted by Odoo Cloc. Those file are reported at the end of the output." +msgstr "" + +#: ../../content/developer/cli.rst:778 +msgid "Max file size exceeded" +msgstr "" + +#: ../../content/developer/cli.rst:780 +msgid "Odoo Cloc rejects any file larger than 25MB. Usually, source files are smaller than 1 MB. If a file is rejected, it may be:" +msgstr "" + +#: ../../content/developer/cli.rst:783 +msgid "A generated XML file that contains lots of data. It should be excluded in the manifest." +msgstr "" + +#: ../../content/developer/cli.rst:784 +msgid "A JavaScript library that should be placed in the :file:`static/lib` folder." +msgstr "" + +#: ../../content/developer/cli.rst:787 +msgid "Syntax Error" +msgstr "" + +#: ../../content/developer/cli.rst:789 +msgid "Odoo Cloc cannot count the lines of code of a Python file with a syntax problem. If an extra module contains such files, they should be fixed to allow the module to load. If the module works despite the presence of those files, they are probably not loaded and should therefore be removed from the module, or at least excluded in the manifest via ``cloc_exclude``." +msgstr "" + #: ../../content/developer/glossary.rst:5 msgid "Glossary" msgstr "" @@ -208,7 +3031,6 @@ msgstr "" #: ../../content/developer/howtos/backend.rst:74 #: ../../content/developer/howtos/rdtraining/01_architecture.rst:85 -#: ../../content/developer/misc/other/guidelines.rst:32 msgid "Module structure" msgstr "" @@ -805,7 +3627,7 @@ msgstr "" #: ../../content/developer/howtos/backend.rst:587 #: ../../content/developer/howtos/rdtraining/13_inheritance.rst:205 -#: ../../content/developer/reference/addons/views.rst:282 +#: ../../content/developer/reference/addons/views.rst:284 #: ../../content/developer/reference/javascript/qweb.rst:530 msgid "``replace``" msgstr "" @@ -817,7 +3639,7 @@ msgstr "" #: ../../content/developer/howtos/backend.rst:589 #: ../../content/developer/howtos/rdtraining/13_inheritance.rst:207 -#: ../../content/developer/reference/addons/views.rst:288 +#: ../../content/developer/reference/addons/views.rst:290 #: ../../content/developer/reference/javascript/qweb.rst:524 msgid "``before``" msgstr "" @@ -829,7 +3651,7 @@ msgstr "" #: ../../content/developer/howtos/backend.rst:591 #: ../../content/developer/howtos/rdtraining/13_inheritance.rst:209 -#: ../../content/developer/reference/addons/views.rst:285 +#: ../../content/developer/reference/addons/views.rst:287 #: ../../content/developer/reference/javascript/qweb.rst:526 msgid "``after``" msgstr "" @@ -841,7 +3663,7 @@ msgstr "" #: ../../content/developer/howtos/backend.rst:595 #: ../../content/developer/howtos/rdtraining/13_inheritance.rst:213 -#: ../../content/developer/reference/addons/views.rst:308 +#: ../../content/developer/reference/addons/views.rst:310 #: ../../content/developer/reference/javascript/qweb.rst:535 msgid "``attributes``" msgstr "" @@ -1093,39 +3915,39 @@ msgid "Tree views can take supplementary attributes to further customize their b msgstr "" #: ../../content/developer/howtos/backend.rst:885 -#: ../../content/developer/reference/addons/views.rst:978 -#: ../../content/developer/reference/addons/views.rst:1413 -#: ../../content/developer/reference/addons/views.rst:1534 +#: ../../content/developer/reference/addons/views.rst:1023 +#: ../../content/developer/reference/addons/views.rst:1436 +#: ../../content/developer/reference/addons/views.rst:1567 msgid "``decoration-{$name}``" msgstr "" #: ../../content/developer/howtos/backend.rst:861 -#: ../../content/developer/reference/addons/views.rst:965 -#: ../../content/developer/reference/addons/views.rst:1409 +#: ../../content/developer/reference/addons/views.rst:1010 +#: ../../content/developer/reference/addons/views.rst:1432 msgid "allow changing the style of a row's text based on the corresponding record's attributes." msgstr "" #: ../../content/developer/howtos/backend.rst:864 #: ../../content/developer/reference/addons/views.rst:104 -#: ../../content/developer/reference/addons/views.rst:968 +#: ../../content/developer/reference/addons/views.rst:1013 msgid "Values are Python expressions. For each record, the expression is evaluated with the record's attributes as context values and if ``true``, the corresponding style is applied to the row. Here are some of the other values available in the context:" msgstr "" #: ../../content/developer/howtos/backend.rst:869 #: ../../content/developer/reference/addons/views.rst:109 -#: ../../content/developer/reference/addons/views.rst:973 +#: ../../content/developer/reference/addons/views.rst:1018 msgid "``uid``: the id of the current user," msgstr "" #: ../../content/developer/howtos/backend.rst:870 #: ../../content/developer/reference/addons/views.rst:110 -#: ../../content/developer/reference/addons/views.rst:974 +#: ../../content/developer/reference/addons/views.rst:1019 msgid "``today``: the current local date as a string of the form ``YYYY-MM-DD``," msgstr "" #: ../../content/developer/howtos/backend.rst:871 #: ../../content/developer/reference/addons/views.rst:111 -#: ../../content/developer/reference/addons/views.rst:975 +#: ../../content/developer/reference/addons/views.rst:1020 msgid "``now``: same as ``today`` with the addition of the current time. This value is formatted as ``YYYY-MM-DD hh:mm:ss``." msgstr "" @@ -1134,7 +3956,7 @@ msgid "``{$name}`` can be ``bf`` (``font-weight: bold``), ``it`` (``font-style: msgstr "" #: ../../content/developer/howtos/backend.rst:890 -#: ../../content/developer/reference/addons/views.rst:1393 +#: ../../content/developer/reference/addons/views.rst:1416 msgid "``editable``" msgstr "" @@ -1159,9 +3981,9 @@ msgid "Displays records as calendar events. Their root element is ```` msgstr "" #: ../../content/developer/howtos/backend.rst:907 -#: ../../content/developer/reference/addons/views.rst:410 -#: ../../content/developer/reference/addons/views.rst:962 -#: ../../content/developer/reference/addons/views.rst:1344 +#: ../../content/developer/reference/addons/views.rst:422 +#: ../../content/developer/reference/addons/views.rst:1007 +#: ../../content/developer/reference/addons/views.rst:2118 msgid "``color``" msgstr "" @@ -1186,13 +4008,14 @@ msgid "record's field holding the end date/time for the event" msgstr "" #: ../../content/developer/howtos/backend.rst:914 -#: ../../content/developer/reference/addons/views.rst:897 -#: ../../content/developer/reference/addons/views.rst:1019 -#: ../../content/developer/reference/addons/views.rst:1437 -#: ../../content/developer/reference/addons/views.rst:1495 -#: ../../content/developer/reference/addons/views.rst:1684 -#: ../../content/developer/reference/addons/views.rst:1729 -#: ../../content/developer/reference/addons/views.rst:1845 +#: ../../content/developer/reference/addons/views.rst:940 +#: ../../content/developer/reference/addons/views.rst:1064 +#: ../../content/developer/reference/addons/views.rst:1464 +#: ../../content/developer/reference/addons/views.rst:1526 +#: ../../content/developer/reference/addons/views.rst:1730 +#: ../../content/developer/reference/addons/views.rst:1779 +#: ../../content/developer/reference/addons/views.rst:1903 +#: ../../content/developer/reference/addons/views.rst:2112 msgid "``string``" msgstr "" @@ -1218,9 +4041,9 @@ msgid "Search views can also contain ```` elements, which act as toggles msgstr "" #: ../../content/developer/howtos/backend.rst:938 -#: ../../content/developer/reference/addons/views.rst:850 -#: ../../content/developer/reference/addons/views.rst:1803 -#: ../../content/developer/reference/addons/views.rst:1880 +#: ../../content/developer/reference/addons/views.rst:891 +#: ../../content/developer/reference/addons/views.rst:1857 +#: ../../content/developer/reference/addons/views.rst:1938 msgid "``domain``" msgstr "" @@ -1231,13 +4054,13 @@ msgstr "" #: ../../content/developer/howtos/backend.rst:942 #: ../../content/developer/howtos/web.rst:1710 #: ../../content/developer/reference/addons/data.rst:72 -#: ../../content/developer/reference/addons/views.rst:852 -#: ../../content/developer/reference/addons/views.rst:1275 -#: ../../content/developer/reference/addons/views.rst:1483 -#: ../../content/developer/reference/addons/views.rst:1608 -#: ../../content/developer/reference/addons/views.rst:1805 -#: ../../content/developer/reference/addons/views.rst:1873 -#: ../../content/developer/reference/addons/views.rst:1975 +#: ../../content/developer/reference/addons/views.rst:893 +#: ../../content/developer/reference/addons/views.rst:1338 +#: ../../content/developer/reference/addons/views.rst:1512 +#: ../../content/developer/reference/addons/views.rst:1649 +#: ../../content/developer/reference/addons/views.rst:1859 +#: ../../content/developer/reference/addons/views.rst:1931 +#: ../../content/developer/reference/addons/views.rst:2035 msgid "``context``" msgstr "" @@ -1262,7 +4085,7 @@ msgid "Add a button to group courses by responsible user." msgstr "" #: ../../content/developer/howtos/backend.rst:977 -#: ../../content/developer/reference/addons/views.rst:945 +#: ../../content/developer/reference/addons/views.rst:988 msgid "Gantt" msgstr "" @@ -1331,8 +4154,8 @@ msgid "Graph views contain ```` with a mandatory ``@type`` attribute taki msgstr "" #: ../../content/developer/howtos/backend.rst:1029 -#: ../../content/developer/reference/addons/views.rst:1153 -#: ../../content/developer/reference/addons/views.rst:1735 +#: ../../content/developer/reference/addons/views.rst:1206 +#: ../../content/developer/reference/addons/views.rst:1787 msgid "``row`` (default)" msgstr "" @@ -1341,8 +4164,8 @@ msgid "the field should be aggregated by default" msgstr "" #: ../../content/developer/howtos/backend.rst:1032 -#: ../../content/developer/reference/addons/views.rst:1158 -#: ../../content/developer/reference/addons/views.rst:1739 +#: ../../content/developer/reference/addons/views.rst:1211 +#: ../../content/developer/reference/addons/views.rst:1791 msgid "``measure``" msgstr "" @@ -1363,7 +4186,7 @@ msgid "Add a Graph view in the Session object that displays, for each course, th msgstr "" #: ../../content/developer/howtos/backend.rst:1052 -#: ../../content/developer/reference/addons/views.rst:1177 +#: ../../content/developer/reference/addons/views.rst:1230 msgid "Kanban" msgstr "" @@ -1536,7 +4359,6 @@ msgid "Modify the wizard model so that attendees can be registered to multiple s msgstr "" #: ../../content/developer/howtos/backend.rst:1224 -#: ../../content/developer/misc/i18n.rst:5 msgid "Internationalization" msgstr "" @@ -1848,99 +4670,6 @@ msgstr "" msgid "Check the companies of the values of the given field names." msgstr "" -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel._check_company:0 -#: ../../content/developer/misc/api/iap.rst:0 -#: ../../content/developer/misc/api/iap.rst:0 -#: ../../content/developer/misc/api/iap.rst:0 -#: ../../content/developer/misc/api/iap.rst:0 -#: ../../content/developer/misc/api/iap.rst:0 -#: ../../content/developer/misc/api/iap.rst:0 -#: ../../content/developer/misc/api/iap.rst:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.route:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.WebRequest:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.WebRequest.csrf_token:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.HttpRequest.make_response:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.HttpRequest.render:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.Response:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Field:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Field:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Char:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Float:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Binary:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Html:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Image:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Monetary:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Selection:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Text:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.add:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Date.context_today:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.end_of:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.start_of:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.subtract:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Date.to_date:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Date.to_string:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.add:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Datetime.context_timestamp:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.end_of:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.start_of:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.subtract:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Datetime.to_datetime:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Datetime.to_string:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Many2one:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.One2many:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Many2many:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Many2many:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Many2oneReference:0 -#: ../../../odoo/odoo/api.py:docstring of odoo.api.returns:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.with_company:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.with_env:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.invalidate_cache:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.create:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.copy:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.default_get:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.name_create:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.write:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.flush:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.browse:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.search:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.name_search:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.read:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.read_group:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.fields_get:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.fields_view_get:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.filtered:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.mapped:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.sorted:0 -#: ../../../odoo/odoo/exceptions.py:docstring of odoo.exceptions.RedirectWarning:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.browse_ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.browse_ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.browse_ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.Form:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel._populate:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.cartesian:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.compute:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.iterate:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.randint:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.randomize:0 -#: ../../content/developer/reference/javascript/qweb.rst:0 -msgid "Parameters" -msgstr "" - #: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel._check_company:3 msgid "names of relational fields to check" msgstr "" @@ -2014,44 +4743,167 @@ msgid "This is achieved with security rules based on `company_ids`, which contai msgstr "" #: ../../content/developer/howtos/company.rst:229 -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:96 -#: ../../content/developer/howtos/web.rst:137 -#: ../../content/developer/howtos/web.rst:1878 -#: ../../content/developer/howtos/website.rst:490 -#: ../../content/developer/misc/api/iap.rst:121 -#: ../../content/developer/misc/api/iap.rst:225 -#: ../../content/developer/misc/api/iap.rst:407 -#: ../../content/developer/misc/api/iap.rst:409 -#: ../../content/developer/misc/api/iap.rst:510 -#: ../../content/developer/misc/i18n/translations.rst:21 -#: ../../content/developer/reference/addons/actions.rst:176 -#: ../../../odoo/odoo/api.py:docstring of odoo.api:3 -#: ../../content/developer/reference/addons/orm.rst:620 -#: ../../content/developer/reference/addons/orm.rst:622 -#: ../../content/developer/reference/addons/orm.rst:737 -#: ../../content/developer/reference/addons/orm.rst:894 -#: ../../content/developer/reference/addons/security.rst:28 -#: ../../content/developer/reference/addons/security.rst:186 -#: ../../content/developer/reference/addons/views.rst:13 -#: ../../content/developer/reference/addons/views.rst:70 -#: ../../content/developer/reference/addons/views.rst:81 -#: ../../content/developer/reference/addons/views.rst:179 -#: ../../content/developer/reference/addons/views.rst:241 -#: ../../content/developer/reference/addons/views.rst:818 -#: ../../content/developer/reference/addons/views.rst:938 -#: ../../content/developer/reference/addons/views.rst:940 -#: ../../content/developer/reference/addons/views.rst:1223 -#: ../../content/developer/reference/addons/views.rst:1302 -#: ../../content/developer/reference/addons/views.rst:1318 -#: ../../content/developer/reference/addons/views.rst:1485 -#: ../../content/developer/reference/addons/views.rst:2127 -#: ../../content/developer/reference/javascript/qweb.rst:342 -#: ../../content/developer/reference/javascript/qweb.rst:423 -msgid "Todo" +msgid "check_company on company_dependent fields." msgstr "" -#: ../../content/developer/howtos/company.rst:229 -msgid "check_company on company_dependent fields." +#: ../../content/developer/howtos/localization.rst:4 +msgid "Accounting Localization" +msgstr "" + +#: ../../content/developer/howtos/localization.rst:8 +msgid "This tutorial requires knowledges about how to build a module in Odoo (see :doc:`/developer/howtos/backend`)." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:12 +msgid "Building a localization module" +msgstr "" + +#: ../../content/developer/howtos/localization.rst:14 +msgid "When installing the ``accounting`` module, the localization module corresponding to the country code of the company is installed automatically. In case of no country code set or no localization module found, the ``l10n_generic_coa`` (US) localization module is installed by default." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:17 +msgid "For example, ``l10n_be`` will be installed if the company has ``Belgium`` as country." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:19 +msgid "This behavior is allowed by the presence of a *.xml* file containing the following code:" +msgstr "" + +#: ../../content/developer/howtos/localization.rst:27 +msgid "Where ``module.template_xmlid`` is the **fully-qualified** xmlid of the corresponding template." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:29 +msgid "Usually located in the ``data`` folder, it must be loaded at the very last in the ``__manifest__.py`` file." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:33 +msgid "If the *.xml* file is missing, the right chart of accounts won't be loaded on time!" +msgstr "" + +#: ../../content/developer/howtos/localization.rst:37 +msgid "Configuring my own Chart of Accounts?" +msgstr "" + +#: ../../content/developer/howtos/localization.rst:39 +msgid "First of all, before I proceed, we need to talk about the templates. A template is a record that allows replica of itself. This mechanism is needed when working in multi-companies. For example, the creation of a new account is done using the ``account.account.template`` model. However, each company using this chart of accounts will be linked to a replica having ``account.account`` as model. So, the templates are never used directly by the company." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:44 +msgid "Then, when a chart of accounts needs to be installed, all templates dependent of this one will create a replica and link this newly generated record to the company's user. It means all such templates must be linked to the chart of accounts in some way. To do so, each one must reference the desired chart of accounts using the ``chart_template_id`` field. For this reason, we need to define an instance of the ``account.chart.template`` model before creating its templates." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:87 +msgid "For example, let's take a look to the Belgium chart of accounts." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:99 +msgid "Now that the chart of accounts is created, we can focus on the creation of the templates. As said previously, each record must reference this record through the ``chart_template_id`` field. If not, the template will be ignored. The following sections show in details how to create these templates." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:104 +msgid "Adding a new account to my Chart of Accounts" +msgstr "" + +#: ../../content/developer/howtos/localization.rst:106 +msgid "It's time to create our accounts. It consists to creating records of ``account.account.template`` type. Each ``account.account.template`` is able to create an ``account.account`` for each company." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:137 +msgid "Some of the described fields above deserve a bit more explanation." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:139 +msgid "The ``user_type_id`` field requires a value of type ``account.account.type``. Although some additional types could be created in a localization module, we encourage the usage of the existing types in the `account/data/data_account_type.xml `_ file. The usage of these generic types ensures the generic reports working correctly in addition to those that you could create in your localization module." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:145 +msgid "Avoid the usage of liquidity ``account.account.type``! Indeed, the bank & cash accounts are created directly at the installation of the localization module and then, are linked to an ``account.journal``." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:150 +msgid "Only one account of type payable/receivable is enough." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:152 +msgid "Although the ``tag_ids`` field is optional, this one remains a very powerful feature. Indeed, this one allows you to define some tags for your accounts to spread them correctly on your reports. For example, suppose you want to create a financial report having multiple lines but you have no way to find a rule to dispatch the accounts according their ``code`` or ``name``. The solution is the usage of tags, one for each report line, to spread and aggregate your accounts like you want." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:157 +msgid "Like any other record, a tag can be created with the following xml structure:" +msgstr "" + +#: ../../content/developer/howtos/localization.rst:170 +msgid "As you can well imagine with the usage of tags, this feature can also be used with taxes." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:172 +msgid "An examples coming from the ``l10n_be`` module:" +msgstr "" + +#: ../../content/developer/howtos/localization.rst:185 +msgid "Don't create too much accounts: 200-300 is enough." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:188 +msgid "Adding a new tax to my Chart of Accounts" +msgstr "" + +#: ../../content/developer/howtos/localization.rst:190 +msgid "To create a new tax record, you just need to follow the same process as the creation of accounts. The only difference being that you must use the ``account.tax.template`` model." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:271 +msgid "An example found in the ``l10n_pl`` module:" +msgstr "" + +#: ../../content/developer/howtos/localization.rst:290 +msgid "Adding a new fiscal position to my Chart of Accounts" +msgstr "" + +#: ../../content/developer/howtos/localization.rst:294 +msgid "If you need more information about what is a fiscal position and how it works in Odoo, please refer to :doc:`/applications/finance/accounting/taxation/taxes/fiscal_positions`." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:297 +msgid "To create a new fiscal position, simply use the ``account.fiscal.position.template`` model:" +msgstr "" + +#: ../../content/developer/howtos/localization.rst:313 +msgid "Adding the properties to my Chart of Accounts" +msgstr "" + +#: ../../content/developer/howtos/localization.rst:315 +msgid "When the whole accounts are generated, you have the possibility to override the newly generated chart of accounts by adding some properties that correspond to default accounts used in certain situations. This must be done after the creation of accounts before each one must be linked to the chart of accounts." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:348 +msgid "For example, let's come back to the Belgium PCMN. This chart of accounts is override in this way to add some properties." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:363 +msgid "How to create a new bank operation model?" +msgstr "" + +#: ../../content/developer/howtos/localization.rst:367 +msgid "How a bank operation model works exactly in Odoo? See :doc:`/applications/finance/accounting/bank/reconciliation/reconciliation_models`." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:369 +msgid "Since ``V10``, a new feature is available in the bank statement reconciliation widget: the bank operation model. This allows the user to pre-fill some accounting entries with a single click. The creation of an ``account.reconcile.model.template`` record is quite easy:" +msgstr "" + +#: ../../content/developer/howtos/localization.rst:415 +msgid "How to create a new dynamic report?" +msgstr "" + +#: ../../content/developer/howtos/localization.rst:417 +msgid "If you need to add some reports on your localization, you need to create a new module named **l10n_xx_reports**. Furthermore, this additional module must be present in the ``enterprise`` repository and must have at least two dependencies, one to bring all the stuff for your localization module and one more, ``account_reports``, to design dynamic reports." +msgstr "" + +#: ../../content/developer/howtos/localization.rst:425 +msgid "Once it's done, you can start the creation of your report statements. The documentation is available in the following `slides `_." msgstr "" #: ../../content/developer/howtos/profilecode.rst:3 @@ -2134,15 +4986,15 @@ msgstr "" msgid "To open profile.svg you should use browser, because other viewer may not support interactive part." msgstr "" -#: ../../content/developer/howtos/rdtraining.rst:32 -#: ../../content/developer/howtos/rdtraining.rst:60 -#: ../../content/developer/howtos/rdtraining.rst:32 -#: ../../content/developer/howtos/rdtraining.rst:60 +#: ../../content/developer/howtos/rdtraining.rst:39 +#: ../../content/developer/howtos/rdtraining.rst:69 +#: ../../content/developer/howtos/rdtraining.rst:39 +#: ../../content/developer/howtos/rdtraining.rst:69 msgid "Advanced Topics" msgstr "" #: ../../content/developer/howtos/rdtraining.rst:7 -msgid "Getting Started" +msgid "Getting started" msgstr "" #: ../../content/developer/howtos/rdtraining.rst:9 @@ -2150,110 +5002,118 @@ msgid "Welcome to the Getting Started Odoo tutorial! If you reached this page th msgstr "" #: ../../content/developer/howtos/rdtraining.rst:14 -msgid "This training is split in two parts. The first part is the 'Core Training': its objective is to give you an insight of the most important parts of the Odoo development framework. The chapters should be followed in their given order since they cover the development of a new Odoo application from scratch in an incremental way. In other words, each chapter depends on the previous one." +msgid "This training is split in two parts:" +msgstr "" + +#: ../../content/developer/howtos/rdtraining.rst:16 +msgid "The first part is the :ref:`core training `. Its objective is to give you an insight of the most important parts of the Odoo development framework. The chapters should be followed in their given order since they cover the development of a new Odoo application from scratch in an incremental way. In other words, each chapter depends on the previous one." msgstr "" #: ../../content/developer/howtos/rdtraining.rst:20 -msgid "The second part covers a set of 'Advanced' topics. Each topic can be followed independently, but requires the 'Core Training'. Note that some advanced topics cover basic features of an Odoo module, so it's a good idea to give them a quick look." +msgid "The second part covers a set of :ref:`advanced topics `. Each topic can be followed independently, but requires the :ref:`core training `." msgstr "" -#: ../../content/developer/howtos/rdtraining.rst:24 +#: ../../content/developer/howtos/rdtraining.rst:25 +msgid "Are you following this training as part of your technical onboarding as an Odoo employee? Then, we ask you to complete the first part of the training before joining your new team and the second part the month after." +msgstr "" + +#: ../../content/developer/howtos/rdtraining.rst:29 msgid "All topics are built around a business case we will enhance along the way. The reader is expected to actively take part in the training by writing the solution for each exercise." msgstr "" -#: ../../content/developer/howtos/rdtraining.rst:27 +#: ../../content/developer/howtos/rdtraining.rst:32 msgid "Ready? Let's get started!" msgstr "" -#: ../../content/developer/howtos/rdtraining.rst:30 -msgid "Core Training" -msgstr "" - -#: ../../content/developer/howtos/rdtraining.rst:40 -msgid ":doc:`rdtraining/01_architecture`" -msgstr "" - -#: ../../content/developer/howtos/rdtraining.rst:41 -msgid ":doc:`rdtraining/02_setup`" -msgstr "" - -#: ../../content/developer/howtos/rdtraining.rst:42 -msgid ":doc:`rdtraining/03_newapp`" -msgstr "" - -#: ../../content/developer/howtos/rdtraining.rst:43 -msgid ":doc:`rdtraining/04_basicmodel`" -msgstr "" - -#: ../../content/developer/howtos/rdtraining.rst:44 -msgid ":doc:`rdtraining/05_securityintro`" -msgstr "" - -#: ../../content/developer/howtos/rdtraining.rst:45 -msgid ":doc:`rdtraining/06_firstui`" -msgstr "" - -#: ../../content/developer/howtos/rdtraining.rst:46 -msgid ":doc:`rdtraining/07_basicviews`" +#: ../../content/developer/howtos/rdtraining.rst:37 +msgid "Core training" msgstr "" #: ../../content/developer/howtos/rdtraining.rst:47 -msgid ":doc:`rdtraining/08_relations`" +msgid ":doc:`rdtraining/01_architecture`" msgstr "" #: ../../content/developer/howtos/rdtraining.rst:48 -msgid ":doc:`rdtraining/09_compute_onchange`" +msgid ":doc:`rdtraining/02_setup`" msgstr "" #: ../../content/developer/howtos/rdtraining.rst:49 -msgid ":doc:`rdtraining/10_actions`" +msgid ":doc:`rdtraining/03_newapp`" msgstr "" #: ../../content/developer/howtos/rdtraining.rst:50 -msgid ":doc:`rdtraining/11_constraints`" +msgid ":doc:`rdtraining/04_basicmodel`" msgstr "" #: ../../content/developer/howtos/rdtraining.rst:51 -msgid ":doc:`rdtraining/12_sprinkles`" +msgid ":doc:`rdtraining/05_securityintro`" msgstr "" #: ../../content/developer/howtos/rdtraining.rst:52 -msgid ":doc:`rdtraining/13_inheritance`" +msgid ":doc:`rdtraining/06_firstui`" msgstr "" #: ../../content/developer/howtos/rdtraining.rst:53 -msgid ":doc:`rdtraining/14_other_module`" +msgid ":doc:`rdtraining/07_basicviews`" msgstr "" #: ../../content/developer/howtos/rdtraining.rst:54 -msgid ":doc:`rdtraining/15_qwebintro`" +msgid ":doc:`rdtraining/08_relations`" msgstr "" #: ../../content/developer/howtos/rdtraining.rst:55 -msgid ":doc:`rdtraining/16_guidelines_pr`" +msgid ":doc:`rdtraining/09_compute_onchange`" +msgstr "" + +#: ../../content/developer/howtos/rdtraining.rst:56 +msgid ":doc:`rdtraining/10_actions`" +msgstr "" + +#: ../../content/developer/howtos/rdtraining.rst:57 +msgid ":doc:`rdtraining/11_constraints`" msgstr "" #: ../../content/developer/howtos/rdtraining.rst:58 +msgid ":doc:`rdtraining/12_sprinkles`" +msgstr "" + +#: ../../content/developer/howtos/rdtraining.rst:59 +msgid ":doc:`rdtraining/13_inheritance`" +msgstr "" + +#: ../../content/developer/howtos/rdtraining.rst:60 +msgid ":doc:`rdtraining/14_other_module`" +msgstr "" + +#: ../../content/developer/howtos/rdtraining.rst:61 +msgid ":doc:`rdtraining/15_qwebintro`" +msgstr "" + +#: ../../content/developer/howtos/rdtraining.rst:62 +msgid ":doc:`rdtraining/16_guidelines_pr`" +msgstr "" + +#: ../../content/developer/howtos/rdtraining.rst:67 msgid "Advanced topics" msgstr "" -#: ../../content/developer/howtos/rdtraining.rst:70 +#: ../../content/developer/howtos/rdtraining.rst:79 msgid ":doc:`rdtraining/B_acl_irrules`" msgstr "" -#: ../../content/developer/howtos/rdtraining.rst:71 +#: ../../content/developer/howtos/rdtraining.rst:80 msgid ":doc:`rdtraining/C_data`" msgstr "" -#: ../../content/developer/howtos/rdtraining.rst:72 +#: ../../content/developer/howtos/rdtraining.rst:81 msgid ":doc:`rdtraining/E_unittest`" msgstr "" -#: ../../content/developer/howtos/rdtraining.rst:73 +#: ../../content/developer/howtos/rdtraining.rst:82 msgid ":doc:`rdtraining/J_reports`" msgstr "" -#: ../../content/developer/howtos/rdtraining.rst:74 +#: ../../content/developer/howtos/rdtraining.rst:83 msgid ":doc:`rdtraining/K_dashboard`" msgstr "" @@ -2350,424 +5210,370 @@ msgid "Odoo is available in `two versions`_: Odoo Enterprise (licensed & shared msgstr "" #: ../../content/developer/howtos/rdtraining/01_architecture.rst:119 -msgid "Ready to start? Before writing actual code, let's go to the :ref:`next chapter ` to review the Odoo installation process. Even if Odoo is already running on your system, we strongly suggest you go through this chapter to make sure we start on the same page during the development of our new application." +msgid "Ready to start? Before writing actual code, let's go to the :doc:`next chapter <02_setup>` to review the Odoo installation process. Even if Odoo is already running on your system, we strongly suggest you go through this chapter to make sure we start on the same page during the development of our new application." +msgstr "" + +#: ../../content/developer/howtos/rdtraining/02_setup.rst:3 +msgid "Chapter 2: Development environment setup" msgstr "" #: ../../content/developer/howtos/rdtraining/02_setup.rst:5 -msgid "Chapter 2: Development Environment Set-up" -msgstr "" - -#: ../../content/developer/howtos/rdtraining/02_setup.rst:7 -msgid "There are multiple ways to install Odoo depending on the intended use case." +msgid "Depending on the intended use case, there are multiple ways to install Odoo. This tutorial will stick to the :ref:`source install ` (:dfn:`running Odoo from the source code`), which is best suited for Odoo developers." msgstr "" #: ../../content/developer/howtos/rdtraining/02_setup.rst:9 -msgid "This document attempts to describe the installation options for an internal Odoo R&D developer. We assume that you are installing your development environment on a standard Odoo laptop with Linux Mint installed and up-to-date. At the time of writing, we are using a vanilla Linux Mint 20 (Ubuntu 20.04) as a starting point." +msgid "Throughout this document, we assume that you are installing your development environment on a laptop provided by Odoo with Linux Mint installed and up-to-date. If that is not the case, switch to the appropriate section of the installation guide, depending on whether you are on :ref:`Windows ` or :ref:`Mac OS `. The steps remain essentially the same." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:15 -msgid "If you are using another environment, you can refer to :ref:`setup/install/source`." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:16 +msgid "Set up Git" msgstr "" #: ../../content/developer/howtos/rdtraining/02_setup.rst:19 -msgid "Fetch the sources & configure git" +msgid "Install and configure Git" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:22 -msgid "Install and configure git" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:21 +msgid "The very first step of the installation process is to install the `Git version control system `_ because the Odoo source code is managed on `GitHub `_." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:24 -msgid "The very first step of the installation process is to install the `git version control system `__ because the Odoo source code is managed on GitHub. Once installed, you can set your name and email:" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:29 +msgid "Check if Git is installed by trying to print Git's version with the following command:" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:34 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:35 +msgid "Once installed, register your name and email:" +msgstr "" + +#: ../../content/developer/howtos/rdtraining/02_setup.rst:43 msgid "Configure GitHub" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:36 -msgid "To fetch the sources and contribute to Odoo's development you will need a GitHub account. We recommend using your trigram (xyz) followed by '-odoo' as your username: 'xyz-odoo'. If you prefer, you can also use your personal GitHub account." -msgstr "" - -#: ../../content/developer/howtos/rdtraining/02_setup.rst:41 -msgid "The easiest way to authenticate with GitHub is to use an SSH connection. Using the SSH authentication will allow you to connect to GitHub without supplying your username and password every time." -msgstr "" - -#: ../../content/developer/howtos/rdtraining/02_setup.rst:46 -msgid "The following instructions are based on the official `GitHub documentation `__." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:45 +msgid "You need a GitHub account to fetch the sources and contribute to Odoo's development. If you don't have one yet, create it. For the username, we recommend using your trigram \"xyz\" (or quadrigam) followed by '-odoo': 'xyz-odoo'." msgstr "" #: ../../content/developer/howtos/rdtraining/02_setup.rst:49 -msgid "Here is a step-by-step procedure:" +msgid "The easiest way to authenticate with GitHub is to use an SSH connection. Using SSH authentication allows you to connect to GitHub without supplying your username and password every time you type a command." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:52 -msgid "Generate a new SSH key, add it to the ssh-agent and copy the SSH key to your clipboard." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:54 +msgid "The following step-by-step procedure is based based on the `official GitHub documentation `_." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:62 -msgid "In Github:" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:57 +msgid "Generate a new SSH key, add it to the ssh-agent, and copy the SSH key to your clipboard." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:65 -msgid "In the upper-right corner of any page, click your profile photo, then click Settings" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:66 +msgid "Go to `GitHub.com `_, then click on your profile picture in the upper-right corner of the page and then on :guilabel:`Settings`." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:69 -msgid "In the user settings sidebar, click SSH and GPG keys." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:71 +msgid "On the user settings sidebar, click on :guilabel:`SSH and GPG keys`." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:73 -msgid "Click New SSH key or Add SSH key." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:75 +msgid "Click on :guilabel:`New SSH key` or on :guilabel:`Add SSH key`." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:77 -msgid "In the \"Title\" field, add a descriptive label for the new key." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:79 +msgid "In the :guilabel:`Title` field, add a descriptive label for the new key." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:78 -msgid "Paste your key into the \"Key\" field." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:80 +msgid "Paste your key into the :guilabel:`Key` field." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:82 -msgid "Click Add SSH key." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:84 +msgid "Click on :guilabel:`Add SSH key`." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:86 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:87 msgid "Fetch the sources" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:88 -msgid "All the Odoo sources will be located in `$HOME/src/`" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:89 +msgid "It is time to fetch the source code of Odoo. First, let's create a home for the Git repositories in :file:`$HOME/src/`." msgstr "" #: ../../content/developer/howtos/rdtraining/02_setup.rst:97 +msgid "Then, clone the two repositories with SSH as explained in the :ref:`Installing Odoo guide `." +msgstr "" + +#: ../../content/developer/howtos/rdtraining/02_setup.rst:101 msgid "Cloning the repositories will take a while, enjoy a cup of coffee while you wait." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:99 -msgid "You may need to ask your manager for read rights to fetch the enterprise repository." -msgstr "" - -#: ../../content/developer/howtos/rdtraining/02_setup.rst:104 -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:34 -msgid "Configure development repository" -msgstr "" - #: ../../content/developer/howtos/rdtraining/02_setup.rst:106 -msgid "To contribute to Odoo's development you will need to `fork the repository `__, create a branch containing your code in the fork and submit a `Pull Request `__ to the Odoo repository." +msgid "Configure the Git repositories" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:112 -msgid "If you are lucky enough to work at Odoo, the forks already exist. They are called `odoo-dev/odoo` and `odoo-dev/enterprise`." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:108 +msgid "To contribute to an Odoo repository, you first need to `fork it `_, then create a branch containing your changes on the fork, and finally submit a `Pull Request `_ to the repository." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:129 -msgid "Useful git commands" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:115 +msgid "If you are lucky enough to work at Odoo, the forks already exist. They are hosted on https://github.com/odoo-dev/odoo and https://github.com/odoo-dev/enterprise." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:131 -msgid "Here are some useful git commands for your day-to-day work." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:118 +msgid "After your two forks are created, their remote address can be added in your local repositories. In the commands below, replace `odoo-dev/odoo` and `odoo-dev/enterprise` with the name of your forks if needed." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:133 -msgid "Change branch: When you change branches, both repositories (odoo and enterprise) must be synchronized, i.e. both need to be in the same branch." -msgstr "" - -#: ../../content/developer/howtos/rdtraining/02_setup.rst:145 -msgid "Fetch and rebase:" -msgstr "" - -#: ../../content/developer/howtos/rdtraining/02_setup.rst:159 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:135 msgid "Install the dependencies" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:162 -#: ../../content/developer/howtos/rdtraining/11_constraints.rst:69 -#: ../../content/developer/misc/other/guidelines.rst:397 -#: ../../content/developer/reference/addons/security.rst:450 -#: ../../content/developer/reference/addons/security.rst:452 -#: ../../content/developer/reference/addons/testing.rst:665 -#: ../../content/developer/reference/javascript/qweb.rst:334 -msgid "Python" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:137 +msgid "As seen in :ref:`howto/rdtraining/01_architecture`, Odoo's server runs on Python and uses PostgreSQL as an RDBMS. In the context of a development machine, the easiest approach is to install everything locally. To do so, follow once again the :ref:`Installing Odoo guide `." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:164 -msgid "Odoo requires Python 3.6 or later, if your computer is up-to-date you should already be at this version or higher." -msgstr "" - -#: ../../content/developer/howtos/rdtraining/02_setup.rst:167 -msgid "You can check your Python version with:" -msgstr "" - -#: ../../content/developer/howtos/rdtraining/02_setup.rst:174 -msgid "Install pip3 and libraries" -msgstr "" - -#: ../../content/developer/howtos/rdtraining/02_setup.rst:176 -msgid "For libraries using native code, installation of development tools and native dependencies is required before installing the Python dependencies of Odoo." -msgstr "" - -#: ../../content/developer/howtos/rdtraining/02_setup.rst:185 -msgid "Install odoo requirements" -msgstr "" - -#: ../../content/developer/howtos/rdtraining/02_setup.rst:195 -msgid "Install wkhtmltopdf" -msgstr "" - -#: ../../content/developer/howtos/rdtraining/02_setup.rst:197 -msgid "wkhtmltopdf is a library to render HTML into PDF. Odoo uses it to create PDF reports. wkhtmltopdf is not installed through pip and must be installed manually in version 0.12.5 to support headers and footers." -msgstr "" - -#: ../../content/developer/howtos/rdtraining/02_setup.rst:210 -msgid "Right-to-left interface support" -msgstr "" - -#: ../../content/developer/howtos/rdtraining/02_setup.rst:212 -msgid "In order to support right-to-left (RTL) languages, we need `rtlcss` to convert the CSS files:" -msgstr "" - -#: ../../content/developer/howtos/rdtraining/02_setup.rst:220 -msgid "Install PostgreSQL" -msgstr "" - -#: ../../content/developer/howtos/rdtraining/02_setup.rst:222 -msgid "As seen in :ref:`howto/rdtraining/01_architecture`, Odoo uses PostgreSQL as a RDBMS. In the context of a development machine, the easiest approach is to install it locally. Then we can create a PostgreSQL user corresponding to our current user:" -msgstr "" - -#: ../../content/developer/howtos/rdtraining/02_setup.rst:232 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:143 msgid "Some useful SQL commands:" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:246 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:157 msgid "Run the server" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:249 -msgid "Running odoo-bin" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:160 +msgid "Launch with `odoo-bin`" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:251 -msgid "Once all dependencies are set up, Odoo can be launched by running odoo-bin, the command-line interface of the server." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:162 +msgid "Once all dependencies are set up, Odoo can be launched by running `odoo-bin`, the command-line interface of the server." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:258 -msgid "There are multiple :ref:`command-line arguments ` that you can use to configure the server. In this training you will only need some of them." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:170 +msgid "There are multiple :ref:`command-line arguments ` that you can use to run the server. In this training you will only need some of them." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:263 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:175 msgid "The database that is going to be used." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:267 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:179 msgid "A comma-separated list of directories in which modules are stored. These directories are scanned for modules." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:272 -msgid "Prevents the worker from using more than CPU seconds for each request." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:184 +msgid "Prevent the worker from using more than CPU seconds for each request." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:276 -msgid "Prevents the worker from taking longer than seconds to process a request." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:188 +msgid "Prevent the worker from taking longer than seconds to process a request." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:278 -msgid "The last two can be used to prevent the worker from being killed when debugging the source code." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:191 +msgid "The :option:`--limit-time-cpu` and :option:`--limit-time-real` arguments can be used to prevent the worker from being killed when debugging the source code." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:280 -msgid "You may face an error similar to `AttributeError: module '$MODULE_NAME' has no attribute '$ATTRIBUTE'`" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:0 +msgid "You may face an error similar to `AttributeError: module '' has no attribute '<$ATTRIBUTE'>`. In this case, you may need to re-install the module with :command:`$ pip install --upgrade --force-reinstall `." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:282 -msgid "In this case you may need to re-install the module with `$ pip install --upgrade --force-reinstall $MODULE_NAME`" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:0 +msgid "If this error occurs with more than one module, you may need to re-install all the requirements with :command:`$ pip install --upgrade --force-reinstall -r requirements.txt`." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:284 -msgid "If this error occurs with more than one module then you may need to re-install all the requirements with `$ pip3 install --upgrade --force-reinstall -r requirements.txt`" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:0 +msgid "You can also clear the python cache to solve the issue:" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:287 -msgid "You can also clear the python cache to solve the issue" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:205 +msgid "Other commonly used arguments are:" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:296 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:207 +msgid ":option:`-i `: Install some modules before running the server (comma-separated list)." +msgstr "" + +#: ../../content/developer/howtos/rdtraining/02_setup.rst:209 +msgid ":option:`-u `: Update some modules before running the server (comma-separated list)." +msgstr "" + +#: ../../content/developer/howtos/rdtraining/02_setup.rst:213 msgid "Log in to Odoo" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:298 -msgid "Open `http://localhost:8069/` on your browser. We recommend you use: `Firefox `__, `Chrome `__ (`Chromium `__ the open source equivalent) or any other browser with development tools." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:215 +msgid "Open http://localhost:8069/ on your browser. We recommend using `Chrome `_, `Firefox `_, or any other browser with development tools." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:304 -msgid "To log in as the administrator user, you can use the following credentials:" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:219 +msgid "To log in as the administrator user, use the following credentials:" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:306 -msgid "email = `admin`" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:221 +msgid "email: `admin`" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:307 -msgid "password = `admin`" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:222 +msgid "password: `admin`" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:310 -msgid "The developer mode" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:225 +msgid "Enable the developer mode" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:312 -msgid "The Developer or Debug Mode gives you access to additional (advanced) tools." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:227 +msgid "The developer or debug mode is useful for training as it gives access to additional (advanced) tools. In the next chapters, **we will always assume that you have enabled the developer mode**." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:314 -msgid "This is useful for training and we assume that the user is in developer mode for the rest of the tutorials." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:230 +msgid ":ref:`Enable the developer mode ` now. Choose the method that you prefer; they are all equivalent." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:316 -msgid "To activate the developer or debug mode you can follow the steps `here `__." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:234 +msgid "The main page of the Settings screen is only accessible if at least one application is installed. You will be led into installing your own application in the next chapter." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:319 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:238 msgid "Extra tools" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:322 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:241 +msgid "Useful Git commands" +msgstr "" + +#: ../../content/developer/howtos/rdtraining/02_setup.rst:243 +msgid "Here are some useful Git commands for your day-to-day work." +msgstr "" + +#: ../../content/developer/howtos/rdtraining/02_setup.rst:0 +msgid "Switch branches:" +msgstr "" + +#: ../../content/developer/howtos/rdtraining/02_setup.rst:0 +msgid "When you switch branches, both repositories (odoo and enterprise) must be synchronized, i.e. both need to be in the same branch." +msgstr "" + +#: ../../content/developer/howtos/rdtraining/02_setup.rst:257 +msgid "Fetch and rebase:" +msgstr "" + +#: ../../content/developer/howtos/rdtraining/02_setup.rst:270 msgid "Code Editor" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:324 -msgid "If you are working at Odoo, many of your colleagues are using `VSCode`_ (`VSCodium`_ the open source equivalent), `Sublime Text`_, `Atom`_ or `PyCharm`_. However you are free to choose your preferred editor." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:272 +msgid "If you are working at Odoo, many of your colleagues are using `VSCode `_, `VSCodium `_ (the open source equivalent), `PyCharm `_, or `Sublime Text `_. However, you are free to choose your preferred editor." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:328 -msgid "Don't forget to configure your linters correctly. Using a linter can help you by showing syntax and semantic warnings or errors. Odoo source code tries to respect Python and JavaScript standards, but some of them can be ignored." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:277 +msgid "It is important to configure your linters correctly. Using a linter helps you by showing syntax and semantic warnings or errors. Odoo source code tries to respect Python's and JavaScript's standards, but some of them can be ignored." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:332 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:281 msgid "For Python, we use PEP8 with these options ignored:" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:334 -#: ../../content/developer/misc/other/guidelines.rst:410 -msgid "E501: line too long" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:283 +msgid "`E501`: line too long" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:335 -#: ../../content/developer/misc/other/guidelines.rst:411 -msgid "E301: expected 1 blank line, found 0" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:284 +msgid "`E301`: expected 1 blank line, found 0" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:336 -#: ../../content/developer/misc/other/guidelines.rst:412 -msgid "E302: expected 2 blank lines, found 1" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:285 +msgid "`E302`: expected 2 blank lines, found 1" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:338 -msgid "For JavaScript, we use ESLint and you can find a `configuration file example here`_." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:287 +msgid "For JavaScript, we use ESLint and you can find a `configuration file example here `_." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:348 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:291 msgid "Administrator tools for PostgreSQL" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:350 -msgid "You can manage your PostgreSQL databases using the command line as demonstrated earlier or using a GUI application such as `pgAdmin `__ or `DBeaver `__." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:293 +msgid "You can manage your PostgreSQL databases using the command line as demonstrated earlier or using a GUI application such as `pgAdmin `_ or `DBeaver `_." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:353 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:297 msgid "To connect the GUI application to your database we recommend you connect using the Unix socket." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:355 -msgid "Host name/address = /var/run/postgresql" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:299 +msgid "Host name/address: `/var/run/postgresql`" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:356 -msgid "Port = 5432" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:300 +msgid "Port: `5432`" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:357 -msgid "Username = $USER" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:301 +msgid "Username: `$USER`" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:361 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:304 msgid "Python Debugging" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:363 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:306 msgid "When facing a bug or trying to understand how the code works, simply printing things out can go a long way, but a proper debugger can save a lot of time." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:366 -msgid "You can use a classic Python library debugger (`pdb `__, `pudb `__ or `ipdb `__) or you can use your editor's debugger. To avoid difficult configurations in the beginning, it is easier if you use a library debugger." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:309 +msgid "You can use a classic Python library debugger (`pdb `_, `pudb `_ or `ipdb `_), or you can use your editor's debugger." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:371 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:313 msgid "In the following example we use ipdb, but the process is similar with other libraries." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:373 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:315 msgid "Install the library:" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:379 -msgid "Trigger (breakpoint):" +#: ../../content/developer/howtos/rdtraining/02_setup.rst:321 +msgid "Place a trigger (breakpoint):" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:385 -#: ../../content/developer/reference/addons/views.rst:159 -#: ../../content/developer/reference/addons/views.rst:1903 -#: ../../content/developer/reference/addons/views.rst:1940 -#: ../../content/developer/reference/addons/views.rst:1966 -msgid "Example:" -msgstr "" - -#: ../../content/developer/howtos/rdtraining/02_setup.rst:398 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:340 msgid "Here is a list of commands:" msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:402 -msgid "Without an argument, print the list of available commands. With a command as an argument, print help about that command." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:344 +msgid "Print the list of available commands if not argument is supplied. With a command as an argument, print the help about that command." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:407 -msgid "The value of the ``expression`` is pretty-printed using the ``pprint`` module." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:349 +msgid "The value of the `expression` is pretty-printed using the `pprint` module." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:411 -msgid "Print a stack trace, with the most recent frame at the bottom." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:353 +msgid "Print a stack trace with the most recent frame at the bottom." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:415 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:357 msgid "Move the current frame one level down in the stack trace (to a newer frame)." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:419 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:361 msgid "Move the current frame one level up in the stack trace (to an older frame)." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:423 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:365 msgid "Continue the execution until the next line in the current function is reached or it returns." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:427 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:369 msgid "Continue the execution and only stop when a breakpoint is encountered." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:431 -msgid "Execute the current line, stop at the first possible occasion (either in a function that is called or on the next line in the current function)." +#: ../../content/developer/howtos/rdtraining/02_setup.rst:373 +msgid "Execute the current line. Stop at the first possible occasion (either in a function that is called or on the next line in the current function)." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:436 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:378 msgid "Quit the debugger. The program being executed is aborted." msgstr "" -#: ../../content/developer/howtos/rdtraining/02_setup.rst:440 -msgid "To avoid killing the worker when debugging, you can add these arguments when launching the server: `--limit-time-cpu=9999 --limit-time-real=9999` Another solution is to add them directly in the `~/.odoorc` file:" -msgstr "" - -#: ../../content/developer/howtos/rdtraining/02_setup.rst:451 +#: ../../content/developer/howtos/rdtraining/02_setup.rst:382 msgid "Now that your server is running, it's time to start :ref:`writing your own application `!" msgstr "" @@ -2859,19 +5665,23 @@ msgstr "" msgid "Go to Apps, click on Update Apps List, search for ``estate`` and... tadaaa, your module appears! Did it not appear? Maybe try removing the default 'Apps' filter ;-)" msgstr "" -#: ../../content/developer/howtos/rdtraining/03_newapp.rst:97 +#: ../../content/developer/howtos/rdtraining/03_newapp.rst:98 +msgid "Remember to enable the :ref:`developer mode ` as explained in the previous chapter. You won't see the :guilabel:`Update Apps List` button otherwise." +msgstr "" + +#: ../../content/developer/howtos/rdtraining/03_newapp.rst:101 msgid "Make your module an 'App'." msgstr "" -#: ../../content/developer/howtos/rdtraining/03_newapp.rst:99 +#: ../../content/developer/howtos/rdtraining/03_newapp.rst:103 msgid "Add the appropriate key to your ``__manifest__.py`` so that the module appears when the 'Apps' filter is on." msgstr "" -#: ../../content/developer/howtos/rdtraining/03_newapp.rst:102 +#: ../../content/developer/howtos/rdtraining/03_newapp.rst:106 msgid "You can even install the module! But obviously it's an empty shell, so no menu will appear." msgstr "" -#: ../../content/developer/howtos/rdtraining/03_newapp.rst:104 +#: ../../content/developer/howtos/rdtraining/03_newapp.rst:108 msgid "All good? If yes, then let's :ref:`create our first model `!" msgstr "" @@ -2975,11 +5785,6 @@ msgstr "" msgid "The ``name`` field is a :class:`~odoo.fields.Char` which will be represented as a Python unicode ``str`` and a SQL ``VARCHAR``." msgstr "" -#: ../../content/developer/howtos/rdtraining/04_basicmodel.rst:127 -#: ../../content/developer/misc/api/iap.rst:636 -msgid "Types" -msgstr "" - #: ../../content/developer/howtos/rdtraining/04_basicmodel.rst:131 msgid "**Goal**: at the end of this section, several basic fields should have been added to the table ``estate_property``:" msgstr "" @@ -3031,7 +5836,7 @@ msgstr "" #: ../../content/developer/howtos/rdtraining/08_relations.rst:73 #: ../../content/developer/howtos/rdtraining/08_relations.rst:180 #: ../../content/developer/howtos/rdtraining/C_data.rst:177 -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "name" msgstr "" @@ -3411,7 +6216,7 @@ msgid "In Odoo, the user interface (actions, menus and views) is largely defined msgstr "" #: ../../content/developer/howtos/rdtraining/06_firstui.rst:47 -#: ../../content/developer/misc/other/iot.rst:138 +#: ../../content/developer/iot.rst:138 #: ../../content/developer/reference/addons/actions.rst:6 msgid "Actions" msgstr "" @@ -3738,7 +6543,7 @@ msgstr "" #: ../../content/developer/howtos/rdtraining/07_basicviews.rst:23 #: ../../content/developer/howtos/rdtraining/12_sprinkles.rst:317 -#: ../../content/developer/reference/addons/views.rst:1374 +#: ../../content/developer/reference/addons/views.rst:1395 msgid "List" msgstr "" @@ -3794,7 +6599,7 @@ msgstr "" #: ../../content/developer/howtos/rdtraining/07_basicviews.rst:72 #: ../../content/developer/howtos/rdtraining/12_sprinkles.rst:234 -#: ../../content/developer/reference/addons/views.rst:728 +#: ../../content/developer/reference/addons/views.rst:757 msgid "Form" msgstr "" @@ -3840,7 +6645,7 @@ msgstr "" #: ../../content/developer/howtos/rdtraining/07_basicviews.rst:134 #: ../../content/developer/howtos/rdtraining/12_sprinkles.rst:385 -#: ../../content/developer/reference/addons/views.rst:1822 +#: ../../content/developer/reference/addons/views.rst:1876 msgid "Search" msgstr "" @@ -4703,6 +7508,14 @@ msgstr "" msgid "For example, if some offers have a price of zero, then the constraint can't be applied. You can delete the problematic data in order to apply the new constraints." msgstr "" +#: ../../content/developer/howtos/rdtraining/11_constraints.rst:69 +#: ../../content/developer/reference/addons/security.rst:450 +#: ../../content/developer/reference/addons/security.rst:452 +#: ../../content/developer/reference/addons/testing.rst:665 +#: ../../content/developer/reference/javascript/qweb.rst:334 +msgid "Python" +msgstr "" + #: ../../content/developer/howtos/rdtraining/11_constraints.rst:71 msgid "**Reference**: the documentation related to this topic can be found in :func:`~odoo.api.constrains`." msgstr "" @@ -4720,7 +7533,7 @@ msgid "A Python constraint is defined as a method decorated with :func:`~odoo.ap msgstr "" #: ../../content/developer/howtos/rdtraining/11_constraints.rst:103 -msgid "A simple example can be found `here `__." +msgid "A simple example can be found `here `__." msgstr "" #: ../../content/developer/howtos/rdtraining/11_constraints.rst:106 @@ -4736,18 +7549,18 @@ msgid "Tip: the selling price is zero until an offer is validated. You will need msgstr "" #: ../../content/developer/howtos/rdtraining/11_constraints.rst:115 -msgid "Always use the :meth:`~odoo.tools.float_utils.float_compare` and :meth:`~odoo.tools.float_utils.float_is_zero` methods when working with floats!" +msgid "Always use the :meth:`~odoo.tools.float_utils.float_compare` and :meth:`~odoo.tools.float_utils.float_is_zero` methods from `odoo.tools.float_utils` when working with floats!" msgstr "" -#: ../../content/developer/howtos/rdtraining/11_constraints.rst:118 +#: ../../content/developer/howtos/rdtraining/11_constraints.rst:119 msgid "Ensure the constraint is triggered every time the selling price or the expected price is changed!" msgstr "" -#: ../../content/developer/howtos/rdtraining/11_constraints.rst:120 +#: ../../content/developer/howtos/rdtraining/11_constraints.rst:121 msgid "SQL constraints are usually more efficient than Python constraints. When performance matters, always prefer SQL over Python constraints." msgstr "" -#: ../../content/developer/howtos/rdtraining/11_constraints.rst:123 +#: ../../content/developer/howtos/rdtraining/11_constraints.rst:124 msgid "Our real estate module is starting to look good. We added some business logic, and now we make sure the data is consistent. However, the user interface is still a bit rough. Let's see how we can improve it in the :ref:`next chapter `." msgstr "" @@ -5409,7 +8222,7 @@ msgid "Add a domain to the field so it only lists the available properties." msgstr "" #: ../../content/developer/howtos/rdtraining/13_inheritance.rst:156 -msgid "Now let's add the field to the view and check that everything is working well!" +msgid "In the next section let's add the field to the view and check that everything is working well!" msgstr "" #: ../../content/developer/howtos/rdtraining/13_inheritance.rst:159 @@ -5798,146 +8611,150 @@ msgid "We will start refactoring the code to match to the Odoo coding guidelines msgstr "" #: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:17 -msgid "**Reference**: you will find the Odoo coding guidelines in :ref:`reference/guidelines`." +msgid "**Reference**: you will find the Odoo coding guidelines in :doc:`/contributing/development/coding_guidelines`." msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:19 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:20 msgid "Polish your code." msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:21 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:22 msgid "Refactor your code to respect the coding guidelines. Don't forget to respect the module structure, the variable names, the method name convention, the model attribute order and the xml ids." msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:26 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:27 msgid "Your first Pull Request (PR)" msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:28 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:29 msgid "**The following is intended to be used by Odoo staff members only. All repositories mentioned are not accessible for third-parties.**" msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:31 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:32 msgid "Now that your code respects the Odoo code guidelines and is polished up, let's share it with others." msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:36 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:35 +msgid "Configure development repository" +msgstr "" + +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:37 msgid "We will start by creating a git development environment for the 'custom' folder, like we did in the beginning for 'odoo' and 'enterprise'. The PR will target the `odoo/technical-training-sandbox` repository." msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:39 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:40 msgid "To do this the first step is to `fork `__ in GitHub `this repository `__ to create your own development repository." msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:44 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:45 msgid "After you successfully created your development repository, we will configure your existing `$HOME/src/custom` folder to be able to commit your work." msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:59 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:60 msgid "Note that if your work is already in a :ref:`Git and GitHub configured folder ` the previous steps are not needed. This is the case when you start working in the 'odoo' or 'enterprise' folders." msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:64 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:65 msgid "Branch, Commit & Push" msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:66 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:67 msgid "Before creating the PR, a new working branch has to be created and used to commit the code. Afterwards the branch will be pushed to the development repository." msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:69 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:70 msgid "Create your working branch:" msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:75 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:76 msgid "Your branch name must follow the following name structure : --" msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:77 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:78 msgid "Example: The branch master-sale-fixes-abc on odoo-dev/odoo is a branch containing fixes for the sales app in the odoo/odoo repository, to be deployed in master and done by ABC." msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:80 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:81 msgid "Commit your code:" msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:89 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:90 msgid "**Everyone reads your commit messages!**" msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:91 -msgid "The commit message is very important, follow the :ref:`Developer guidelines `." +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:92 +msgid "The commit message is very important, follow the :ref:`Git guidelines `." msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:94 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:96 msgid "Push your new branch to your development repository:" msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:100 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:102 msgid "NEVER use `git push --force` (or `git push -f`) with a branch that does not belong to you or in a stable branch. Never, never, never!" msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:103 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:105 msgid "Remember that you can use `git status` at any point to check the current status of your branch" msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:104 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:106 msgid "You can create git aliases to shorten some of these commands. Ask your colleagues if they use git aliases and get inspired by their work." msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:108 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:110 msgid "Create your first PR" msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:110 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:112 msgid "After pushing your branch to your development repository you will see an output similar to:" msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:128 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:130 msgid "There are two ways to create the PR:" msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:130 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:132 msgid "Click on the link displayed in the output of the push command." msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:131 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:133 msgid "Open a browser in your development repository `https://github.com/xyz-odoo/technical-training-sandbox`. There will be a button to create a new pull request." msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:136 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:138 msgid "You will notice that your commit message is used as the pull request message. This occurs if you have only 1 commit. If you have multiple commits, you can either make a summary of the commits as the PR message or if there aren't that many commits you can just copy/paste your commit messages as the PR message." msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:143 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:145 msgid "Additional Info for Odoo Staff" msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:145 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:147 msgid "Now that you know the basics, here are some more useful pages if you haven't seen them already:" msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:147 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:149 msgid "Our `welcome `__ page has extra info about working at Odoo as well as additional `tutorials `__ that are both language and Odoo specific." msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:151 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:153 msgid "Once you are ready to start doing tasks, it is important to note that Odoo follows a `rebasing workflow instead of merging `__ for your PRs. `This cheatsheet `__ describes how to do this flow. If you want to become more of a rebasing master, then `this tutorial `__ is extra useful." msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:159 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:161 msgid "Test on the runbot" msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:161 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:163 msgid "Odoo has its own :abbr:`CI (Continuous integration)` server named `runbot `__. All commits, branches and PR will be tested to avoid regressions or breaking of the stable versions. All the runs that pass the tests are deployed on their own server with demo data." msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:165 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:167 msgid "Play with the runbot." msgstr "" -#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:167 +#: ../../content/developer/howtos/rdtraining/16_guidelines_pr.rst:169 msgid "Feel free to go to the runbot website and open the last stable version of Odoo to check out all the available applications and functionalities." msgstr "" @@ -6025,7 +8842,7 @@ msgid "The documentation related to this topic can be found in :ref:`the securit msgstr "" #: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:57 -msgid ":ref:`The guidelines ` document the format and location of master data items." +msgid ":doc:`/contributing/development/coding_guidelines` document the format and location of master data items." msgstr "" #: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:60 @@ -6033,8 +8850,8 @@ msgstr "" #: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:207 #: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:276 #: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:320 -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:401 -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:472 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:397 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:468 msgid "**Goal**" msgstr "" @@ -6195,7 +9012,7 @@ msgid "C" msgstr "" #: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:170 -msgid "A user with the groups A and C will be able to do anything but delete the object while one with B and C will be able to read or update, but not search or read." +msgid "A user with the groups A and C will be able to do anything but delete the object while one with B and C will be able to read and update it, but not create or delete it." msgstr "" #: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:175 @@ -6372,206 +9189,202 @@ msgid "Add a print to ``action_sold`` in ``estate_account`` before the creation msgstr "" #: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:340 -msgid "Execute ``bypass.py`` in ``estate_account``, giving it the name of your database, and the name of your version of ``action_sold`` (unless you named it ``action_sold`` then it's fine)" -msgstr "" - -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:344 msgid "You should see ``reached`` in your Odoo log, followed by an access error." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:346 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:342 msgid "Just because you're already in Python code does not mean any access right or rule has or will be checked." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:349 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:345 msgid "*Currently* the accesses are implicitly checked by accessing data on ``self`` as well as calling ``super()`` (which does the same and *updates* ``self``), triggering access errors and cancelling the transaction \"uncreating\" our invoice." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:354 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:350 msgid "*However* if this changes in the future, or we add side-effects to the method (e.g. reporting the sale to a government agency), or bugs are introduced in ``estate``, ... it would be possible for non-agents to trigger operations they should not have access to." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:359 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:355 msgid "Therefore when performing non-CRUD operations, or legitimately bypassing the ORM or security, or when triggering other side-effects, it is extremely important to perform *explicit security checks*." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:363 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:359 msgid "Explicit security checks can be performed by:" msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:365 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:361 msgid "Checking who the current user is (``self.env.user``) and match them against specific models or records." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:367 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:363 msgid "Checking that the current user has specific groups hard-coded to allow or deny an operation (``self.env.user.has_group``)." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:369 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:365 msgid "Calling the ``check_access_rights(operation)`` method on a recorset, this verifies whether the current user has access to the model itself." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:371 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:367 msgid "Calling ``check_access_rule(operations)`` on a non-empty recorset, this verifies that the current user is allowed to perform the operation on *every* record of the set." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:375 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:371 msgid "Checking access rights and checking record rules are separate operations, if you're checking record rules you usually want to also check access rights beforehand." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:381 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:377 msgid "Before creating the invoice, use ``check_access_rights`` and ``check_access_rule`` to ensure that the current user can update properties in general, and this specific property in particular." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:385 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:381 msgid "Re-run the bypass script, check that the error occurs before the print." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:390 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:386 msgid "Multi-company security" msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:394 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:390 msgid ":ref:`reference/howtos/company` for an overview of multi-company facilities in general, and :ref:`multi-company security rules ` this in particular." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:398 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:394 msgid "Documentation on rules in general can, again, be found at :ref:`reference/security/rules`." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:403 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:399 msgid "At the end of this section, agents should only have access to properties of their agency (or agencies)." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:406 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:402 msgid "For one reason or an other we might need to manage our real-estate business as multiple companies e.g. we might have largely autonomous agencies, or a franchise setup, or multiple brands (possibly from having acquired other real-estate businesses) which remain legally or financially separate from one another." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:412 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:408 msgid "Odoo can be used to manage multiple companies inside the same system, however the actual handling is up to individual modules: Odoo itself provides the tools to manage the issue like company-dependent fields and *multi-company rules*, which is what we're going to concern ourselves with." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:417 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:413 msgid "We want different agencies to be \"siloed\" from one another, with properties belonging to a given agency and users (whether agents or managers) only able to see properties linked to their agency." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:421 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:417 msgid "As before, because this is based on non-trivial records it's easier for a user to relax rules than to tighten them so it makes sense to default to a relatively stronger security model." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:425 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:421 msgid "Multi-company rules are simply record rules based on the ``company_ids`` or ``company_id`` fields:" msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:428 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:424 msgid "``company_ids`` is all the companies to which the current user has access" msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:429 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:425 msgid "``company_id`` is the currently active company (the one the user is currently working in / for)." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:432 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:428 msgid "Multi-company rules will *usually* use the former i.e. check if the record is associated with *one* of the companies the user has access to:" msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:448 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:444 msgid "Multi-company rules are usually :ref:`global `, otherwise there is a high risk that additional rules would allow bypassing the muti-company rules." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:454 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:450 msgid "Add a ``company_id`` field to ``estate.property``, it should be required (we don't want agency-less properties), and should default to the current user's current company." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:457 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:453 msgid "Create a new company, with a new estate agent in that company." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:458 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:454 msgid "The manager should be a member of both companies." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:459 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:455 msgid "The old agent should only be a member of the old company." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:460 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:456 msgid "Create a few properties in each company (either use the company selector as the manager or use the agents). Unset the default salesman to avoid triggering *that* rule." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:463 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:459 msgid "All agents can see all companies, which is not desirable, add the record rule restricting this behaviour." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:466 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:462 msgid "remember to ``--update`` your module when you change its model or data" msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:470 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:466 msgid "Visibility != security" msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:474 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:470 msgid "At the end of this section, real-estate agents should not see the Settings menu of the rea-estate application, but should still be able to set the property type or tags." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:478 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:474 msgid "Specific Odoo models can be associated directly with groups (or companies, or users). It is important to figure out whether this association is a *security* or a *visibility* feature before using it:" msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:482 -msgid "*Visibility* features mean a user can still access the model or record otherwise, either through an other part of the interface or by :doc:`perform operations remotely using RPC <../../misc/api/odoo>`, things might just not be visible in the web interface in some contexts." +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:478 +msgid "*Visibility* features mean a user can still access the model or record otherwise, either through an other part of the interface or by :doc:`perform operations remotely using RPC <../../api/external_api>`, things might just not be visible in the web interface in some contexts." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:486 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:482 msgid "*Security* features mean a user can not access records, fields or operations." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:488 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:484 msgid "Here are some examples:" msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:490 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:486 msgid "Groups on *model fields* (in Python) are a security feature, users outside the group will not be able to retrieve the field, or even know it exists." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:493 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:489 msgid "Example: in server actions, `only system users can see or update Python code `_." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:495 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:491 msgid "Groups on *view elements* (in XML) are a visibility feature, users outside the group will not be able to see the element or its content in the form but they will otherwise be able to interact with the object (including that field)." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:499 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:495 msgid "Example: `only managers have an immediate filter to see their teams' leaves `_." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:501 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:497 msgid "Groups on menus and actions are visibility features, the menu or action will not be shown in the interface but that doesn't prevent directly interacting with the underlying object." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:505 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:501 msgid "Example: `only system administrators can see the elearning settings menu `_." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:510 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:506 msgid "Real Estate agents can not add property types or tags, and can see their options from the Property form view when creating it." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:513 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:509 msgid "The Settings menu just adds noise to their interface, it should only be visible to managers." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:516 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:512 msgid "Despite not having access to the Property Types and Property Tags menus anymore, agents can still access the underlying objects since they can still select tags or a type to set on their properties." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:520 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:516 msgid "An Odoo Application is a group of related modules covering a business area or field, usually composed of a base module and a number of expansions on that base to add optional or specific features, or link to other business areas." msgstr "" -#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:525 +#: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:521 msgid "For applications which would be used by most or every employees, the \"application user\" role might be done away with and its abilities granted to all employees directly e.g. generally all employees can submit expenses or take time off." msgstr "" @@ -6781,16 +9594,6 @@ msgstr "" msgid "120,000" msgstr "" -#: ../../content/developer/howtos/rdtraining/C_data.rst:184 -#: ../../content/developer/misc/api/extract_api.rst:122 -msgid "6" -msgstr "" - -#: ../../content/developer/howtos/rdtraining/C_data.rst:184 -#: ../../content/developer/misc/api/extract_api.rst:199 -msgid "1" -msgstr "" - #: ../../content/developer/howtos/rdtraining/C_data.rst:185 msgid "100" msgstr "" @@ -7310,7 +10113,7 @@ msgid "Advanced J: PDF Reports" msgstr "" #: ../../content/developer/howtos/rdtraining/J_reports.rst:9 -msgid "This tutorial assumes you have completed the :ref:`Core Training ` and have installed :ref:`wkhtmltopdf `." +msgid "This tutorial assumes you have completed the :ref:`Core Training ` and have installed :ref:`wkhtmltopdf `." msgstr "" #: ../../content/developer/howtos/rdtraining/J_reports.rst:17 @@ -7793,7 +10596,7 @@ msgid "Note" msgstr "" #: ../../content/developer/howtos/rdtraining/K_dashboard.rst:302 -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "id" msgstr "" @@ -8643,13 +11446,6 @@ msgstr "" msgid "Event" msgstr "" -#: ../../content/developer/howtos/themes.rst:959 -#: ../../content/developer/misc/api/extract_api.rst:42 -#: ../../content/developer/misc/api/extract_api.rst:145 -#: ../../content/developer/misc/api/extract_api.rst:359 -msgid "Description" -msgstr "" - #: ../../content/developer/howtos/themes.rst:961 msgid "``start``" msgstr "" @@ -8890,6 +11686,186 @@ msgstr "" msgid "Descriptions, while not important to search engine rankings, are extremely important in gaining user click-through. These are an opportunity to advertise content and to let people searching know exactly whether the given page contains the information they're looking for. It is important that titles and descriptions on each page are unique." msgstr "" +#: ../../content/developer/howtos/translations.rst:7 +msgid "Translating Modules" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:9 +msgid "This section explains how to provide translation abilities to your module." +msgstr "" + +#: ../../content/developer/howtos/translations.rst:11 +msgid "If you want to contribute to the translation of Odoo itself, please refer to the `Odoo Wiki page `_." +msgstr "" + +#: ../../content/developer/howtos/translations.rst:15 +msgid "Exporting translatable term" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:17 +msgid "A number of terms in your modules are \"implicitly translatable\" as a result, even if you haven't done any specific work towards translation you can export your module's translatable terms and may find content to work with." +msgstr "" + +#: ../../content/developer/howtos/translations.rst:21 +msgid "needs technical features" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:23 +msgid "Translations export is performed via the administration interface by logging into the backend interface and opening :menuselection:`Settings --> Translations --> Import / Export --> Export Translations`" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:27 +msgid "leave the language to the default (new language/empty template)" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:28 +msgid "select the `PO File`_ format" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:29 +msgid "select your module" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:30 +msgid "click :guilabel:`Export` and download the file" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:36 +msgid "This gives you a file called :file:`{yourmodule}.pot` which should be moved to the :file:`{yourmodule}/i18n/` directory. The file is a *PO Template* which simply lists translatable strings and from which actual translations (PO files) can be created. PO files can be created using msginit_, with a dedicated translation tool like POEdit_ or by simply copying the template to a new file called :file:`{language}.po`. Translation files should be put in :file:`{yourmodule}/i18n/`, next to :file:`{yourmodule}.pot`, and will be automatically loaded by Odoo when the corresponding language is installed (via :menuselection:`Settings --> Translations --> Languages`)" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:46 +msgid "translations for all loaded languages are also installed or updated when installing or updating a module" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:50 +msgid "Implicit exports" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:52 +msgid "Odoo automatically exports translatable strings from \"data\"-type content:" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:54 +msgid "in non-QWeb views, all text nodes are exported as well as the content of the ``string``, ``help``, ``sum``, ``confirm`` and ``placeholder`` attributes" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:57 +msgid "QWeb templates (both server-side and client-side), all text nodes are exported except inside ``t-translation=\"off\"`` blocks, the content of the ``title``, ``alt``, ``label`` and ``placeholder`` attributes are also exported" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:61 +msgid "for :class:`~odoo.fields.Field`, unless their model is marked with ``_translate = False``:" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:64 +msgid "their ``string`` and ``help`` attributes are exported" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:65 +msgid "if ``selection`` is present and a list (or tuple), it's exported" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:66 +msgid "if their ``translate`` attribute is set to ``True``, all of their existing values (across all records) are exported" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:68 +msgid "help/error messages of :attr:`~odoo.models.Model._constraints` and :attr:`~odoo.models.Model._sql_constraints` are exported" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:72 +msgid "Explicit exports" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:74 +msgid "When it comes to more \"imperative\" situations in Python code or Javascript code, Odoo cannot automatically export translatable terms so they must be marked explicitly for export. This is done by wrapping a literal string in a function call." +msgstr "" + +#: ../../content/developer/howtos/translations.rst:79 +msgid "In Python, the wrapping function is :func:`odoo._`::" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:83 +msgid "In JavaScript, the wrapping function is generally :js:func:`odoo.web._t`:" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:91 +msgid "Only literal strings can be marked for exports, not expressions or variables. For situations where strings are formatted, this means the format string must be marked, not the formatted string" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:95 +msgid "The lazy version of `_` and `_t` is :func:`odoo._lt` in python and :js:func:`odoo.web._lt` in javascript. The translation lookup is executed only at rendering and can be used to declare translatable properties in class methods of global variables." +msgstr "" + +#: ../../content/developer/howtos/translations.rst:102 +msgid "Translations of a module are **not** exposed to the front end by default and thus are not accessible from JavaScript. In order to achieve that, the module name has to be either prefixed with `website` (just like `website_sale`, `website_event` etc.) or explicitly register by implementing :func:`_get_translation_frontend_modules_name` for the `ir.http` model." +msgstr "" + +#: ../../content/developer/howtos/translations.rst:108 +msgid "This could look like the following::" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:121 +msgid "Variables" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:122 +msgid "**Don't** the extract may work but it will not translate the text correctly::" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:126 +msgid "**Do** set the dynamic variables as a parameter of the translation lookup (this will fallback on source in case of missing placeholder in the translation)::" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:133 +msgid "Blocks" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:134 +msgid "**Don't** split your translation in several blocks or multiples lines::" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:144 +msgid "**Do** keep in one block, giving the full context to translators::" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:155 +msgid "Plural" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:156 +msgid "**Don't** pluralize terms the English-way::" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:162 +msgid "**Do** keep in mind every language has different plural forms::" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:170 +msgid "Read vs Run Time" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:172 +msgid "**Don't** invoke translation lookup at server launch::" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:185 +msgid "**Don't** invoke translation lookup when the javascript file is read::" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:196 +msgid "**Do** use lazy translation lookup method::" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:210 +msgid "or **do** evaluate dynamically the translatable content::" +msgstr "" + +#: ../../content/developer/howtos/translations.rst:219 +msgid "**Do** in the case where the translation lookup is done when the JS file is *read*, use `_lt` instead of `_t` to translate the term when it is *used*::" +msgstr "" + #: ../../content/developer/howtos/web.rst:5 msgid "Customizing the web client" msgstr "" @@ -9362,24 +12338,6 @@ msgstr "" msgid "When using :class:`~odoo.Widget`'s integration it is not possible to provide additional data to the template. The template will be given a single ``widget`` context variable, referencing the widget being rendered right before :func:`~odoo.Widget.start` is called (the widget's state will essentially be that set up by :func:`~odoo.Widget.init`):" msgstr "" -#: ../../content/developer/howtos/web.rst:655 -#: ../../content/developer/misc/api/odoo.rst:210 -#: ../../content/developer/misc/api/odoo.rst:296 -#: ../../content/developer/misc/api/odoo.rst:338 -#: ../../content/developer/misc/api/odoo.rst:377 -#: ../../content/developer/misc/api/odoo.rst:417 -#: ../../content/developer/misc/api/odoo.rst:481 -#: ../../content/developer/misc/api/odoo.rst:514 -#: ../../content/developer/misc/api/odoo.rst:562 -#: ../../content/developer/misc/api/odoo.rst:645 -#: ../../content/developer/misc/api/odoo.rst:716 -#: ../../content/developer/misc/api/odoo.rst:785 -#: ../../content/developer/misc/api/odoo.rst:834 -#: ../../content/developer/misc/api/odoo.rst:946 -#: ../../content/developer/misc/api/odoo.rst:1111 -msgid "Result:" -msgstr "" - #: ../../content/developer/howtos/web.rst:662 msgid "Template Declaration" msgstr "" @@ -9746,27 +12704,12 @@ msgstr "" msgid ":func:`~odoo.web.Model.call` can be used to call any (public) method of an Odoo model. It takes the following positional arguments:" msgstr "" -#: ../../content/developer/howtos/web.rst:1326 -#: ../../content/developer/misc/api/odoo.rst:856 -#: ../../content/developer/misc/api/odoo.rst:992 -#: ../../content/developer/reference/addons/actions.rst:19 -#: ../../content/developer/reference/addons/actions.rst:416 -#: ../../content/developer/reference/addons/data.rst:221 -#: ../../content/developer/reference/addons/views.rst:1458 -#: ../../content/developer/reference/addons/views.rst:1492 -#: ../../content/developer/reference/addons/views.rst:1572 -#: ../../content/developer/reference/addons/views.rst:1682 -#: ../../content/developer/reference/addons/views.rst:1843 -#: ../../content/developer/reference/addons/views.rst:1979 -msgid "``name``" -msgstr "" - #: ../../content/developer/howtos/web.rst:1327 msgid "The name of the method to call, ``my_method`` here" msgstr "" #: ../../content/developer/howtos/web.rst:1343 -#: ../../content/developer/reference/addons/views.rst:1460 +#: ../../content/developer/reference/addons/views.rst:1489 msgid "``args``" msgstr "" @@ -10831,3986 +13774,144 @@ msgstr "" msgid "With this, the *Product Categories* sidebar will automatically be enabled when the *Academy* module is installed." msgstr "" -#: ../../content/developer/misc.rst:5 -msgid "Misc" -msgstr "" - -#: ../../content/developer/misc/api.rst:5 -#: ../../content/developer/reference/addons/http.rst:52 -#: ../../content/developer/reference/addons/orm.rst:48 -#: ../../content/developer/reference/javascript/qweb.rst:592 -msgid "API" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:5 -msgid "Extract API" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:7 -msgid "Odoo provides a service allowing you to automate the processing of your invoices. The service scans your document using an Optical Character Recognition (OCR) engine and then uses AI-based algorithms to extract the fields of interest such as the total, the due date, or the invoice lines. More functional information can be found on the `demo page `_." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:11 -msgid "This service is a paid service. Each invoice processing will cost you one credit. Three different sized packs can be bought on `iap.odoo.com `_." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:13 -msgid "You can either use this service directly in the Odoo Accounting App or through the API. The Extract API which is detailed in the next section allows you to integrate our service directly into your own projects." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:17 -msgid "Invoices" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:18 -msgid "The extract API use the JSON-RPC2_ protocol. The diffent routes are located at the following address: **https://iap-extract.odoo.com**." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:21 -msgid "Expected successful flow" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:23 -msgid "Call :ref:`webservices/extract_api/invoice_parse` to submit your invoices (one call for each invoice). On success, you receive a `document_id` in the response." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:24 -msgid "You then have to regularly poll :ref:`webservices/extract_api/invoice_get_results` to get the document's parsing status." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:25 -msgid "Once the result received, you can validate it by calling :ref:`webservices/extract_api/invoice_validate` and sending the expected values. This step is optional but greatly helps the system to improve." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:28 -msgid "These 3 routes are detailed in this :ref:`section `. The HTTP POST method should be used for all of them. A python implementation of the full flow can be found :download:`here ` and a token for integration testing is provided in the :ref:`integration testing section `." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:34 -msgid "Routes" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:39 -msgid "``/iap/invoice_extract/parse``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:43 -msgid "Request a processing of the document from the OCR. The route will return a `document_id` you can use to obtain the result of your request." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:46 -#: ../../content/developer/misc/api/extract_api.rst:149 -#: ../../content/developer/misc/api/extract_api.rst:364 -msgid "Request Body" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:48 -#: ../../content/developer/misc/api/extract_api.rst:151 -#: ../../content/developer/misc/api/extract_api.rst:366 -msgid "``jsonrpc`` (required)" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:49 -msgid "Must be exactly “2.0”." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:50 -#: ../../content/developer/misc/api/extract_api.rst:153 -#: ../../content/developer/misc/api/extract_api.rst:368 -msgid "``method`` (required)" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:51 -msgid "Must be “call”." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:52 -#: ../../content/developer/misc/api/extract_api.rst:155 -msgid "``id`` (required)" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:53 -msgid "An identifier established by the client. It allows the client to keep track of which response goes with which request. This makes asynchronous calls easier." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:76 -#: ../../content/developer/misc/api/extract_api.rst:374 -msgid "``params``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:55 -msgid "``account_token`` (required)" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:56 -msgid "The token of the account from which credits will be taken. Each successful call costs one token." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:58 -msgid "``version`` (optional)" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:58 -msgid "The version will determine the format of your requests and the format of the server response. Some results can be unavailable in older versions. For the current version 1.2.0, send ‘120’. If not specified, the latest version will be used." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:62 -msgid "``documents`` (required)" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:61 -msgid "The invoice must be provided as a string in the ASCII encoding. The list should contain only one string. If multiple strings are provided only the first string corresponding to a pdf will be processed. If no pdf is found, the first string will be processed. This field is a list only for legacy reasons. The supported extensions are *pdf*, *png*, *jpg* and *bmp*." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:76 -msgid "``user_infos`` (required)" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:65 -msgid "Information concerning the person to whom the invoice is intended. This information is not required in order for the service to work but it greatly improves the quality of the result." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:67 -msgid "``user_company_vat`` (optional)" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:68 -msgid "VAT number of the client." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:69 -msgid "``user_company_name`` (optional)" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:70 -msgid "Name of the client’s company." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:71 -msgid "``user_company_country_code`` (optional)" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:72 -msgid "Country code of the client. Format: `ISO3166 alpha-2 `_." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:73 -msgid "``user_lang`` (optional)" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:74 -msgid "The client language. Format: *language_code + _ + locale* (ex: fr_FR, en_US)." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:76 -msgid "``user_email`` (optional)" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:76 -msgid "The client email." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:100 -#: ../../content/developer/misc/api/extract_api.rst:177 -#: ../../content/developer/misc/api/extract_api.rst:465 -#: ../../content/developer/reference/addons/http.rst:78 -msgid "Response" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:102 -#: ../../content/developer/misc/api/extract_api.rst:179 -#: ../../content/developer/misc/api/extract_api.rst:467 -msgid "``jsonrpc``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:103 -msgid "A string specifying the version of the JSON-RPC protocol. It will be “2.0”." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:104 -#: ../../content/developer/misc/api/extract_api.rst:181 -#: ../../content/developer/misc/api/extract_api.rst:469 -#: ../../content/developer/reference/addons/actions.rst:219 -#: ../../content/developer/reference/addons/data.rst:70 -#: ../../content/developer/reference/addons/data.rst:155 -#: ../../content/developer/reference/addons/data.rst:232 -#: ../../content/developer/reference/addons/data.rst:242 -#: ../../content/developer/reference/addons/views.rst:810 -msgid "``id``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:105 -msgid "The identifier you set in the request body." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:112 -#: ../../content/developer/misc/api/extract_api.rst:191 -#: ../../content/developer/misc/api/extract_api.rst:475 -msgid "``result``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:107 -#: ../../content/developer/misc/api/extract_api.rst:186 -#: ../../content/developer/misc/api/extract_api.rst:472 -msgid "``status_code``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:108 -#: ../../content/developer/misc/api/extract_api.rst:187 -#: ../../content/developer/misc/api/extract_api.rst:473 -msgid "|STATUS_CODE|" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:109 -#: ../../content/developer/misc/api/extract_api.rst:188 -#: ../../content/developer/misc/api/extract_api.rst:475 -msgid "``status_msg``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:110 -#: ../../content/developer/misc/api/extract_api.rst:189 -#: ../../content/developer/misc/api/extract_api.rst:475 -msgid "|STATUS_MSG|" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:112 -msgid "``document_id``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:112 -#: ../../content/developer/misc/api/extract_api.rst:191 -msgid "Only present if the request is successful." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:114 -msgid "The API does not actually use the JSON-RPC error scheme. Instead the API has its own error scheme bundled inside a successful JSON-RPC result." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:117 -#: ../../content/developer/misc/api/extract_api.rst:196 -#: ../../content/developer/misc/api/extract_api.rst:478 -msgid "status_code" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:117 -#: ../../content/developer/misc/api/extract_api.rst:196 -#: ../../content/developer/misc/api/extract_api.rst:478 -msgid "status_msg" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:119 -#: ../../content/developer/misc/api/extract_api.rst:198 -#: ../../content/developer/misc/api/extract_api.rst:480 -msgid "0" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:119 -#: ../../content/developer/misc/api/extract_api.rst:198 -#: ../../content/developer/misc/api/extract_api.rst:480 -msgid "Success" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:120 -#: ../../content/developer/misc/api/extract_api.rst:200 -msgid "2" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:120 -#: ../../content/developer/misc/api/extract_api.rst:200 -msgid "An error occurred" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:121 -msgid "3" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:121 -msgid "You don't have enough credit" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:122 -msgid "Unsupported file format" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:123 -#: ../../content/developer/misc/api/extract_api.rst:201 -msgid "9" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:123 -#: ../../content/developer/misc/api/extract_api.rst:201 -msgid "Server is currently under maintenance. Please try again later." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:142 -msgid "``/iap/invoice_extract/get_results``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:146 -msgid "Request the results of the documents ids obtained with the :ref:`/parse ` route. Can either return the results or a \"request pending\" message." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:152 -#: ../../content/developer/misc/api/extract_api.rst:154 -#: ../../content/developer/misc/api/extract_api.rst:156 -#: ../../content/developer/misc/api/extract_api.rst:159 -#: ../../content/developer/misc/api/extract_api.rst:180 -#: ../../content/developer/misc/api/extract_api.rst:182 -#: ../../content/developer/misc/api/extract_api.rst:367 -#: ../../content/developer/misc/api/extract_api.rst:369 -#: ../../content/developer/misc/api/extract_api.rst:468 -#: ../../content/developer/misc/api/extract_api.rst:470 -msgid "|SAME_AS_PARSE|" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:161 -msgid "``params``:" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:158 -msgid "``version`` (required)" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:161 -msgid "``documents_ids`` (required)" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:161 -msgid "The list of ``document_id`` for which you want to get the current parsing status." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:184 -msgid "Dictionary where each key is a document_id. For each ``document_id``:" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:191 -msgid "``results``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:193 -msgid "result keys are strings despite the fact that the document_ids given in the request body are integers." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:199 -msgid "Not ready" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:234 -msgid "``feature_result``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:236 -msgid "Each field of interest we want to extract from the invoice such as the total or the due date are also called features. An exhaustive list of all the extracted features can be found in the table below." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:238 -msgid "For each feature, we return a list of candidates and we spotlight the candidate our model predicts to be the best fit for the feature." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:240 -msgid "``selected_value``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:241 -msgid "The best candidate for this feature." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:243 -msgid "``words``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:243 -msgid "List of all the candidates for this feature ordered by decreasing score." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:255 -msgid "``candidate``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:257 -msgid "For each candidate we give its representation and position in the document. Candidates are sorted by decreasing order of suitability." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:259 -msgid "``content``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:260 -msgid "Representation of the candidate." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:262 -msgid "``coords``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:262 -msgid "``[center_x, center_y, width, height, rotation_angle]``. The position and dimensions are relative to the size of the page and are therefore between 0 and 1. The angle is a clockwise rotation measured in degrees." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:265 -#: ../../content/developer/reference/addons/data.rst:253 -msgid "``page``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:265 -msgid "Page of the original document on which the candidate is located (starts at 0)." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:277 -msgid "Feature name" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:277 -msgid "Specifities" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:279 -msgid "``SWIFT_code``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:279 -msgid "**content** is a dictionary encoded as a string." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:281 -msgid "It contains information about the detected SWIFT code (or `BIC `_)." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:284 -msgid "Keys:" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:286 -msgid "``bic``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:287 -msgid "detected BIC (string)." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:288 -#: ../../content/developer/reference/addons/views.rst:579 -#: ../../content/developer/reference/addons/views.rst:690 -msgid "``name`` (optional)" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:289 -msgid "bank name (string)." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:290 -msgid "``country_code``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:291 -msgid "ISO3166 alpha-2 country code of the bank (string)." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:292 -msgid "``city`` (optional)" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:293 -msgid "city of the bank (string)." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:295 -msgid "``verified_bic``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:295 -msgid "True if the BIC has been found in our DB (bool)." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:297 -msgid "Name and city are present only if verified_bic is true." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:299 -msgid "``VAT_Number``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:299 -#: ../../content/developer/misc/api/extract_api.rst:301 -#: ../../content/developer/misc/api/extract_api.rst:303 -#: ../../content/developer/misc/api/extract_api.rst:305 -#: ../../content/developer/misc/api/extract_api.rst:319 -#: ../../content/developer/misc/api/extract_api.rst:325 -msgid "**content** is a string" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:301 -msgid "``country``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:303 -msgid "``currency``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:305 -msgid "``date``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:307 -msgid "Format : *YYYY-MM-DD HH:MM:SS*" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:309 -msgid "``due_date``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:309 -msgid "Same as for ``date``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:311 -msgid "``global_taxes``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:311 -#: ../../content/developer/misc/api/extract_api.rst:317 -#: ../../content/developer/misc/api/extract_api.rst:321 -#: ../../content/developer/misc/api/extract_api.rst:323 -msgid "**content** is a float" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:313 -msgid "**candidate** has an additional field ``amount_type``. Its value is always percent." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:315 -msgid "**selected_values** is a list of candidates." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:317 -msgid "``global_taxes_amount``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:319 -msgid "``invoice_id``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:321 -msgid "``subtotal``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:323 -msgid "``total``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:325 -msgid "``supplier``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:329 -msgid "``feature_result`` for the ``invoice_lines`` feature" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:331 -msgid "It follows a more specific structure. It is basically a list of dictionaries where each dictionary represents an invoice line. Each value follows a :ref:`webservices/extract_api/invoice_get_results/feature_result` structure." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:356 -msgid "``/iap/invoice_extract/validate``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:360 -msgid "Route that validates the different features of an invoice. The validation step is an optional step but is strongly recommended. By telling the system if it were right or wrong for each feature you give an important feedback. It has no direct impact but it helps the system to greatly improve its prediction accuracy for the invoices you will send in the future." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:371 -msgid "``documents_id`` (required)" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:372 -msgid "Id of the document for which you want to validate the result." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:374 -msgid "``values``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:374 -msgid "Contains the validation for each feature. The field ``merged_line`` indicates if the ``invoice_lines`` have been merged or not." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:376 -msgid "You don't have to validate all the features in order for the validation to succeed. However :ref:`/validate ` can't be called multiple times for a same invoice. Therefore you should validate all the features you want to validate at once." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:398 -msgid "``validation``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:400 -msgid "A **validation** for a given feature is a dictionary containing the textual representation of the expected value for this given feature. This format apply for all the features except for ``global_taxes`` and ``invoice_lines`` which have more complex validation format." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:409 -msgid "validation for ``global_taxes``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:411 -msgid "**content** is a list of dictionaries. Each dictionary represents a tax:" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:413 -msgid "``amount``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:414 -msgid "Amount on which the tax is applied." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:415 -msgid "``tax_amount``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:416 -msgid "Amount of the tax." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:417 -msgid "``tax_amount_type``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:418 -msgid "Indicates if the ``tax_amount`` is a percentage or a fixed value. The type must be specified using the literal string \"fixed\" or \"percent\"." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:420 -msgid "``tax_price_include``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:420 -msgid "Indicates if ``amount`` already contains the tax or not." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:436 -msgid "validation for ``invoice_lines``" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:438 -msgid "**lines** is a list of dictionaries. Each dictionary represents an invoice line. The dictionary keys speak for themselves." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:481 -msgid "12" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:481 -msgid "Validation format is incorrect" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:500 -#: ../../content/developer/reference/addons/testing.rst:535 -msgid "Integration Testing" -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:502 -msgid "You can test your integration by using *integration_token* as ``account_token`` in the :ref:`/parse ` request." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:504 -msgid "Using this token put you in test mode and allows you to simulate the entire flow without really parsing a document and without being billed one credit for each successful invoice parsing." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:506 -msgid "The only technical differences in test mode is that the document you send is not parsed by the system and that the response you get from :ref:`/get_results ` is a hard-coded one." -msgstr "" - -#: ../../content/developer/misc/api/extract_api.rst:509 -msgid "A python implementation of the full flow can be found :download:`here `." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:6 -msgid "In-App Purchase" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:8 -msgid "In-App Purchase (IAP) allows providers of ongoing services through Odoo apps to be compensated for ongoing service use rather than — and possibly instead of — a sole initial purchase." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:12 -msgid "In that context, Odoo acts mostly as a *broker* between a client and an Odoo App Developer:" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:15 -msgid "Users purchase service tokens from Odoo." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:16 -msgid "Service providers draw tokens from the user's Odoo account when service is requested." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:21 -msgid "This document is intended for *service providers* and presents the latter, which can be done either via direct JSON-RPC2_ or if you are using Odoo using the convenience helpers it provides." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:26 -#: ../../content/developer/reference/javascript/javascript_reference.rst:18 -msgid "Overview" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:31 -msgid "The Players" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:33 -msgid "The Service Provider is (probably) you the reader, you will be providing value to the client in the form of a service paid per-use." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:35 -msgid "The Client installed your Odoo App, and from there will request services." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:36 -msgid "Odoo brokers crediting, the Client adds credit to their account, and you can draw credits from there to provide services." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:38 -msgid "The External Service is an optional player: *you* can either provide a service directly, or you can delegate the actual service acting as a bridge/translator between an Odoo system and the actual service." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:46 -msgid "The Credits" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:48 -msgid "The credits went from integer to float value starting **October 2018**. Integer values are still supported." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:51 -msgid "Every service provided through the IAP platform can be used by the clients with tokens or *credits*. The credits are an float unit and their monetary value depends on the service and is decided by the provider. This could be:" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:56 -msgid "for an sms service: 1 credit = 1 sms;" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:57 -msgid "for an ad service: 1 credit = 1 ad; or" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:58 -msgid "for a postage service: 1 credit = 1 post stamp." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:60 -msgid "A credit can also simply be associated with a fixed amount of money to palliate the variations of price (e.g. the prices of sms and stamps may vary following the countries)." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:64 -msgid "The value of the credits is fixed with the help of prepaid credit packs that the clients can buy on https://iap.odoo.com (see :ref:`Packs `)." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:67 -msgid "In the following explanations we will ignore the External Service, they are just a detail of the service you provide." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:73 -msgid "'Normal' service flow" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:75 -msgid "If everything goes well, the normal flow is the following:" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:77 -msgid "The Client requests a service of some sort." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:78 -msgid "The Service Provider asks Odoo if there are enough credits for the service in the Client's account, and creates a transaction over that amount." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:81 -msgid "The Service Provider provides the service (either on their own or calling to External Services)." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:83 -msgid "The Service Provider goes back to Odoo to capture (if the service could be provided) or cancel (if the service could not be provided) the transaction created at step 2." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:86 -msgid "Finally, the Service Provider notifies the Client that the service has been rendered, possibly (depending on the service) displaying or storing its results in the client's system." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:93 -msgid "Insufficient credits" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:95 -msgid "However, if the Client's account lacks credits for the service, the flow will be as follows:" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:97 -msgid "The Client requests a service as previously." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:98 -msgid "The Service Provider asks Odoo if there are enough credits on the Client's account and gets a negative reply." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:100 -msgid "This is signaled back to the Client." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:101 -msgid "Who is redirected to their Odoo account to credit it and re-try." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:105 -msgid "Building your service" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:107 -msgid "For this example, the service we will provide is ~~mining dogecoins~~ burning 10 seconds of CPU for a credit. For your own services, you could, for example:" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:110 -msgid "provide an online service yourself (e.g. convert quotations to faxes for business in Japan);" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:112 -msgid "provide an *offline* service yourself (e.g. provide accountancy service); or" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:113 -msgid "act as intermediary to an other service provider (e.g. bridge to an MMS gateway)." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:119 -msgid "Register the service on Odoo" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:121 -msgid "complete this part with screenshots" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:123 -msgid "The first step is to register your service on the IAP endpoint (production and/or test) before you can actually query user accounts. To create a service, go to your *Portal Account* on the IAP endpoint (https://iap.odoo.com for production, https://iap-sandbox.odoo.com for testing, the endpoints are *independent* and *not synchronized*). Alternatively, you can go to your portal on Odoo (https://iap.odoo.com/my/home) and select *In-App Services*." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:132 -msgid "On production, there is a manual validation step before the service can be used to manage real transactions. This step is automatically passed when on sandbox to ease the tests." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:136 -msgid "Log in then go to :menuselection:`My Account --> Your In-App Services`, click Create and provide the information of your service." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:140 -msgid "The service has *seven* important fields:" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:142 -msgid ":samp:`name` - :class:`ServiceName`: This is the string you will need to provide inside the client's :ref:`app ` when requesting a transaction from Odoo. (e.g. :class:`self.env['iap.account].get(name)`). As good practice, this should match the technical name of your app." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:147 -msgid ":samp:`label` - :class:`Label`: The name displayed on the shopping portal for the client." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:152 -msgid "Both the :class:`ServiceName` and :class:`Label` are unique. As good practice, the :class:`ServiceName` should usually match the name of your Odoo Client App." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:155 -msgid ":samp:`icon` - :class:`Icon`: A generic icon that will serve as default for your :ref:`packs `." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:158 -msgid ":samp:`key` - :class:`ServiceKey`: The developer key that identifies you in IAP (see :ref:`your service `) and allows to draw credits from the client's account. It will be shown only once upon creation of the service and can be regenerated at will." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:164 -msgid "Your :class:`ServiceKey` *is a secret*, leaking your service key allows other application developers to draw credits bought for your service(s)." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:168 -msgid ":samp:`trial credits` - :class:`Float`: This corresponds to the credits you are ready to offer upon first use to your app users. Note that such service will only be available to clients that have an active enterprise contract." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:172 -msgid ":samp:`privacy policy` - :class:`PrivacyPolicy`: This is an url to the privacy policy of your service. This should explicitly mention the **information you collect**, how you **use it, its relevance** to make your service work and inform the client on how they can **access, update or delete their personal information**." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:189 -msgid "You can then create *credit packs* which clients can purchase in order to use your service." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:195 -msgid "Packs" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:197 -msgid "A credit pack is essentially a product with five characteristics:" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:199 -msgid "Name: name of the pack," -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:200 -msgid "Icon: specific icon for the pack (if not provided, it will fallback on the service icon)," -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:201 -msgid "Description: details on the pack that will appear on the shop page as well as the invoice," -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:203 -msgid "Amount: amount of credits the client is entitled to when buying the pack," -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:204 -msgid "Price: price in EUR (for the time being, USD support is planned)." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:208 -msgid "Odoo takes a 25% commission on all pack sales. Adjust your selling price accordingly." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:213 -msgid "Depending on the strategy, the price per credit may vary from one pack to another." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:223 -msgid "Odoo App" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:225 -msgid "does this actually require apps?" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:227 -msgid "The second step is to develop an `Odoo App`_ which clients can install in their Odoo instance and through which they can *request* the services you provide. Our app will just add a button to the Partners form which lets a user request burning some CPU time on the server." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:232 -msgid "First, we will create an *odoo module* depending on ``iap``. IAP is a standard V11 module and the dependency ensures a local account is properly set up and we will have access to some necessary views and useful helpers." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:236 -#: ../../content/developer/misc/api/iap.rst:251 -msgid "`coalroller/__manifest__.py`" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:246 -msgid "Second, the \"local\" side of the integration. Here we will only be adding an action button to the partners view, but you can of course provide significant local value via your application and additional parts via a remote service." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:264 -msgid "`coalroller/views/res_partner_views.xml`" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:289 -msgid "We can now implement the action method/callback. This will *call our own server*." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:292 -msgid "There are no requirements when it comes to the server or the communication protocol between the app and our server, but ``iap`` provides a :func:`~odoo.addons.iap.tools.iap_tools.iap_jsonrpc` helper to call a JSON-RPC2_ endpoint on an other Odoo instance and transparently re-raise relevant Odoo exceptions (:class:`~odoo.addons.iap.tools.iap_tools.InsufficientCreditError`, :class:`odoo.exceptions.AccessError` and :class:`odoo.exceptions.UserError`)." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:299 -msgid "In that call, we will need to provide:" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:301 -msgid "any relevant client parameter (none here)," -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:302 -msgid "the :class:`token ` of the current client that is provided by the ``iap.account`` model's ``account_token`` field. You can retrieve the account for your service by calling :samp:`env['iap.account'].get({service_name})` where :class:`service_name ` is the name of the service registered on IAP endpoint." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:308 -msgid "`coalroller/models/res_partner.py`" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:336 -msgid "``iap`` automatically handles :class:`~odoo.addons.iap.tools.iap_tools.InsufficientCreditError` coming from the action and prompts the user to add credits to their account." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:340 -msgid ":func:`~odoo.addons.iap.tools.iap_tools.iap_jsonrpc` takes care of re-raising :class:`~odoo.addons.iap.models.iap.InsufficientCreditError` for you." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:345 -msgid "If you are not using :func:`~odoo.addons.iap.tools.iap_tools.iap_jsonrpc` you *must* be careful to re-raise :class:`~odoo.addons.iap.tools.iap_tools.InsufficientCreditError` in your handler otherwise the user will not be prompted to credit their account, and the next call will fail the same way." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:354 -#: ../../content/developer/reference/javascript/javascript_reference.rst:1097 -msgid "Service" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:356 -msgid "Though that is not *required*, since ``iap`` provides both a client helper for JSON-RPC2_ calls (:func:`~odoo.addons.iap.tools.iap_tools.iap_jsonrpc`) and a service helper for transactions (:class:`~odoo.addons.iap.tools.iap_tools.iap_charge`) we will also be implementing the service side as an Odoo module:" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:361 -#: ../../content/developer/misc/api/iap.rst:449 -msgid "`coalroller_service/__manifest__.py`" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:371 -msgid "Since the query from the client comes as JSON-RPC2_ we will need the corresponding controller which can call :class:`~odoo.addons.iap.tools.iap_tools.iap_charge` and perform the service within:" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:375 -#: ../../content/developer/misc/api/iap.rst:462 -msgid "`coalroller_service/controllers/main.py`" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:407 -msgid "for the actual IAP will the \"portal\" page be on odoo.com or iap.odoo.com?" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:409 -msgid "\"My Account\" > \"Your InApp Services\"?" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:412 -msgid "The :class:`~odoo.addons.iap.tools.iap_tools.iap_charge` helper will:" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:414 -msgid "authorize (create) a transaction with the specified number of credits, if the account does not have enough credits it will raise the relevant error" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:417 -msgid "execute the body of the ``with`` statement" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:418 -msgid "if the body of the ``with`` executes successfully, update the price of the transaction if needed" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:420 -msgid "capture (confirm) the transaction" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:421 -msgid "otherwise, if an error is raised from the body of the ``with``, cancel the transaction (and release the hold on the credits)" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:426 -msgid "By default, :class:`~odoo.addons.iap.tools.iap_tools.iap_charge` contacts the *production* IAP endpoint, https://iap.odoo.com. While developing and testing your service you may want to point it towards the *development* IAP endpoint https://iap-sandbox.odoo.com." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:431 -msgid "To do so, set the ``iap.endpoint`` config parameter in your service Odoo: in debug/developer mode, :menuselection:`Setting --> Technical --> Parameters --> System Parameters`, just define an entry for the key ``iap.endpoint`` if none already exists)." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:436 -msgid "The :class:`~odoo.addons.iap.tools.iap_tools.iap_charge` helper has two additional optional parameters we can use to make things clearer to the end-user." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:441 -#: ../../content/developer/reference/addons/reports.rst:197 -msgid "``description``" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:440 -msgid "is a message which will be associated with the transaction and will be displayed in the user's dashboard, it is useful to remind the user why the charge exists." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:447 -msgid "``credit_template``" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:444 -msgid "is the name of a :ref:`reference/qweb` template which will be rendered and shown to the user if their account has less credit available than the service provider is requesting, its purpose is to tell your users why they should be interested in your IAP offers." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:487 -msgid "`coalroller_service/views/no-credit.xml`" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:510 -msgid "how do you test your service?" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:513 -msgid "JSON-RPC2_ Transaction API" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:518 -msgid "The IAP transaction API does not require using Odoo when implementing your server gateway, calls are standard JSON-RPC2_." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:520 -msgid "Calls use different *endpoints* but the same *method* on all endpoints (``call``)." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:522 -msgid "Exceptions are returned as JSON-RPC2_ errors, the formal exception name is available on ``data.name`` for programmatic manipulation." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:525 -msgid "`iap.odoo.com documentation`_ for additional information." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:528 -#: ../../content/developer/misc/api/iap.rst:770 -msgid "Authorize" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:532 -msgid "Verifies that the user's account has at least as ``credit`` available *and creates a hold (pending transaction) on that amount*." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:535 -msgid "Any amount currently on hold by a pending transaction is considered unavailable to further authorize calls." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:538 -msgid "Returns a :class:`TransactionToken` identifying the pending transaction which can be used to capture (confirm) or cancel said transaction (`iap.odoo.com documentation`_)." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:544 -msgid "optional, helps users identify the reason for charges on their account" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:546 -msgid "optional, allows the user to benefit from trial credits if his database is eligible (see :ref:`Service registration `)" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.WebRequest.csrf_token:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../content/developer/reference/addons/mixins.rst:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.add:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.end_of:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.start_of:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.subtract:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Date.to_date:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Date.to_string:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.add:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Datetime.context_timestamp:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.end_of:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.start_of:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.subtract:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Datetime.to_datetime:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Datetime.to_string:0 -#: ../../../odoo/odoo/api.py:docstring of odoo.api.Environment.company:0 -#: ../../../odoo/odoo/api.py:docstring of odoo.api.Environment.companies:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.create:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.copy:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.default_get:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.name_create:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.browse:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.search:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.name_search:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.read:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.read_group:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.fields_view_get:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.name_get:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.get_metadata:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.filtered:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.mapped:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.browse_ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.browse_ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.browse_ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.ref:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel._populate_factories:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.cartesian:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.compute:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.constant:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.iterate:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.randint:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.randomize:0 -#: ../../content/developer/reference/javascript/javascript_reference.rst:0 -#: ../../content/developer/reference/javascript/javascript_reference.rst:0 -#: ../../content/developer/reference/javascript/javascript_reference.rst:0 -#: ../../content/developer/reference/javascript/mobile.rst:0 -#: ../../content/developer/reference/javascript/mobile.rst:0 -#: ../../content/developer/reference/javascript/qweb.rst:0 -msgid "Returns" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:548 -msgid ":class:`TransactionToken` if the authorization succeeded" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:0 -#: ../../content/developer/misc/api/iap.rst:0 -#: ../../content/developer/misc/api/iap.rst:0 -#: ../../content/developer/misc/api/iap.rst:0 -#: ../../content/developer/misc/api/iap.rst:0 -msgid "raises" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:549 -msgid ":class:`~odoo.exceptions.AccessError` if the service token is invalid" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:550 -msgid ":class:`~odoo.addons.iap.models.iap.InsufficientCreditError` if the account does not have enough credits" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:551 -msgid "``TypeError`` if the ``credit`` value is not an integer or a float" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:573 -#: ../../content/developer/misc/api/iap.rst:849 -msgid "Capture" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:577 -msgid "Confirms the specified transaction, transferring the reserved credits from the user's account to the service provider's." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:580 -msgid "Capture calls are idempotent: performing capture calls on an already captured transaction has no further effect." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:585 -msgid "optional parameter to capture a smaller amount of credits than authorized" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:586 -#: ../../content/developer/misc/api/iap.rst:618 -msgid ":class:`~odoo.exceptions.AccessError`" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:606 -#: ../../content/developer/misc/api/iap.rst:811 -msgid "Cancel" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:610 -msgid "Cancels the specified transaction, releasing the hold on the user's credits." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:613 -msgid "Cancel calls are idempotent: performing capture calls on an already cancelled transaction has no further effect." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:638 -msgid "Exceptions aside, these are *abstract types* used for clarity, you should not care how they are implemented." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:643 -msgid "String identifying your service on https://iap.odoo.com (production) as well as the account related to your service in the client's database." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:648 -msgid "Identifier generated for the provider's service. Each key (and service) matches a token of a fixed value, as generated by the service provide." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:651 -msgid "Multiple types of tokens correspond to multiple services. As an exampe, SMS and MMS could either be the same service (with an MMS being 'worth' multiple SMS) or could be separate services at separate price points." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:655 -msgid "Your service key *is a secret*, leaking your service key allows other application developers to draw credits bought for your service(s)." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:661 -msgid "Identifier for a user account." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:665 -msgid "Transaction identifier, returned by the authorization process and consumed by either capturing or cancelling the transaction." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:670 -msgid "Raised during transaction authorization if the credits requested are not currently available on the account (either not enough credits or too many pending transactions/existing holds)." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:677 -msgid "Raised by:" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:679 -msgid "any operation to which a service token is required, if the service token is invalid; or" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:680 -msgid "any failure in an inter-server call. (typically, in :func:`~odoo.addons.iap.tools.iap_tools.iap_jsonrpc`)." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:685 -msgid "Raised by any unexpected behaviour at the discretion of the App developer (*you*)." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:689 -msgid "Test the API" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:691 -msgid "In order to test the developed app, we propose a sandbox platform that allows you to:" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:693 -msgid "Test the whole flow from the client's point of view - Actual services and transactions that can be consulted. (again this requires to change the endpoint, see the danger note in :ref:`Service `)." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:696 -msgid "Test the API." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:698 -msgid "The latter consists in specific tokens that will work on **IAP-Sandbox only**." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:700 -msgid "Token ``000000``: Represents a non-existing account. Returns an :class:`~odoo.addons.iap.tools.iap_tools.InsufficientCreditError` on authorize attempt." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:702 -msgid "Token ``000111``: Represents an account without sufficient credits to perform any service. Returns an :class:`~odoo.addons.iap.tools.iap_tools.InsufficientCreditError` on authorize attempt." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:704 -msgid "Token ``111111``: Represents an account with enough credits to perform any service. An authorize attempt will return a dummy transaction token that is processed by the capture and cancel routes." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:710 -msgid "Those tokens are only active on the IAP-Sanbox server." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:711 -msgid "The service key is completely ignored with this flow, If you want to run a robust test of your service, you should ignore these tokens." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:715 -msgid "Odoo Helpers" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:717 -msgid "For convenience, if you are implementing your service using Odoo the ``iap`` module provides a few helpers to make IAP flow even simpler." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:723 -msgid "Charging" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:727 -msgid "A *context manager* for authorizing and automatically capturing or cancelling transactions for use in the backend/proxy." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:730 -msgid "Works much like e.g. a cursor context manager:" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:732 -msgid "immediately authorizes a transaction with the specified parameters;" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:733 -msgid "executes the ``with`` body;" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:734 -msgid "if the body executes in full without error, captures the transaction;" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:735 -msgid "otherwise cancels it." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:737 -#: ../../content/developer/misc/api/iap.rst:776 -#: ../../content/developer/misc/api/iap.rst:817 -#: ../../content/developer/misc/api/iap.rst:855 -msgid "used to retrieve the ``iap.endpoint`` configuration key" -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:774 -msgid "Will authorize everything." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:815 -msgid "Will cancel an authorized transaction." -msgstr "" - -#: ../../content/developer/misc/api/iap.rst:853 -msgid "Will capture the amount ``credit`` on the given transaction." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:3 -msgid "External API" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:5 -msgid "Odoo is usually extended internally via modules, but many of its features and all of its data are also available from the outside for external analysis or integration with various tools. Part of the :ref:`reference/orm/model` API is easily available over XML-RPC_ and accessible from a variety of languages." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:11 -msgid "Connection" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:14 -msgid "Configuration" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:16 -msgid "If you already have an Odoo server installed, you can just use its parameters." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:20 -msgid "For Odoo Online instances (.odoo.com), users are created without a *local* password (as a person you are logged in via the Odoo Online authentication system, not by the instance itself). To use XML-RPC on Odoo Online instances, you will need to set a password on the user account you want to use:" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:26 -msgid "Log in your instance with an administrator account." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:27 -msgid "Go to :menuselection:`Settings --> Users & Companies --> Users`." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:28 -msgid "Click on the user you want to use for XML-RPC access." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:29 -msgid "Click on :guilabel:`Action` and select :guilabel:`Change Password`." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:30 -msgid "Set a :guilabel:`New Password` value then click :guilabel:`Change Password`." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:32 -msgid "The *server url* is the instance's domain (e.g. *https://mycompany.odoo.com*), the *database name* is the name of the instance (e.g. *mycompany*). The *username* is the configured user's login as shown by the *Change Password* screen." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:68 -msgid "API Keys" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:72 -msgid "Odoo has support for **api keys** and (depending on modules or settings) may **require** these keys to perform webservice operations." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:75 -msgid "The way to use API Keys in your scripts is to simply replace your **password** by the key. The login remains in-use. You should store the API Key as carefully as the password as they essentially provide the same access to your user account (although they can not be used to log-in via the interface)." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:80 -msgid "In order to add a key to your account, simply go to your :guilabel:`Preferences` (or :guilabel:`My Profile`):" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:86 -msgid "then open the :guilabel:`Account Security` tab, and click :guilabel:`New API Key`:" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:92 -msgid "Input a description for the key, **this description should be as clear and complete as possible**: it is the only way you will have to identify your keys later and know whether you should remove them or keep them around." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:96 -msgid "Click :guilabel:`Generate Key`, then copy the key provided. **Store this key carefully**: it is equivalent to your password, and just like your password the system will not be able to retrieve or show the key again later on. If you lose this key, you will have to create a new one (and probably delete the one you lost)." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:102 -msgid "Once you have keys configured on your account, they will appear above the :guilabel:`New API Key` button, and you will be able to delete them:" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:108 -msgid "**A deleted API key can not be undeleted or re-set**. You will have to generate a new key and update all the places where you used the old one." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:112 -msgid "Test database" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:114 -msgid "To make exploration simpler, you can also ask https://demo.odoo.com for a test database:" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:131 -msgid "PHP" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:140 -msgid "These examples use the `Ripcord `_ library, which provides a simple XML-RPC API. Ripcord requires that `XML-RPC support be enabled `_ in your PHP installation." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:146 -msgid "Since calls are performed over `HTTPS `_, it also requires that the `OpenSSL extension `_ be enabled." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:151 -msgid "Java" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:168 -msgid "These examples use the `Apache XML-RPC library `_." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:170 -msgid "The examples do not include imports as these imports couldn't be pasted in the code." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:174 -msgid "Logging in" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:176 -msgid "Odoo requires users of the API to be authenticated before they can query most data." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:179 -msgid "The ``xmlrpc/2/common`` endpoint provides meta-calls which don't require authentication, such as the authentication itself or fetching version information. To verify if the connection information is correct before trying to authenticate, the simplest call is to ask for the server's version. The authentication itself is done through the ``authenticate`` function and returns a user identifier (``uid``) used in authenticated calls instead of the login." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:243 -msgid "Calling methods" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:245 -msgid "The second endpoint is ``xmlrpc/2/object``. It is used to call methods of odoo models via the ``execute_kw`` RPC function." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:248 -msgid "Each call to ``execute_kw`` takes the following parameters:" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:250 -msgid "the database to use, a string" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:251 -msgid "the user id (retrieved through ``authenticate``), an integer" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:252 -msgid "the user's password, a string" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:253 -msgid "the model name, a string" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:254 -msgid "the method name, a string" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:255 -msgid "an array/list of parameters passed by position" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:256 -msgid "a mapping/dict of parameters to pass by keyword (optional)" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:260 -msgid "For instance, to see if we can read the ``res.partner`` model, we can call ``check_access_rights`` with ``operation`` passed by position and ``raise_exception`` passed by keyword (in order to get a true/false result rather than true/error):" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:303 -msgid "List records" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:305 -msgid "Records can be listed and filtered via :meth:`~odoo.models.Model.search`." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:307 -msgid ":meth:`~odoo.models.Model.search` takes a mandatory :ref:`domain ` filter (possibly empty), and returns the database identifiers of all records matching the filter." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:313 -msgid "To list customer companies, for instance:" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:345 -msgid "Pagination" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:347 -msgid "By default a search will return the ids of all records matching the condition, which may be a huge number. ``offset`` and ``limit`` parameters are available to only retrieve a subset of all matched records." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:384 -msgid "Count records" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:386 -msgid "Rather than retrieve a possibly gigantic list of records and count them, :meth:`~odoo.models.Model.search_count` can be used to retrieve only the number of records matching the query. It takes the same :ref:`domain ` filter as :meth:`~odoo.models.Model.search` and no other parameter." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:424 -msgid "Calling ``search`` then ``search_count`` (or the other way around) may not yield coherent results if other users are using the server: stored data could have changed between the calls." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:429 -msgid "Read records" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:431 -msgid "Record data are accessible via the :meth:`~odoo.models.Model.read` method, which takes a list of ids (as returned by :meth:`~odoo.models.Model.search`), and optionally a list of fields to fetch. By default, it fetches all the fields the current user can read, which tends to be a huge amount." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:487 -msgid "Conversely, picking only three fields deemed interesting." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:521 -msgid "Even if the ``id`` field is not requested, it is always returned." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:524 -msgid "List record fields" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:526 -msgid ":meth:`~odoo.models.Model.fields_get` can be used to inspect a model's fields and check which ones seem to be of interest." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:529 -msgid "Because it returns a large amount of meta-information (it is also used by client programs) it should be filtered before printing, the most interesting items for a human user are ``string`` (the field's label), ``help`` (a help text if available) and ``type`` (to know which values to expect, or to send when updating a record)." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:604 -msgid "Search and read" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:606 -msgid "Because it is a very common task, Odoo provides a :meth:`~odoo.models.Model.search_read` shortcut which, as its name suggests, is equivalent to a :meth:`~odoo.models.Model.search` followed by a :meth:`~odoo.models.Model.read`, but avoids having to perform two requests and keep ids around." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:612 -msgid "Its arguments are similar to :meth:`~odoo.models.Model.search`'s, but it can also take a list of ``fields`` (like :meth:`~odoo.models.Model.read`, if that list is not provided it will fetch all fields of matched records)." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:683 -msgid "Create records" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:685 -msgid "Records of a model are created using :meth:`~odoo.models.Model.create`. The method creates a single record and returns its database identifier." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:688 -msgid ":meth:`~odoo.models.Model.create` takes a mapping of fields to values, used to initialize the record. For any field which has a default value and is not set through the mapping argument, the default value will be used." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:723 -msgid "While most value types are what would expect (integer for :class:`~odoo.fields.Integer`, string for :class:`~odoo.fields.Char` or :class:`~odoo.fields.Text`)," -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:727 -msgid ":class:`~odoo.fields.Date`, :class:`~odoo.fields.Datetime` and :class:`~odoo.fields.Binary` fields use string values" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:729 -msgid ":class:`~odoo.fields.One2many` and :class:`~odoo.fields.Many2many` use a special command protocol detailed in :meth:`the documentation to the write method `." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:734 -msgid "Update records" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:736 -msgid "Records can be updated using :meth:`~odoo.models.Model.write`. It takes a list of records to update and a mapping of updated fields to values similar to :meth:`~odoo.models.Model.create`." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:740 -msgid "Multiple records can be updated simultaneously, but they will all get the same values for the fields being set. It is not possible to perform \"computed\" updates (where the value being set depends on an existing value of a record)." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:792 -msgid "Delete records" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:794 -msgid "Records can be deleted in bulk by providing their ids to :meth:`~odoo.models.Model.unlink`." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:841 -msgid "Inspection and introspection" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:843 -msgid "While we previously used :meth:`~odoo.models.Model.fields_get` to query a model and have been using an arbitrary model from the start, Odoo stores most model metadata inside a few meta-models which allow both querying the system and altering models and fields (with some limitations) on the fly over XML-RPC." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:852 -msgid "``ir.model``" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:854 -msgid "Provides information about Odoo models via its various fields." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:857 -msgid "a human-readable description of the model" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:858 -#: ../../content/developer/reference/addons/views.rst:1801 -msgid "``model``" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:859 -msgid "the name of each model in the system" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:861 -#: ../../content/developer/misc/api/odoo.rst:999 -#: ../../content/developer/reference/addons/actions.rst:231 -msgid "``state``" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:861 -msgid "whether the model was generated in Python code (``base``) or by creating an ``ir.model`` record (``manual``)" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:864 -msgid "``field_id``" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:864 -msgid "list of the model's fields through a :class:`~odoo.fields.One2many` to :ref:`reference/webservice/inspection/fields`" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:867 -#: ../../content/developer/reference/addons/actions.rst:148 -msgid "``view_ids``" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:867 -msgid ":class:`~odoo.fields.One2many` to the :ref:`reference/views` defined for the model" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:871 -msgid "``access_ids``" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:870 -msgid ":class:`~odoo.fields.One2many` relation to the :ref:`reference/security/acl` set on the model" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:873 -msgid "``ir.model`` can be used to" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:875 -msgid "Query the system for installed models (as a precondition to operations on the model or to explore the system's content)." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:877 -msgid "Get information about a specific model (generally by listing the fields associated with it)." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:879 -msgid "Create new models dynamically over RPC." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:882 -msgid "Custom model names must start with ``x_``." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:883 -msgid "The ``state`` must be provided and set to ``manual``, otherwise the model will not be loaded." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:885 -msgid "It is not possible to add new *methods* to a custom model, only fields." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:889 -msgid "A custom model will initially contain only the \"built-in\" fields available on all models:" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:984 -msgid "``ir.model.fields``" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:986 -msgid "Provides information about the fields of Odoo models and allows adding custom fields without using Python code." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:990 -#: ../../content/developer/reference/addons/actions.rst:229 -#: ../../content/developer/reference/addons/actions.rst:433 -msgid "``model_id``" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:990 -msgid ":class:`~odoo.fields.Many2one` to :ref:`reference/webservice/inspection/models` to which the field belongs" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:993 -msgid "the field's technical name (used in ``read`` or ``write``)" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:994 -msgid "``field_description``" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:995 -msgid "the field's user-readable label (e.g. ``string`` in ``fields_get``)" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:996 -msgid "``ttype``" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:997 -msgid "the :ref:`type ` of field to create" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:999 -msgid "whether the field was created via Python code (``base``) or via ``ir.model.fields`` (``manual``)" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:1001 -msgid "``required``, ``readonly``, ``translate``" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:1002 -msgid "enables the corresponding flag on the field" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:1004 -#: ../../content/developer/reference/addons/data.rst:226 -#: ../../content/developer/reference/addons/data.rst:250 -#: ../../content/developer/reference/addons/views.rst:837 -#: ../../content/developer/reference/addons/views.rst:1501 -#: ../../content/developer/reference/addons/views.rst:1875 -#: ../../content/developer/reference/addons/views.rst:1985 -msgid "``groups``" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:1004 -msgid ":ref:`field-level access control `, a :class:`~odoo.fields.Many2many` to ``res.groups``" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:1008 -msgid "``selection``, ``size``, ``on_delete``, ``relation``, ``relation_field``, ``domain``" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:1007 -msgid "type-specific properties and customizations, see :ref:`the fields documentation ` for details" -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:1011 -msgid "Like custom models, only new fields created with ``state=\"manual\"`` are activated as actual fields on the model." -msgstr "" - -#: ../../content/developer/misc/api/odoo.rst:1013 -msgid "Computed fields can not be added via ``ir.model.fields``, some field meta-information (defaults, onchange) can not be set either." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:4 -msgid "Accounting Localization" -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:8 -msgid "This tutorial requires knowledges about how to build a module in Odoo (see :doc:`/developer/howtos/backend`)." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:12 -msgid "Building a localization module" -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:14 -msgid "When installing the ``accounting`` module, the localization module corresponding to the country code of the company is installed automatically. In case of no country code set or no localization module found, the ``l10n_generic_coa`` (US) localization module is installed by default." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:17 -msgid "For example, ``l10n_be`` will be installed if the company has ``Belgium`` as country." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:19 -msgid "This behavior is allowed by the presence of a *.xml* file containing the following code:" -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:27 -msgid "Where ``module.template_xmlid`` is the **fully-qualified** xmlid of the corresponding template." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:29 -msgid "Usually located in the ``data`` folder, it must be loaded at the very last in the ``__manifest__.py`` file." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:33 -msgid "If the *.xml* file is missing, the right chart of accounts won't be loaded on time!" -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:37 -msgid "Configuring my own Chart of Accounts?" -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:39 -msgid "First of all, before I proceed, we need to talk about the templates. A template is a record that allows replica of itself. This mechanism is needed when working in multi-companies. For example, the creation of a new account is done using the ``account.account.template`` model. However, each company using this chart of accounts will be linked to a replica having ``account.account`` as model. So, the templates are never used directly by the company." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:44 -msgid "Then, when a chart of accounts needs to be installed, all templates dependent of this one will create a replica and link this newly generated record to the company's user. It means all such templates must be linked to the chart of accounts in some way. To do so, each one must reference the desired chart of accounts using the ``chart_template_id`` field. For this reason, we need to define an instance of the ``account.chart.template`` model before creating its templates." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:87 -msgid "For example, let's take a look to the Belgium chart of accounts." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:99 -msgid "Now that the chart of accounts is created, we can focus on the creation of the templates. As said previously, each record must reference this record through the ``chart_template_id`` field. If not, the template will be ignored. The following sections show in details how to create these templates." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:104 -msgid "Adding a new account to my Chart of Accounts" -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:106 -msgid "It's time to create our accounts. It consists to creating records of ``account.account.template`` type. Each ``account.account.template`` is able to create an ``account.account`` for each company." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:137 -msgid "Some of the described fields above deserve a bit more explanation." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:139 -msgid "The ``user_type_id`` field requires a value of type ``account.account.type``. Although some additional types could be created in a localization module, we encourage the usage of the existing types in the `account/data/data_account_type.xml `_ file. The usage of these generic types ensures the generic reports working correctly in addition to those that you could create in your localization module." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:145 -msgid "Avoid the usage of liquidity ``account.account.type``! Indeed, the bank & cash accounts are created directly at the installation of the localization module and then, are linked to an ``account.journal``." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:150 -msgid "Only one account of type payable/receivable is enough." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:152 -msgid "Although the ``tag_ids`` field is optional, this one remains a very powerful feature. Indeed, this one allows you to define some tags for your accounts to spread them correctly on your reports. For example, suppose you want to create a financial report having multiple lines but you have no way to find a rule to dispatch the accounts according their ``code`` or ``name``. The solution is the usage of tags, one for each report line, to spread and aggregate your accounts like you want." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:157 -msgid "Like any other record, a tag can be created with the following xml structure:" -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:170 -msgid "As you can well imagine with the usage of tags, this feature can also be used with taxes." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:172 -msgid "An examples coming from the ``l10n_be`` module:" -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:185 -msgid "Don't create too much accounts: 200-300 is enough." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:188 -msgid "Adding a new tax to my Chart of Accounts" -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:190 -msgid "To create a new tax record, you just need to follow the same process as the creation of accounts. The only difference being that you must use the ``account.tax.template`` model." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:271 -msgid "An example found in the ``l10n_pl`` module:" -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:290 -msgid "Adding a new fiscal position to my Chart of Accounts" -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:294 -msgid "If you need more information about what is a fiscal position and how it works in Odoo, please refer to :doc:`/applications/finance/accounting/taxation/taxes/fiscal_positions`." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:297 -msgid "To create a new fiscal position, simply use the ``account.fiscal.position.template`` model:" -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:313 -msgid "Adding the properties to my Chart of Accounts" -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:315 -msgid "When the whole accounts are generated, you have the possibility to override the newly generated chart of accounts by adding some properties that correspond to default accounts used in certain situations. This must be done after the creation of accounts before each one must be linked to the chart of accounts." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:348 -msgid "For example, let's come back to the Belgium PCMN. This chart of accounts is override in this way to add some properties." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:363 -msgid "How to create a new bank operation model?" -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:367 -msgid "How a bank operation model works exactly in Odoo? See :doc:`/applications/finance/accounting/bank/reconciliation/reconciliation_models`." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:369 -msgid "Since ``V10``, a new feature is available in the bank statement reconciliation widget: the bank operation model. This allows the user to pre-fill some accounting entries with a single click. The creation of an ``account.reconcile.model.template`` record is quite easy:" -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:415 -msgid "How to create a new dynamic report?" -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:417 -msgid "If you need to add some reports on your localization, you need to create a new module named **l10n_xx_reports**. Furthermore, this additional module must be present in the ``enterprise`` repository and must have at least two dependencies, one to bring all the stuff for your localization module and one more, ``account_reports``, to design dynamic reports." -msgstr "" - -#: ../../content/developer/misc/i18n/localization.rst:425 -msgid "Once it's done, you can start the creation of your report statements. The documentation is available in the following `slides `_." -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:7 -msgid "Translating Modules" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:9 -msgid "This section explains how to provide translation abilities to your module." -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:11 -msgid "If you want to contribute to the translation of Odoo itself, please refer to the `Odoo Wiki page `_." -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:15 -msgid "Exporting translatable term" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:17 -msgid "A number of terms in your modules are \"implicitly translatable\" as a result, even if you haven't done any specific work towards translation you can export your module's translatable terms and may find content to work with." -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:21 -msgid "needs technical features" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:23 -msgid "Translations export is performed via the administration interface by logging into the backend interface and opening :menuselection:`Settings --> Translations --> Import / Export --> Export Translations`" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:27 -msgid "leave the language to the default (new language/empty template)" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:28 -msgid "select the `PO File`_ format" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:29 -msgid "select your module" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:30 -msgid "click :guilabel:`Export` and download the file" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:36 -msgid "This gives you a file called :file:`{yourmodule}.pot` which should be moved to the :file:`{yourmodule}/i18n/` directory. The file is a *PO Template* which simply lists translatable strings and from which actual translations (PO files) can be created. PO files can be created using msginit_, with a dedicated translation tool like POEdit_ or by simply copying the template to a new file called :file:`{language}.po`. Translation files should be put in :file:`{yourmodule}/i18n/`, next to :file:`{yourmodule}.pot`, and will be automatically loaded by Odoo when the corresponding language is installed (via :menuselection:`Settings --> Translations --> Languages`)" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:46 -msgid "translations for all loaded languages are also installed or updated when installing or updating a module" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:50 -msgid "Implicit exports" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:52 -msgid "Odoo automatically exports translatable strings from \"data\"-type content:" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:54 -msgid "in non-QWeb views, all text nodes are exported as well as the content of the ``string``, ``help``, ``sum``, ``confirm`` and ``placeholder`` attributes" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:57 -msgid "QWeb templates (both server-side and client-side), all text nodes are exported except inside ``t-translation=\"off\"`` blocks, the content of the ``title``, ``alt``, ``label`` and ``placeholder`` attributes are also exported" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:61 -msgid "for :class:`~odoo.fields.Field`, unless their model is marked with ``_translate = False``:" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:64 -msgid "their ``string`` and ``help`` attributes are exported" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:65 -msgid "if ``selection`` is present and a list (or tuple), it's exported" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:66 -msgid "if their ``translate`` attribute is set to ``True``, all of their existing values (across all records) are exported" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:68 -msgid "help/error messages of :attr:`~odoo.models.Model._constraints` and :attr:`~odoo.models.Model._sql_constraints` are exported" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:72 -msgid "Explicit exports" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:74 -msgid "When it comes to more \"imperative\" situations in Python code or Javascript code, Odoo cannot automatically export translatable terms so they must be marked explicitly for export. This is done by wrapping a literal string in a function call." -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:79 -msgid "In Python, the wrapping function is :func:`odoo._`::" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:83 -msgid "In JavaScript, the wrapping function is generally :js:func:`odoo.web._t`:" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:91 -msgid "Only literal strings can be marked for exports, not expressions or variables. For situations where strings are formatted, this means the format string must be marked, not the formatted string" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:95 -msgid "The lazy version of `_` and `_t` is :func:`odoo._lt` in python and :js:func:`odoo.web._lt` in javascript. The translation lookup is executed only at rendering and can be used to declare translatable properties in class methods of global variables." -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:102 -msgid "Translations of a module are **not** exposed to the front end by default and thus are not accessible from JavaScript. In order to achieve that, the module name has to be either prefixed with `website` (just like `website_sale`, `website_event` etc.) or explicitly register by implementing :func:`_get_translation_frontend_modules_name` for the `ir.http` model." -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:108 -msgid "This could look like the following::" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:121 -msgid "Variables" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:122 -msgid "**Don't** the extract may work but it will not translate the text correctly::" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:126 -msgid "**Do** set the dynamic variables as a parameter of the translation lookup (this will fallback on source in case of missing placeholder in the translation)::" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:133 -msgid "Blocks" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:134 -msgid "**Don't** split your translation in several blocks or multiples lines::" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:144 -msgid "**Do** keep in one block, giving the full context to translators::" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:155 -msgid "Plural" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:156 -msgid "**Don't** pluralize terms the English-way::" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:162 -msgid "**Do** keep in mind every language has different plural forms::" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:170 -msgid "Read vs Run Time" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:172 -msgid "**Don't** invoke translation lookup at server launch::" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:185 -msgid "**Don't** invoke translation lookup when the javascript file is read::" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:196 -msgid "**Do** use lazy translation lookup method::" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:210 -msgid "or **do** evaluate dynamically the translatable content::" -msgstr "" - -#: ../../content/developer/misc/i18n/translations.rst:219 -msgid "**Do** in the case where the translation lookup is done when the JS file is *read*, use `_lt` instead of `_t` to translate the term when it is *used*::" -msgstr "" - -#: ../../content/developer/misc/other.rst:5 -#: ../../content/developer/reference/addons/mixins.rst:969 -msgid "Others" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:6 -msgid "Command-line interface (CLI)" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:8 -msgid "The CLI :dfn:`command-line interface` offers several functionalities related to Odoo. You can use it to :ref:`run the server `, :ref:`launch Odoo as a Python console environment `, :ref:`scaffold an Odoo module `, :ref:`populate a database `, or :ref:`count the number of lines of code `." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:15 -msgid "The command to use to call the CLI depends on how you installed Odoo. In the examples below, we assume that you are :ref:`running Odoo from source ` with the :file:`odoo-bin` file. If you installed Odoo :ref:`from a distribution package ` or :ref:`with Docker `, you must adapt the command." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:23 -msgid "Run Odoo from source" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:25 -msgid "Navigate to the root of the directory where you downloaded the source files of Odoo Community." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:27 -msgid "Run all CLI commands with :command:`./odoo-bin`" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:29 -msgid "Odoo was installed from a distribution package" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:31 -msgid "When Odoo was installed, an executable named `odoo` was added to your user's PATH. Replace all occurrences of :command:`odoo-bin` with :command:`odoo` in the examples below." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:34 -msgid "Odoo was installed with Docker" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:36 -msgid "Please refer to the `documentation of the official Docker image of Odoo `_." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:42 -msgid "Running the server" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:48 -msgid "database(s) used when installing or updating modules. Providing a comma-separated list restrict access to databases provided in list." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:52 -msgid "For advanced database options, take a look :ref:`below `." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:56 -msgid "comma-separated list of modules to install before running the server (requires :option:`-d`)." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:61 -msgid "comma-separated list of modules to update before running the server (requires :option:`-d`)." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:66 -msgid "comma-separated list of directories in which modules are stored. These directories are scanned for modules." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:73 -msgid "provide an alternate :ref:`configuration file `" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:77 -msgid "saves the server configuration to the current configuration file (:file:`{$HOME}/.odoorc` by default, and can be overridden using :option:`-c`)." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:83 -msgid "disables demo data loading for modules installed comma-separated, use ``all`` for all modules." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:88 -msgid "runs tests after module installation" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:92 -msgid "Comma-separated list of specs to filter which tests to execute. Enable unit tests if set." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:94 -msgid "Example: `--test-tags :TestClass.test_func,/test_module,external`" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:96 -msgid "The `-` specifies if we want to include or exclude tests matching this spec." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:97 -msgid "The tag will match tags added on a class with a :func:`~odoo.tests.common.tagged` decorator (all :ref:`test classes ` have `standard` and `at_install` tags until explicitly removed, see the decorator documentation)." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:100 -msgid "`*` will match all tags." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:101 -msgid "If tag is omitted on include mode, its value is `standard`." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:102 -msgid "If tag is omitted on exclude mode, its value is `*`." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:103 -msgid "The module, class, and method will respectively match the module name, test class name and test method name." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:105 -msgid "Filtering and executing the tests happens twice: right after each module installation/update and at the end of the modules loading. At each stage tests are filtered by `--test-tags` specs and additionally by dynamic specs `at_install` and `post_install` correspondingly." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:113 -msgid "Specify directory where to write screenshots when an HttpCase.browser_js test fails. It defaults to :file:`/tmp/odoo_tests/{db_name}/screenshots`" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:118 -msgid "Enable screencasts and specify directory where to write screencasts files. The ``ffmpeg`` utility needs to be installed to encode frames into a video file. Otherwise frames will be kept instead of the video file." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:125 -msgid "Database" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:129 -msgid "database username, used to connect to PostgreSQL." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:133 -msgid "database password, if using `password authentication`_." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:137 -msgid "host for the database server" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:139 -msgid "``localhost`` on Windows" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:140 -msgid "UNIX socket otherwise" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:144 -msgid "port the database listens on, defaults to 5432" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:148 -msgid "hides databases that do not match ````. The filter is a `regular expression`_, with the additions that:" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:151 -msgid "``%h`` is replaced by the whole hostname the request is made on." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:152 -msgid "``%d`` is replaced by the subdomain the request is made on, with the exception of ``www`` (so domain ``odoo.com`` and ``www.odoo.com`` both match the database ``odoo``)." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:156 -msgid "These operations are case sensitive. Add option ``(?i)`` to match all databases (so domain ``odoo.com`` using ``(?i)%d`` matches the database ``Odoo``)." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:160 -msgid "Since version 11, it's also possible to restrict access to a given database listen by using the --database parameter and specifying a comma-separated list of databases" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:164 -msgid "When combining the two parameters, db-filter supersedes the comma-separated database list for restricting database list, while the comma-separated list is used for performing requested operations like upgrade of modules." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:172 -msgid "Restrict access to databases whose name starts with 11" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:178 -msgid "Restrict access to only two databases, 11firstdatabase and 11seconddatabase" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:184 -msgid "Restrict access to only two databases, 11firstdatabase and 11seconddatabase, and update base module on one database: 11firstdatabase. If database 11seconddatabase doesn't exist, the database is created and base modules is installed" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:193 -msgid "Restrict access to databases whose name starts with 11, and update base module on one database: 11firstdatabase. If database 11seconddatabase doesn't exist, the database is created and base modules is installed" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:200 -msgid "when creating new databases from the database-management screens, use the specified `template database`_. Defaults to ``template0``." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:205 -msgid "Path to the PostgreSQL binaries that are used by the database manager to dump and restore databases. You have to specify this option only if these binaries are located in a non-standard directory." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:211 -msgid "Suppresses the ability to list databases available on the system" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:215 -msgid "Control the SSL security of the connection between Odoo and PostgreSQL. Value should be one of 'disable', 'allow', 'prefer', 'require', 'verify-ca' or 'verify-full' Default value is 'prefer'" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:223 -msgid "Emails" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:227 -msgid "Email address used as when Odoo needs to send mails" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:231 -msgid "Address of the SMTP server to connect to in order to send mails" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:237 -msgid "If set, odoo should use SSL/STARTSSL SMTP connections" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:241 -msgid "Username to connect to the SMTP server" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:245 -msgid "Password to connect to the SMTP server" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:250 -msgid "Internationalisation" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:252 -msgid "Use these options to translate Odoo to another language. See i18n section of the user manual. Option '-d' is mandatory. Option '-l' is mandatory in case of importation" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:258 -msgid "specifies the languages (separated by commas) for the translations you want to be loaded" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:263 -msgid "specify the language of the translation file. Use it with --i18n-export or --i18n-import" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:268 -msgid "export all sentences to be translated to a CSV file, a PO file or a TGZ archive and exit." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:273 -msgid "import a CSV or a PO file with translations and exit. The '-l' option is required." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:278 -msgid "overwrites existing translation terms on updating a module or importing a CSV or a PO file." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:283 -msgid "specify modules to export. Use in combination with --i18n-export" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:288 -msgid "Advanced Options" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:293 -msgid "Developer features" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:297 -msgid "``all``: all the features below are activated" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:299 -msgid "``xml``: read template qweb from xml file directly instead of database. Once a template has been modified in database, it will be not be read from the xml file until the next update/init." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:303 -msgid "``reload``: restart server when python file are updated (may not be detected depending on the text editor used)" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:306 -msgid "``qweb``: break in the evaluation of qweb template when a node contains ``t-debug='debugger'``" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:308 -msgid "``(i)p(u)db``: start the chosen python debugger in the code when an unexpected error is raised before logging and returning the error." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:315 -msgid "HTTP" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:319 -msgid "do not start the HTTP or long-polling workers (may still start :ref:`cron ` workers)" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:322 -msgid "has no effect if :option:`--test-enable` is set, as tests require an accessible HTTP server" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:327 -msgid "TCP/IP address on which the HTTP server listens, defaults to ``0.0.0.0`` (all addresses)" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:332 -msgid "Port on which the HTTP server listens, defaults to 8069." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:336 -msgid "TCP port for long-polling connections in multiprocessing or gevent mode, defaults to 8072. Not used in default (threaded) mode." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:341 -msgid "enables the use of ``X-Forwarded-*`` headers through `Werkzeug's proxy support`_." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:344 -msgid "proxy mode *must not* be enabled outside of a reverse proxy scenario" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:350 -msgid "Logging" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:352 -msgid "By default, Odoo displays all logging of level_ ``info`` except for workflow logging (``warning`` only), and log output is sent to ``stdout``. Various options are available to redirect logging to other destinations and to customize the amount of logging output." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:359 -msgid "sends logging output to the specified file instead of stdout. On Unix, the file `can be managed by external log rotation programs `_ and will automatically be reopened when replaced" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:366 -msgid "logs to the system's event logger: `syslog on unices `_ and `the Event Log on Windows `_." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:369 -msgid "Neither is configurable" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:373 -msgid "logs to the ``ir.logging`` model (``ir_logging`` table) of the specified database. The database can be the name of a database in the \"current\" PostgreSQL, or `a PostgreSQL URI`_ for e.g. log aggregation." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:379 -msgid ":samp:`{LOGGER}:{LEVEL}`, enables ``LOGGER`` at the provided ``LEVEL`` e.g. ``odoo.models:DEBUG`` will enable all logging messages at or above ``DEBUG`` level in the models." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:383 -msgid "The colon ``:`` is mandatory" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:384 -msgid "The logger can be omitted to configure the root (default) handler" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:385 -msgid "If the level is omitted, the logger is set to ``INFO``" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:387 -msgid "The option can be repeated to configure multiple loggers e.g." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:395 -msgid "enable DEBUG logging for RPC requests, equivalent to ``--log-handler=odoo.http.rpc.request:DEBUG``" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:400 -msgid "enable DEBUG logging for RPC responses, equivalent to ``--log-handler=odoo.http.rpc.response:DEBUG``" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:405 -msgid "enables DEBUG logging of HTTP requests and responses, equivalent to ``--log-handler=odoo.http:DEBUG``" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:410 -msgid "enables DEBUG logging of SQL querying, equivalent to ``--log-handler=odoo.sql_db:DEBUG``" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:415 -msgid "Shortcut to more easily set predefined levels on specific loggers. \"real\" levels (``critical``, ``error``, ``warn``, ``debug``) are set on the ``odoo`` and ``werkzeug`` loggers (except for ``debug`` which is only set on ``odoo``)." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:420 -msgid "Odoo also provides debugging pseudo-levels which apply to different sets of loggers:" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:425 -msgid "``debug_sql``" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:424 -msgid "sets the SQL logger to ``debug``" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:426 -msgid "equivalent to ``--log-sql``" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:429 -msgid "``debug_rpc``" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:428 -msgid "sets the ``odoo`` and HTTP request loggers to ``debug``" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:430 -msgid "equivalent to ``--log-level debug --log-request``" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:435 -msgid "``debug_rpc_answer``" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:432 -msgid "sets the ``odoo`` and HTTP request and response loggers to ``debug``" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:435 -msgid "equivalent to ``--log-level debug --log-request --log-response``" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:439 -msgid "In case of conflict between :option:`--log-level` and :option:`--log-handler`, the latter is used" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:445 -msgid "Multiprocessing" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:449 -msgid "if ``count`` is not 0 (the default), enables multiprocessing and sets up the specified number of HTTP workers (sub-processes processing HTTP and RPC requests)." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:453 -msgid "multiprocessing mode is only available on Unix-based systems" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:455 -msgid "A number of options allow limiting and recycling workers:" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:459 -msgid "Number of requests a worker will process before being recycled and restarted." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:462 -msgid "Defaults to *8196*." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:466 -msgid "Maximum allowed virtual memory per worker. If the limit is exceeded, the worker is killed and recycled at the end of the current request." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:469 -msgid "Defaults to *2048MiB*." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:473 -msgid "Hard limit on virtual memory, any worker exceeding the limit will be immediately killed without waiting for the end of the current request processing." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:477 -msgid "Defaults to *2560MiB*." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:481 -msgid "Prevents the worker from using more than CPU seconds for each request. If the limit is exceeded, the worker is killed." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:484 -msgid "Defaults to *60*." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:488 -msgid "Prevents the worker from taking longer than seconds to process a request. If the limit is exceeded, the worker is killed." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:491 -msgid "Differs from :option:`--limit-time-cpu` in that this is a \"wall time\" limit including e.g. SQL queries." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:494 -msgid "Defaults to *120*." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:498 -msgid "number of workers dedicated to :ref:`cron ` jobs. Defaults to *2*. The workers are threads in multi-threading mode and processes in multi-processing mode." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:501 -msgid "For multi-processing mode, this is in addition to the HTTP worker processes." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:506 -msgid "Configuration file" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:510 -msgid "Most of the command-line options can also be specified via a configuration file. Most of the time, they use similar names with the prefix ``-`` removed and other ``-`` are replaced by ``_`` e.g. :option:`--db-template` becomes ``db_template``." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:515 -msgid "Some conversions don't match the pattern:" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:517 -msgid ":option:`--db-filter` becomes ``dbfilter``" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:518 -msgid ":option:`--no-http` corresponds to the ``http_enable`` boolean" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:519 -msgid "logging presets (all options starting with ``--log-`` except for :option:`--log-handler` and :option:`--log-db`) just add content to ``log_handler``, use that directly in the configuration file" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:522 -msgid ":option:`--smtp` is stored as ``smtp_server``" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:523 -msgid ":option:`--database` is stored as ``db_name``" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:524 -msgid ":option:`--i18n-import` and :option:`--i18n-export` aren't available at all from configuration files" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:527 -msgid "The default configuration file is :file:`{$HOME}/.odoorc` which can be overridden using :option:`--config `. Specifying :option:`--save ` will save the current configuration state back to that file. The configuration items relative to the command-line are to be specified in the section ``[options]``." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:533 -msgid "Here is a sample file:" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:558 -msgid "Shell" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:560 -msgid "Odoo command-line also allows to launch odoo as a python console environment. This enables direct interaction with the :ref:`orm ` and its functionalities." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:570 -msgid "Specify a preferred REPL to use in shell mode." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:576 -msgid "Scaffolding" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:580 -msgid "Scaffolding is the automated creation of a skeleton structure to simplify bootstrapping (of new modules, in the case of Odoo). While not necessary it avoids the tedium of setting up basic structures and looking up what all starting requirements are." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:585 -msgid "Scaffolding is available via the :command:`odoo-bin scaffold` subcommand." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:593 -msgid "the name of the module to create, may munged in various manners to generate programmatic names (e.g. module directory name, model names, …)" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:598 -msgid "directory in which to create the new module, defaults to the current directory" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:603 -msgid "a template directory, files are passed through jinja2_ then copied to the ``destination`` directory" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:607 -msgid "This will create module *my_module* in directory */addons/*." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:612 -msgid "Database Population" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:616 -msgid "Odoo CLI supports database population features. If the feature is :ref:`implemented on a given model `, it allows automatic data generation of the model's records to test your modules in databases containing non-trivial amounts of records." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:626 -msgid "list of models for which the database should be filled" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:630 -msgid "population size, the actual records number depends on the model's `_populate_sizes` attribute. The generated records content is specified by the :meth:`~odoo.models._populate_factories` method of a given model (cf. the :file:`populate` folder of modules for further details)." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:636 -msgid ":ref:`reference/testing/populate`" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:641 -msgid "Cloc" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:645 -msgid "Odoo Cloc is a tool to count the number of relevant lines written in Python, Javascript or XML. This can be used as a rough metric for pricing maintenance of extra modules." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:650 -msgid "Command-line options" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:655 -msgid "Process the code of all extra modules installed on the provided database, and of all server actions and computed fields manually created in the provided database." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:657 -msgid "The :option:`--addons-path` option is required to specify the path(s) to the module folder(s)." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:660 -msgid "If combined with :option:`--path`, the count will be that of the sum of both options' results (with possible overlaps). At least one of these two options is required to specify which code to process." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:667 -msgid ":ref:`reference/cmdline/cloc/database-option`" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:672 -msgid "Process the files in the provided path." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:675 -msgid "If combined with :option:`--database`, the count will be that of the sum of both options' results (with possible overlaps). At least one of these two options is required to specify which code to process." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:682 -msgid "Multiple paths can be provided by repeating the option." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:689 -msgid ":ref:`reference/cmdline/cloc/path-option`" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:695 -msgid "Comma-separated list of directories in which modules are stored. These directories are scanned for modules." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:696 -msgid "Required if the :option:`--database` option is used." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:701 -msgid "Specify a configuration file to use in place of the :option:`--addons-path` option." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:710 -msgid "Show the details of lines counted for each file." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:714 -msgid "Processed files" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:719 -msgid "With the :option:`--database` option" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:721 -msgid "Odoo Cloc counts the lines in each file of extra installed modules in a given database. In addition, it counts the Python lines of server actions and custom computed fields that have been directly created in the database or imported." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:726 -msgid "Some files are excluded from the count by default:" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:728 -msgid "The manifest (:file:`__manifest__.py` or :file:`__openerp__.py`)" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:729 -msgid "The contents of the folder :file:`static/lib`" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:730 -msgid "The tests defined in the folder :file:`tests` and :file:`static/tests`" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:731 -msgid "The migrations scripts defined in the folder :file:`migrations`" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:732 -msgid "The XML files declared in the ``demo`` or ``demo_xml`` sections of the manifest" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:734 -msgid "For special cases, a list of files that should be ignored by Odoo Cloc can be defined per module. This is specified by the ``cloc_exclude`` entry of the manifest:" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:746 -msgid "The pattern ``**/*`` can be used to ignore an entire module. This can be useful to exclude a module from maintenance service costs." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:748 -msgid "For more information about the pattern syntax, see `glob `_." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:755 -msgid "With the :option:`--path` option" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:757 -msgid "This method works the same as with the :ref:`--database option ` if a manifest file is present in the given folder. Otherwise, it counts all files." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:763 -msgid "Identifying Extra Modules" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:765 -msgid "To distinguish between standard and extra modules, Odoo Cloc uses the following heuristic: modules that are located (real file system path, after following symbolic links) in the same parent directory as the ``base``, ``web`` or ``web_enterprise`` standard modules are considered standard. Other modules are treated as extra modules." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:772 -msgid "Error Handling" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:774 -msgid "Some file cannot be counted by Odoo Cloc. Those file are reported at the end of the output." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:778 -msgid "Max file size exceeded" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:780 -msgid "Odoo Cloc rejects any file larger than 25MB. Usually, source files are smaller than 1 MB. If a file is rejected, it may be:" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:783 -msgid "A generated XML file that contains lots of data. It should be excluded in the manifest." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:784 -msgid "A JavaScript library that should be placed in the :file:`static/lib` folder." -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:787 -msgid "Syntax Error" -msgstr "" - -#: ../../content/developer/misc/other/cmdline.rst:789 -msgid "Odoo Cloc cannot count the lines of code of a Python file with a syntax problem. If an extra module contains such files, they should be fixed to allow the module to load. If the module works despite the presence of those files, they are probably not loaded and should therefore be removed from the module, or at least excluded in the manifest via ``cloc_exclude``." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:8 -msgid "Odoo Guidelines" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:10 -msgid "This page introduces the Odoo Coding Guidelines. Those aim to improve the quality of Odoo Apps code. Indeed proper code improves readability, eases maintenance, helps debugging, lowers complexity and promotes reliability. These guidelines should be applied to every new module and to all new development." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:17 -msgid "When modifying existing files in **stable version** the original file style strictly supersedes any other style guidelines. In other words please never modify existing files in order to apply these guidelines. It avoids disrupting the revision history of code lines. Diff should be kept minimal. For more details, see our `pull request guide `_." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:25 -msgid "When modifying existing files in **master (development) version** apply those guidelines to existing code only for modified code or if most of the file is under revision. In other words modify existing files structure only if it is going under major changes. In that case first do a **move** commit then apply the changes related to the feature." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:35 -msgid "Directories" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:36 -msgid "A module is organized in important directories. Those contain the business logic; having a look at them should make you understand the purpose of the module." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:39 -msgid "*data/* : demo and data xml" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:40 -msgid "*models/* : models definition" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:41 -msgid "*controllers/* : contains controllers (HTTP routes)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:42 -msgid "*views/* : contains the views and templates" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:43 -msgid "*static/* : contains the web assets, separated into *css/, js/, img/, lib/, ...*" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:45 -msgid "Other optional directories compose the module." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:47 -msgid "*wizard/* : regroups the transient models (``models.TransientModel``) and their views" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:48 -msgid "*report/* : contains the printable reports and models based on SQL views. Python objects and XML views are included in this directory" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:49 -msgid "*tests/* : contains the Python tests" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:53 -msgid "File naming" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:55 -msgid "File naming is important to quickly find information through all odoo addons. This section explains how to name files in a standard odoo module. As an example we use a `plant nursery `_ application. It holds two main models *plant.nursery* and *plant.order*." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:60 -msgid "Concerning *models*, split the business logic by sets of models belonging to a same main model. Each set lies in a given file named based on its main model. If there is only one model, its name is the same as the module name. Each inherited model should be in its own file to help understanding of impacted models." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:74 -msgid "Concerning *security*, three main files should be used:" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:76 -msgid "First one is the definition of access rights done in a :file:`ir.model.access.csv` file." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:77 -msgid "User groups are defined in :file:`_groups.xml`." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:78 -msgid "Record rules are defined in :file:`_security.xml`." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:89 -msgid "Concerning *views*, backend views should be split like models and suffixed by ``_views.xml``. Backend views are list, form, kanban, activity, graph, pivot, .. views. To ease split by model in views main menus not linked to specific actions may be extracted into an optional ``_menus.xml`` file. Templates (QWeb pages used notably for portal / website display) and bundles (import of JS and CSS assets) are put in separate files. Those are respectively ``_templates.xml`` and ``assets.xml`` files." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:109 -msgid "Concerning *data*, split them by purpose (demo or data) and main model. Filenames will be the main_model name suffixed by ``_demo.xml`` or ``_data.xml``. For instance for an application having demo and data for its main model as well as subtypes, activities and mail templates all related to mail module:" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:122 -msgid "Concerning *controllers*, generally all controllers belong to a single controller contained in a file named ``.py``. An old convention in Odoo is to name this file ``main.py`` but it is considered as outdated. If you need to inherit an existing controller from another module do it in ``.py``. For example adding portal controller in an application is done in ``portal.py``." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:136 -msgid "Concerning *static files*, Javascript files follow globally the same logic as python models. Each component should be in its own file with a meaningful name. For instance, the activity widgets are located in ``activity.js`` of mail module. Subdirectories can also be created to structure the 'package' (see web module for more details). The same logic should be applied for the templates of JS widgets (static XML files) and for their styles (scss files). Don't link data (image, libraries) outside Odoo: do not use an URL to an image but copy it in the codebase instead." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:145 -msgid "Concerning *wizards*, naming convention is the same of for python models: ``.py`` and ``_views.xml``. Both are put in the wizard directory. This naming comes from old odoo applications using the wizard keyword for transient models." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:157 -msgid "Concerning *statistics reports* done with python / SQL views and classic views naming is the following :" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:167 -msgid "Concerning *printable reports* which contain mainly data preparation and Qweb templates naming is the following :" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:177 -msgid "The complete tree of our Odoo module therefore looks like" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:236 -msgid "File names should only contain ``[a-z0-9_]`` (lowercase alphanumerics and ``_``)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:239 -msgid "Use correct file permissions : folder 755 and file 644." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:244 -msgid "XML files" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:247 -msgid "Format" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:248 -msgid "To declare a record in XML, the **record** notation (using **) is recommended:" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:250 -msgid "Place ``id`` attribute before ``model``" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:251 -msgid "For field declaration, ``name`` attribute is first. Then place the *value* either in the ``field`` tag, either in the ``eval`` attribute, and finally other attributes (widget, options, ...) ordered by importance." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:256 -msgid "Try to group the record by model. In case of dependencies between action/menu/views, this convention may not be applicable." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:258 -msgid "Use naming convention defined at the next point" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:259 -msgid "The tag ** is only used to set not-updatable data with ``noupdate=1``. If there is only not-updatable data in the file, the ``noupdate=1`` can be set on the ```` tag and do not set a ```` tag." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:277 -msgid "Odoo supports custom tags acting as syntactic sugar:" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:279 -msgid "menuitem: use it as a shortcut to declare a ``ir.ui.menu``" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:280 -msgid "template: use it to declare a QWeb View requiring only the ``arch`` section of the view." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:281 -msgid "report: use to declare a :ref:`report action `" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:282 -msgid "act_window: use it if the record notation can't do what you want" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:284 -msgid "The 4 first tags are preferred over the *record* notation." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:288 -msgid "XML IDs and naming" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:291 -msgid "Security, View and Action" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:293 -msgid "Use the following pattern :" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:295 -msgid "For a menu: :samp:`{}_menu`, or :samp:`{}_menu_{do_stuff}` for submenus." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:296 -msgid "For a view: :samp:`{}_view_{}`, where *view_type* is ``kanban``, ``form``, ``tree``, ``search``, ..." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:298 -msgid "For an action: the main action respects :samp:`{}_action`. Others are suffixed with :samp:`_{}`, where *detail* is a lowercase string briefly explaining the action. This is used only if multiple actions are declared for the model." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:302 -msgid "For window actions: suffix the action name by the specific view information like :samp:`{}_action_view_{}`." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:304 -msgid "For a group: :samp:`{}_group_{}` where *group_name* is the name of the group, generally 'user', 'manager', ..." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:306 -msgid "For a rule: :samp:`{}_rule_{}` where *concerned_group* is the short name of the concerned group ('user' for the 'model_name_group_user', 'public' for public user, 'company' for multi-company rules, ...)." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:311 -msgid "Name should be identical to xml id with dots replacing underscores. Actions should have a real naming as it is used as display name." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:365 -msgid "Inheriting XML" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:367 -msgid "Xml Ids of inheriting views should use the same ID as the original record. It helps finding all inheritance at a glance. As final Xml Ids are prefixed by the module that creates them there is no overlap." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:371 -msgid "Naming should contain an ``.inherit.{details}`` suffix to ease understanding the override purpose when looking at its name." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:382 -msgid "New primary views do not require the inherit suffix as those are new records based upon the first one." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:401 -msgid "Do not forget to read the :ref:`Security Pitfalls ` section as well to write secure code." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:405 -msgid "PEP8 options" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:407 -msgid "Using a linter can help show syntax and semantic warnings or errors. Odoo source code tries to respect Python standard, but some of them can be ignored." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:415 -msgid "Imports" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:416 -msgid "The imports are ordered as" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:418 -msgid "External libraries (one per line sorted and split in python stdlib)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:419 -msgid "Imports of ``odoo``" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:420 -msgid "Imports from Odoo modules (rarely, and only if necessary)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:422 -msgid "Inside these 3 groups, the imported lines are alphabetically sorted." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:440 -msgid "Idiomatics of Programming (Python)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:442 -msgid "Always favor *readability* over *conciseness* or using the language features or idioms." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:443 -msgid "Don't use ``.clone()``" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:454 -msgid "Python dictionary : creation and update" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:479 -msgid "Use meaningful variable/class/method names" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:480 -msgid "Useless variable : Temporary variables can make the code clearer by giving names to objects, but that doesn't mean you should create temporary variables all the time:" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:492 -msgid "Multiple return points are OK, when they're simpler" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:512 -msgid "Know your builtins : You should at least have a basic understanding of all the Python builtins (http://docs.python.org/library/functions.html)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:520 -msgid "Also, ``if 'key' in my_dict`` and ``if my_dict.get('key')`` have very different meaning, be sure that you're using the right one." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:523 -msgid "Learn list comprehensions : Use list comprehension, dict comprehension, and basic manipulation using ``map``, ``filter``, ``sum``, ... They make the code easier to read." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:536 -msgid "Collections are booleans too : In python, many objects have \"boolean-ish\" value when evaluated in a boolean context (such as an if). Among these are collections (lists, dicts, sets, ...) which are \"falsy\" when empty and \"truthy\" when containing items:" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:547 -msgid "So, you can write ``if some_collection:`` instead of ``if len(some_collection):``." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:550 -msgid "Iterate on iterables" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:564 -msgid "Use dict.setdefault" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:580 -msgid "As a good developer, document your code (docstring on methods, simple comments for tricky part of code)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:582 -msgid "In additions to these guidelines, you may also find the following link interesting: http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html (a little bit outdated, but quite relevant)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:587 -msgid "Programming in Odoo" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:589 -msgid "Avoid to create generators and decorators: only use the ones provided by the Odoo API." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:591 -msgid "As in python, use ``filtered``, ``mapped``, ``sorted``, ... methods to ease code reading and performance." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:596 -msgid "Make your method work in batch" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:597 -msgid "When adding a function, make sure it can process multiple records by iterating on self to treat each record." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:606 -msgid "For performance issue, when developing a 'stat button' (for instance), do not perform a ``search`` or a ``search_count`` in a loop. It is recommended to use ``read_group`` method, to compute all value in only one request." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:621 -msgid "Propagate the context" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:622 -msgid "The context is a ``frozendict`` that cannot be modified. To call a method with a different context, the ``with_context`` method should be used :" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:631 -msgid "Passing parameter in context can have dangerous side-effects." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:633 -msgid "Since the values are propagated automatically, some unexpected behavior may appear. Calling ``create()`` method of a model with *default_my_field* key in context will set the default value of *my_field* for the concerned model. But if during this creation, other objects (such as sale.order.line, on sale.order creation) having a field name *my_field* are created, their default value will be set too." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:639 -msgid "If you need to create a key context influencing the behavior of some object, choice a good name, and eventually prefix it by the name of the module to isolate its impact. A good example are the keys of ``mail`` module : *mail_create_nosubscribe*, *mail_notrack*, *mail_notify_user_signature*, ..." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:646 -msgid "Think extendable" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:648 -msgid "Functions and methods should not contain too much logic: having a lot of small and simple methods is more advisable than having few large and complex methods. A good rule of thumb is to split a method as soon as it has more than one responsibility (see http://en.wikipedia.org/wiki/Single_responsibility_principle)." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:653 -msgid "Hardcoding a business logic in a method should be avoided as it prevents to be easily extended by a submodule." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:679 -msgid "The above code is over extendable for the sake of example but the readability must be taken into account and a tradeoff must be made." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:682 -msgid "Also, name your functions accordingly: small and properly named functions are the starting point of readable/maintainable code and tighter documentation." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:685 -msgid "This recommendation is also relevant for classes, files, modules and packages. (See also http://en.wikipedia.org/wiki/Cyclomatic_complexity)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:690 -msgid "Never commit the transaction" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:691 -msgid "The Odoo framework is in charge of providing the transactional context for all RPC calls. The principle is that a new database cursor is opened at the beginning of each RPC call, and committed when the call has returned, just before transmitting the answer to the RPC client, approximately like this:" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:712 -msgid "If any error occurs during the execution of the RPC call, the transaction is rolled back atomically, preserving the state of the system." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:715 -msgid "Similarly, the system also provides a dedicated transaction during the execution of tests suites, so it can be rolled back or not depending on the server startup options." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:719 -msgid "The consequence is that if you manually call ``cr.commit()`` anywhere there is a very high chance that you will break the system in various ways, because you will cause partial commits, and thus partial and unclean rollbacks, causing among others:" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:724 -msgid "inconsistent business data, usually data loss" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:725 -msgid "workflow desynchronization, documents stuck permanently" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:726 -msgid "tests that can't be rolled back cleanly, and will start polluting the database, and triggering error (this is true even if no error occurs during the transaction)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:737 -msgid "Here is the very simple rule:" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:731 -msgid "You should **NEVER** call ``cr.commit()`` yourself, **UNLESS** you have created your own database cursor explicitly! And the situations where you need to do that are exceptional!" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:735 -msgid "And by the way if you did create your own cursor, then you need to handle error cases and proper rollback, as well as properly close the cursor when you're done with it." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:739 -msgid "And contrary to popular belief, you do not even need to call ``cr.commit()`` in the following situations: - in the ``_auto_init()`` method of an *models.Model* object: this is taken care of by the addons initialization method, or by the ORM transaction when creating custom models - in reports: the ``commit()`` is handled by the framework too, so you can update the database even from within a report - within *models.Transient* methods: these methods are called exactly like regular *models.Model* ones, within a transaction and with the corresponding ``cr.commit()/rollback()`` at the end - etc. (see general rule above if you have in doubt!)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:751 -msgid "All ``cr.commit()`` calls outside of the server framework from now on must have an **explicit comment** explaining why they are absolutely necessary, why they are indeed correct, and why they do not break the transactions. Otherwise they can and will be removed !" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:758 -msgid "Use translation method correctly" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:760 -msgid "Odoo uses a GetText-like method named \"underscore\" ``_( )`` to indicate that a static string used in the code needs to be translated at runtime using the language of the context. This pseudo-method is accessed within your code by importing as follows:" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:769 -msgid "A few very important rules must be followed when using it, in order for it to work and to avoid filling the translations with useless junk." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:772 -msgid "Basically, this method should only be used for static strings written manually in the code, it will not work to translate field values, such as Product names, etc. This must be done instead using the translate flag on the corresponding field." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:777 -msgid "The method accepts optional positional or named parameter The rule is very simple: calls to the underscore method should always be in the form ``_('literal string')`` and nothing else:" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:820 -msgid "Also, keep in mind that translators will have to work with the literal values that are passed to the underscore function, so please try to make them easy to understand and keep spurious characters and formatting to a minimum. Translators must be aware that formatting patterns such as ``%s`` or ``%d``, newlines, etc. need to be preserved, but it's important to use these in a sensible and obvious manner:" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:840 -msgid "In general in Odoo, when manipulating strings, prefer ``%`` over ``.format()`` (when only one variable to replace in a string), and prefer ``%(varname)`` instead of position (when multiple variables have to be replaced). This makes the translation easier for the community translators." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:847 -msgid "Symbols and Conventions" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:857 -msgid "Model name (using the dot notation, prefix by the module name) :" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:850 -msgid "When defining an Odoo Model : use singular form of the name (*res.partner* and *sale.order* instead of *res.partnerS* and *saleS.orderS*)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:852 -msgid "When defining an Odoo Transient (wizard) : use ``.`` where *related_base_model* is the base model (defined in *models/*) related to the transient, and *action* is the short name of what the transient do. Avoid the *wizard* word. For instance : ``account.invoice.make``, ``project.task.delegate.batch``, ..." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:856 -msgid "When defining *report* model (SQL views e.i.) : use ``.report.``, based on the Transient convention." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:859 -msgid "Odoo Python Class : use camelcase (Object-oriented style)." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:870 -msgid "Variable name :" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:868 -msgid "use camelcase for model variable" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:869 -msgid "use underscore lowercase notation for common variable." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:870 -msgid "suffix your variable name with *_id* or *_ids* if it contains a record id or list of id. Don't use ``partner_id`` to contain a record of res.partner" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:878 -msgid "``One2Many`` and ``Many2Many`` fields should always have *_ids* as suffix (example: sale_order_line_ids)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:879 -msgid "``Many2One`` fields should have *_id* as suffix (example : partner_id, user_id, ...)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:889 -msgid "Method conventions" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:881 -msgid "Compute Field : the compute method pattern is *_compute_*" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:882 -msgid "Search method : the search method pattern is *_search_*" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:883 -msgid "Default method : the default method pattern is *_default_*" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:884 -msgid "Selection method: the selection method pattern is *_selection_*" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:885 -msgid "Onchange method : the onchange method pattern is *_onchange_*" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:886 -msgid "Constraint method : the constraint method pattern is *_check_*" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:887 -msgid "Action method : an object action method is prefix with *action_*. Since it uses only one record, add ``self.ensure_one()`` at the beginning of the method." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:900 -msgid "In a Model attribute order should be" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:892 -msgid "Private attributes (``_name``, ``_description``, ``_inherit``, ...)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:893 -msgid "Default method and ``_default_get``" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:894 -msgid "Field declarations" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:895 -msgid "Compute, inverse and search methods in the same order as field declaration" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:896 -msgid "Selection method (methods used to return computed values for selection fields)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:897 -msgid "Constrains methods (``@api.constrains``) and onchange methods (``@api.onchange``)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:898 -msgid "CRUD methods (ORM overrides)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:899 -msgid "Action methods" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:900 -msgid "And finally, other business methods." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:956 -msgid "Javascript and CSS" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:959 -msgid "Static files organization" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:961 -msgid "Odoo addons have some conventions on how to structure various files. We explain here in more details how web assets are supposed to be organized." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:964 -msgid "The first thing to know is that the Odoo server will serve (statically) all files located in a *static/* folder, but prefixed with the addon name. So, for example, if a file is located in *addons/web/static/src/js/some_file.js*, then it will be statically available at the url *your-odoo-server.com/web/static/src/js/some_file.js*" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:969 -msgid "The convention is to organize the code according to the following structure:" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:971 -msgid "*static*: all static files in general" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:973 -msgid "*static/lib*: this is the place where js libs should be located, in a sub folder. So, for example, all files from the *jquery* library are in *addons/web/static/lib/jquery*" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:975 -msgid "*static/src*: the generic static source code folder" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:977 -msgid "*static/src/css*: all css files" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:978 -msgid "*static/src/fonts*" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:979 -msgid "*static/src/img*" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:980 -msgid "*static/src/js*" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:982 -msgid "*static/src/js/tours*: end user tour files (tutorials, not tests)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:984 -msgid "*static/src/scss*: scss files" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:985 -msgid "*static/src/xml*: all qweb templates that will be rendered in JS" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:987 -msgid "*static/tests*: this is where we put all test related files." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:989 -msgid "*static/tests/tours*: this is where we put all tour test files (not tutorials)." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:992 -msgid "Javascript coding guidelines" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:994 -msgid "``use strict;`` is recommended for all javascript files" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:995 -msgid "Use a linter (jshint, ...)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:996 -msgid "Never add minified Javascript Libraries" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:997 -msgid "Use camelcase for class declaration" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:999 -msgid "More precise JS guidelines are detailed in the `github wiki `_. You may also have a look at existing API in Javascript by looking Javascript References." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1004 -msgid "CSS coding guidelines" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1006 -msgid "Prefix all your classes with *o_* where *module_name* is the technical name of the module ('sale', 'im_chat', ...) or the main route reserved by the module (for website module mainly, i.e. : 'o_forum' for *website_forum* module). The only exception for this rule is the webclient: it simply uses *o_* prefix." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1011 -msgid "Avoid using *id* tag" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1012 -msgid "Use Bootstrap native classes" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1013 -msgid "Use underscore lowercase notation to name class" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1018 -msgid "Git" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1021 -msgid "Configure your git" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1023 -msgid "Based on ancestral experience and oral tradition, the following things go a long way towards making your commits more helpful:" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1026 -msgid "Be sure to define both the user.email and user.name in your local git config" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1032 -msgid "Be sure to add your full name to your Github profile here. Please feel fancy and add your team, avatar, your favorite quote, and whatnot ;-)" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1036 -msgid "Commit message structure" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1038 -msgid "Commit message has four parts: tag, module, short description and full description. Try to follow the preferred structure for your commit messages" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1061 -msgid "Tag and module name" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1063 -msgid "Tags are used to prefix your commit. They should be one of the following" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1065 -msgid "**[FIX]** for bug fixes: mostly used in stable version but also valid if you are fixing a recent bug in development version;" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1067 -msgid "**[REF]** for refactoring: when a feature is heavily rewritten;" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1068 -msgid "**[ADD]** for adding new modules;" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1069 -msgid "**[REM]** for removing resources: removing dead code, removing views, removing modules, ...;" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1071 -msgid "**[REV]** for reverting commits: if a commit causes issues or is not wanted reverting it is done using this tag;" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1073 -msgid "**[MOV]** for moving files: use git move and do not change content of moved file otherwise Git may loose track and history of the file; also used when moving code from one file to another;" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1076 -msgid "**[REL]** for release commits: new major or minor stable versions;" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1077 -msgid "**[IMP]** for improvements: most of the changes done in development version are incremental improvements not related to another tag;" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1079 -msgid "**[MERGE]** for merge commits: used in forward port of bug fixes but also as main commit for feature involving several separated commits;" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1081 -msgid "**[CLA]** for signing the Odoo Individual Contributor License;" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1082 -msgid "**[I18N]** for changes in translation files;" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1084 -msgid "After tag comes the modified module name. Use the technical name as functional name may change with time. If several modules are modified, list them or use various to tell it is cross-modules. Unless really required or easier avoid modifying code across several modules in the same commit. Understanding module history may become difficult." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1091 -msgid "Commit message header" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1093 -msgid "After tag and module name comes a meaningful commit message header. It should be self explanatory and include the reason behind the change. Do not use single words like \"bugfix\" or \"improvements\". Try to limit the header length to about 50 characters for readability." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1098 -msgid "Commit message header should make a valid sentence once concatenated with ``if applied, this commit will
``. For example ``[IMP] base: prevent to archive users linked to active partners`` is correct as it makes a valid sentence ``if applied, this commit will prevent users to archive...``." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1104 -msgid "Commit message full description" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1106 -msgid "In the message description specify the part of the code impacted by your changes (module name, lib, transversal object, ...) and a description of the changes." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1109 -msgid "First explain WHY you are modifying code. What is important if someone goes back to your commit in about 4 decades (or 3 days) is why you did it. It is the purpose of the change." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1113 -msgid "What you did can be found in the commit itself. If there was some technical choices involved it is a good idea to explain it also in the commit message after the why. For Odoo R&D developers \"PO team asked me to do it\" is not a valid why, by the way." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1117 -msgid "Please avoid commits which simultaneously impact multiple modules. Try to split into different commits where impacted modules are different. It will be helpful if we need to revert changes in a given module separately." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1121 -msgid "Don't hesitate to be a bit verbose. Most people will only see your commit message and judge everything you did in your life just based on those few sentences. No pressure at all." -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1125 -msgid "**You spend several hours, days or weeks working on meaningful features. Take some time to calm down and write clear and understandable commit messages.**" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1128 -msgid "If you are an Odoo R&D developer the WHY should be the purpose of the task you are working on. Full specifications make the core of the commit message. **If you are working on a task that lacks purpose and specifications please consider making them clear before continuing.**" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1133 -msgid "Finally here are some examples of correct commit messages :" -msgstr "" - -#: ../../content/developer/misc/other/guidelines.rst:1156 -msgid "Use the long description to explain the *why* not the *what*, the *what* can be seen in the diff" -msgstr "" - -#: ../../content/developer/misc/other/iot.rst:4 +#: ../../content/developer/iot.rst:4 msgid "Internet of Things" msgstr "" -#: ../../content/developer/misc/other/iot.rst:6 +#: ../../content/developer/iot.rst:6 msgid "IoT Drivers allow any Odoo module to communicate in real-time with any device connected to the IoT Box. Communication with the IoT Box goes both ways, so the Odoo client can send commands to and receive information from any of the supported devices." msgstr "" -#: ../../content/developer/misc/other/iot.rst:11 +#: ../../content/developer/iot.rst:11 msgid "To add support for a device, all we need is:" msgstr "" -#: ../../content/developer/misc/other/iot.rst:13 +#: ../../content/developer/iot.rst:13 msgid "an `Interface`, to detect connected devices of a specific type" msgstr "" -#: ../../content/developer/misc/other/iot.rst:14 +#: ../../content/developer/iot.rst:14 msgid "a `Driver`, to communicate with an individual device" msgstr "" -#: ../../content/developer/misc/other/iot.rst:16 +#: ../../content/developer/iot.rst:16 msgid "At each boot, the IoT Box will load all of the Interfaces and Drivers that can be located on the connected Odoo instance. Each module can contain an `iot_handlers` directory that will be copied to the IoT Box. The structure of this directory is the following" msgstr "" -#: ../../content/developer/misc/other/iot.rst:35 +#: ../../content/developer/iot.rst:35 msgid "Detect Devices" msgstr "" -#: ../../content/developer/misc/other/iot.rst:37 +#: ../../content/developer/iot.rst:37 msgid "Devices connected to the IoT Box are detected through `Interfaces`. There is an Interface for each supported connection type (USB, Bluetooth, Video, Printers, Serial, etc.). The interface maintains a list of detected devices and associates them with the right Driver." msgstr "" -#: ../../content/developer/misc/other/iot.rst:42 +#: ../../content/developer/iot.rst:42 msgid "Supported devices will appear both on the IoT Box Homepage that you can access through its IP address and in the IoT module of the connected Odoo instance." msgstr "" -#: ../../content/developer/misc/other/iot.rst:46 +#: ../../content/developer/iot.rst:46 msgid "Interface" msgstr "" -#: ../../content/developer/misc/other/iot.rst:48 +#: ../../content/developer/iot.rst:48 msgid "The role of the Interface is to maintain a list of devices connected through a determined connection type. Creating a new interface requires" msgstr "" -#: ../../content/developer/misc/other/iot.rst:51 +#: ../../content/developer/iot.rst:51 msgid "Extending the `Interface` class" msgstr "" -#: ../../content/developer/misc/other/iot.rst:52 +#: ../../content/developer/iot.rst:52 msgid "Setting the `connection_type` class attribute" msgstr "" -#: ../../content/developer/misc/other/iot.rst:53 +#: ../../content/developer/iot.rst:53 msgid "Implementing the `get_devices` method, that should return a dictionary containing data about each detected device. This data will be given as argument to the constructors and `supported` method of the Drivers." msgstr "" -#: ../../content/developer/misc/other/iot.rst:58 +#: ../../content/developer/iot.rst:58 msgid "Setting the `_loop_delay` attribute will modify the interval between calls to `get_devices`. By default, this interval is set to 3 seconds." msgstr "" -#: ../../content/developer/misc/other/iot.rst:75 +#: ../../content/developer/iot.rst:75 msgid "Driver" msgstr "" -#: ../../content/developer/misc/other/iot.rst:77 +#: ../../content/developer/iot.rst:77 msgid "Once the interface has retrieved the list of detected devices, it will loop through all of the Drivers that have the same `connection_type` attribute and test their respective `supported` method on all detected devices. If the supported method of a Driver returns `True`, an instance of this Driver will be created for the corresponding device." msgstr "" -#: ../../content/developer/misc/other/iot.rst:84 +#: ../../content/developer/iot.rst:84 msgid "`supported` methods of drivers are given a priority order. The `supported` method of a child class will always be tested before the one of its parent. This priority can be adjusted by modifying the `priority` attribute of the Driver." msgstr "" -#: ../../content/developer/misc/other/iot.rst:89 +#: ../../content/developer/iot.rst:89 msgid "Creating a new Driver requires:" msgstr "" -#: ../../content/developer/misc/other/iot.rst:91 +#: ../../content/developer/iot.rst:91 msgid "Extending `Driver`" msgstr "" -#: ../../content/developer/misc/other/iot.rst:92 +#: ../../content/developer/iot.rst:92 msgid "Setting the `connection_type` class attribute." msgstr "" -#: ../../content/developer/misc/other/iot.rst:93 +#: ../../content/developer/iot.rst:93 msgid "Setting the `device_type`, `device_connection` and `device_name` attributes." msgstr "" -#: ../../content/developer/misc/other/iot.rst:94 +#: ../../content/developer/iot.rst:94 msgid "Defining the `supported` method" msgstr "" -#: ../../content/developer/misc/other/iot.rst:114 +#: ../../content/developer/iot.rst:114 msgid "Communicate With Devices" msgstr "" -#: ../../content/developer/misc/other/iot.rst:116 +#: ../../content/developer/iot.rst:116 msgid "Once your new device is detected and appears in the IoT module, the next step is to communicate with it. Since the box only has a local IP address, it can only be reached from the same local network. Communication, therefore, needs to happen on the browser-side, in JavaScript." msgstr "" -#: ../../content/developer/misc/other/iot.rst:121 +#: ../../content/developer/iot.rst:121 msgid "The process depends on the direction of the communication: - From the browser to the box, through `Actions`_ - From the box to the browser, through `Longpolling`_" msgstr "" -#: ../../content/developer/misc/other/iot.rst:125 +#: ../../content/developer/iot.rst:125 msgid "Both channels are accessed from the same JS object, the `DeviceProxy`, which is instantiated using the IP of the IoT Box and the device identifier." msgstr "" -#: ../../content/developer/misc/other/iot.rst:140 +#: ../../content/developer/iot.rst:140 msgid "Actions are used to tell a selected device to execute a specific action, such as taking a picture, printing a receipt, etc." msgstr "" -#: ../../content/developer/misc/other/iot.rst:144 +#: ../../content/developer/iot.rst:144 msgid "It must be noted that no “answer” will be sent by the box on this route, only the request status. The answer to the action, if any, has to be retrieved via the longpolling." msgstr "" -#: ../../content/developer/misc/other/iot.rst:148 +#: ../../content/developer/iot.rst:148 msgid "An action can be performed on the DeviceProxy Object." msgstr "" -#: ../../content/developer/misc/other/iot.rst:154 +#: ../../content/developer/iot.rst:154 msgid "In your driver, define an `action` method that will be executed when called from an Odoo module. It takes the data given during the call as argument." msgstr "" -#: ../../content/developer/misc/other/iot.rst:163 +#: ../../content/developer/iot.rst:163 msgid "Longpolling" msgstr "" -#: ../../content/developer/misc/other/iot.rst:165 +#: ../../content/developer/iot.rst:165 msgid "When any module in Odoo wants to read data from a specific device, it creates a listener identified by the IP/domain of the box and the device identifier and passes it a callback function to be called every time the device status changes. The callback is called with the new data as argument." msgstr "" -#: ../../content/developer/misc/other/iot.rst:178 +#: ../../content/developer/iot.rst:178 msgid "In the Driver, an event is released by calling the `device_changed` function from the `event_manager`. All callbacks set on the listener will then be called with `self.data` as argument." msgstr "" #: ../../content/developer/reference.rst:6 -msgid "Reference Guides" +msgid "Reference" msgstr "" #: ../../content/developer/reference/addons.rst:5 @@ -14827,10 +13928,10 @@ msgstr "" #: ../../content/developer/reference/addons/actions.rst:15 #: ../../content/developer/reference/addons/data.rst:135 -#: ../../content/developer/reference/addons/views.rst:1122 -#: ../../content/developer/reference/addons/views.rst:1158 -#: ../../content/developer/reference/addons/views.rst:1456 -#: ../../content/developer/reference/addons/views.rst:1744 +#: ../../content/developer/reference/addons/views.rst:1171 +#: ../../content/developer/reference/addons/views.rst:1211 +#: ../../content/developer/reference/addons/views.rst:1485 +#: ../../content/developer/reference/addons/views.rst:1796 msgid "``type``" msgstr "" @@ -14981,8 +14082,8 @@ msgid "additional context data to pass to the views" msgstr "" #: ../../content/developer/reference/addons/actions.rst:99 -#: ../../content/developer/reference/addons/views.rst:624 -#: ../../content/developer/reference/addons/views.rst:1893 +#: ../../content/developer/reference/addons/views.rst:649 +#: ../../content/developer/reference/addons/views.rst:1953 msgid "``domain`` (optional)" msgstr "" @@ -15297,9 +14398,10 @@ msgstr "" #: ../../content/developer/reference/addons/actions.rst:347 #: ../../content/developer/reference/addons/reports.rst:195 -#: ../../content/developer/reference/addons/views.rst:616 -#: ../../content/developer/reference/addons/views.rst:719 -#: ../../content/developer/reference/addons/views.rst:807 +#: ../../content/developer/reference/addons/views.rst:641 +#: ../../content/developer/reference/addons/views.rst:748 +#: ../../content/developer/reference/addons/views.rst:846 +#: ../../content/developer/reference/addons/views.rst:2097 msgid "``name`` (mandatory)" msgstr "" @@ -15512,8 +14614,8 @@ msgid "Core operations" msgstr "" #: ../../content/developer/reference/addons/data.rst:58 -#: ../../content/developer/reference/addons/views.rst:387 -#: ../../content/developer/reference/addons/views.rst:1272 +#: ../../content/developer/reference/addons/views.rst:397 +#: ../../content/developer/reference/addons/views.rst:1335 msgid "``record``" msgstr "" @@ -15559,11 +14661,11 @@ msgid "Requires an :term:`external id`, defaults to ``True``." msgstr "" #: ../../content/developer/reference/addons/data.rst:80 -#: ../../content/developer/reference/addons/views.rst:369 -#: ../../content/developer/reference/addons/views.rst:881 -#: ../../content/developer/reference/addons/views.rst:1234 -#: ../../content/developer/reference/addons/views.rst:1562 -#: ../../content/developer/reference/addons/views.rst:1880 +#: ../../content/developer/reference/addons/views.rst:377 +#: ../../content/developer/reference/addons/views.rst:922 +#: ../../content/developer/reference/addons/views.rst:1293 +#: ../../content/developer/reference/addons/views.rst:1595 +#: ../../content/developer/reference/addons/views.rst:1938 msgid "``field``" msgstr "" @@ -15672,7 +14774,7 @@ msgid "The evaluation context contains various modules (``time``, ``datetime``, msgstr "" #: ../../content/developer/reference/addons/data.rst:148 -#: ../../content/developer/reference/addons/views.rst:1316 +#: ../../content/developer/reference/addons/views.rst:1383 msgid "``delete``" msgstr "" @@ -15745,7 +14847,7 @@ msgid "A ``groups`` attribute is interpreted as a comma-separated sequence of :t msgstr "" #: ../../content/developer/reference/addons/data.rst:229 -#: ../../content/developer/reference/addons/views.rst:1456 +#: ../../content/developer/reference/addons/views.rst:1485 msgid "``action``" msgstr "" @@ -15833,199 +14935,199 @@ msgstr "" msgid "rendered in a more readable format:" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "country_id:id" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "code" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "state_au_1" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "au" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "Australian Capital Territory" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "ACT" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "state_au_2" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "New South Wales" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "NSW" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "state_au_3" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "Northern Territory" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "NT" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "state_au_4" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "Queensland" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "QLD" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "state_au_5" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "South Australia" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "SA" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "state_au_6" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "Tasmania" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "TAS" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "state_au_7" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "Victoria" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "VIC" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "state_au_8" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "Western Australia" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "WA" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "state_us_1" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "us" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "Alabama" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "AL" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "state_us_2" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "Alaska" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "AK" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "state_us_3" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "Arizona" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "AZ" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "state_us_4" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "Arkansas" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "AR" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "state_us_5" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "California" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "CA" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "state_us_6" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "Colorado" msgstr "" -#: ../../content/developer/reference/addons/static/res.country.state.csv:1 +#: ../../content/developer/reference/addons/data/res.country.state.csv:1 msgid "CO" msgstr "" @@ -16194,7 +15296,7 @@ msgid "the original :class:`werkzeug.wrappers.Request` object provided to the re msgstr "" #: ../../../odoo/odoo/http.py:docstring of odoo.http.WebRequest:15 -msgid ":class:`~collections.Mapping` of request parameters, not generally useful as they're provided directly to the handler method as keyword arguments" +msgid ":class:`~collections.abc.Mapping` of request parameters, not generally useful as they're provided directly to the handler method as keyword arguments" msgstr "" #: ../../../odoo/odoo/http.py:docstring of odoo.http.WebRequest.cr:1 @@ -16206,7 +15308,7 @@ msgid "Accessing the cursor when the current request uses the ``none`` authentic msgstr "" #: ../../../odoo/odoo/http.py:docstring of odoo.http.WebRequest.context:1 -msgid ":class:`~collections.Mapping` of context values for the current request" +msgid ":class:`~collections.abc.Mapping` of context values for the current request" msgstr "" #: ../../../odoo/odoo/http.py:docstring of odoo.http.WebRequest.env:1 @@ -16851,7 +15953,7 @@ msgid "link type to be generated; can be any of these values:" msgstr "" #: ../../content/developer/reference/addons/mixins.rst:405 -#: ../../content/developer/reference/addons/views.rst:579 +#: ../../content/developer/reference/addons/views.rst:600 msgid "``view``" msgstr "" @@ -16873,8 +15975,8 @@ msgstr "" #: ../../content/developer/reference/addons/mixins.rst:411 #: ../../content/developer/reference/addons/mixins.rst:413 -#: ../../content/developer/reference/addons/views.rst:1278 -#: ../../content/developer/reference/addons/views.rst:1280 +#: ../../content/developer/reference/addons/views.rst:1341 +#: ../../content/developer/reference/addons/views.rst:1343 msgid "self-explanatory" msgstr "" @@ -17286,6 +16388,10 @@ msgstr "" msgid "These fields are editable in the frontend using the \"Promote\" tool from the Editor toolbar. Setting these fields can help search engines to better index your pages. Note that search engines do not base their results only on these metadata; the best SEO practice should still be to get referenced by reliable sources." msgstr "" +#: ../../content/developer/reference/addons/mixins.rst:969 +msgid "Others" +msgstr "" + #: ../../content/developer/reference/addons/mixins.rst:974 msgid "Customer Rating" msgstr "" @@ -20085,7 +19191,7 @@ msgid "recordset of records satisfying func, may be empty." msgstr "" #: ../../content/developer/reference/addons/orm.rst:945 -#: ../../content/developer/reference/addons/views.rst:1641 +#: ../../content/developer/reference/addons/views.rst:1682 msgid "Map" msgstr "" @@ -20808,7 +19914,7 @@ msgid "Unsafe Public Methods" msgstr "" #: ../../content/developer/reference/addons/security.rst:205 -msgid "Any public method can be executed via a :ref:`RPC call ` with the chosen parameters. The methods starting with a ``_`` are not callable from an action button or external API." +msgid "Any public method can be executed via a :ref:`RPC call ` with the chosen parameters. The methods starting with a ``_`` are not callable from an action button or external API." msgstr "" #: ../../content/developer/reference/addons/security.rst:209 @@ -21913,7 +21019,7 @@ msgid "Build doc of ir_ui_view.py ?" msgstr "" #: ../../content/developer/reference/addons/views.rst:18 -#: ../../content/developer/reference/addons/views.rst:906 +#: ../../content/developer/reference/addons/views.rst:949 msgid "Generic structure" msgstr "" @@ -21990,7 +21096,7 @@ msgid "info on create/... in the context ?" msgstr "" #: ../../content/developer/reference/addons/views.rst:83 -#: ../../content/developer/reference/addons/views.rst:1608 +#: ../../content/developer/reference/addons/views.rst:1649 msgid "``create``" msgstr "" @@ -22015,7 +21121,7 @@ msgid "Disable/enable record deletion on the view through the **Action** dropdow msgstr "" #: ../../content/developer/reference/addons/views.rst:95 -msgid "``duplicate`` (``form`` & ``list``)" +msgid "``duplicate`` (``form``)" msgstr "" #: ../../content/developer/reference/addons/views.rst:97 @@ -22070,6 +21176,13 @@ msgstr "" msgid "Only views extending AbstractView and AbstractController can use this attribute, like :ref:`reference/views/form`, :ref:`reference/views/kanban`, :ref:`reference/views/list`, ..." msgstr "" +#: ../../content/developer/reference/addons/views.rst:159 +#: ../../content/developer/reference/addons/views.rst:1963 +#: ../../content/developer/reference/addons/views.rst:2000 +#: ../../content/developer/reference/addons/views.rst:2026 +msgid "Example:" +msgstr "" + #: ../../content/developer/reference/addons/views.rst:179 msgid "Views main content section, with field, group & separator ?" msgstr "" @@ -22170,1498 +21283,1512 @@ msgstr "" msgid "The inheritance spec may have an optional ``position`` attribute specifying how the matched node should be altered:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:277 +#: ../../content/developer/reference/addons/views.rst:279 msgid "``inside`` (default)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:278 +#: ../../content/developer/reference/addons/views.rst:280 msgid "the content of the inheritance spec is appended to the matched node" msgstr "" -#: ../../content/developer/reference/addons/views.rst:280 +#: ../../content/developer/reference/addons/views.rst:282 msgid "the content of the inheritance spec replaces the matched node. Any text node containing only ``$0`` within the contents of the spec will be replaced by a complete copy of the matched node, effectively wrapping the matched node." msgstr "" -#: ../../content/developer/reference/addons/views.rst:285 +#: ../../content/developer/reference/addons/views.rst:287 msgid "the content of the inheritance spec is added to the matched node's parent, after the matched node" msgstr "" -#: ../../content/developer/reference/addons/views.rst:288 +#: ../../content/developer/reference/addons/views.rst:290 msgid "the content of the inheritance spec is added to the matched node's parent, before the matched node" msgstr "" -#: ../../content/developer/reference/addons/views.rst:291 +#: ../../content/developer/reference/addons/views.rst:293 msgid "the content of the inheritance spec should be ``attribute`` elements with a ``name`` attribute and an optional body:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:294 +#: ../../content/developer/reference/addons/views.rst:296 msgid "if the ``attribute`` element has a body, a new attributed named after its ``name`` is created on the matched node with the ``attribute`` element's text as value" msgstr "" -#: ../../content/developer/reference/addons/views.rst:297 +#: ../../content/developer/reference/addons/views.rst:299 msgid "if the ``attribute`` element has no body, the attribute named after its ``name`` is removed from the matched node. If no such attribute exists, an error is raised" msgstr "" -#: ../../content/developer/reference/addons/views.rst:324 +#: ../../content/developer/reference/addons/views.rst:326 msgid "``move``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:311 +#: ../../content/developer/reference/addons/views.rst:313 msgid "can be used as a direct child of a inheritance spec with a ``inside``, ``replace``, ``after`` or ``before`` ``position`` attribute to move a node." msgstr "" -#: ../../content/developer/reference/addons/views.rst:326 +#: ../../content/developer/reference/addons/views.rst:328 msgid "A view's specs are applied sequentially." msgstr "" -#: ../../content/developer/reference/addons/views.rst:328 +#: ../../content/developer/reference/addons/views.rst:330 msgid "an extension function is added for simpler matching in QWeb views: ``hasclass(*classes)`` matches if the context node has all the specified classes" msgstr "" -#: ../../content/developer/reference/addons/views.rst:335 +#: ../../content/developer/reference/addons/views.rst:337 msgid "View types" msgstr "" -#: ../../content/developer/reference/addons/views.rst:340 +#: ../../content/developer/reference/addons/views.rst:342 msgid "Activity" msgstr "" -#: ../../content/developer/reference/addons/views.rst:342 +#: ../../content/developer/reference/addons/views.rst:344 msgid "The Activity view is used to display the activities linked to the records. The data are displayed in a chart with the records forming the rows and the activity types the columns. The first cell of each row displays a (customizable, see ``templates``, quite similarly to :ref:`reference/views/kanban`) card representing the corresponding record. When clicking on others cells, a detailed description of all activities of the same type for the record is displayed." msgstr "" -#: ../../content/developer/reference/addons/views.rst:351 +#: ../../content/developer/reference/addons/views.rst:353 msgid "The Activity view is only available when the ``mail`` module is installed, and for the models that inherit from the ``mail.activity.mixin``." msgstr "" -#: ../../content/developer/reference/addons/views.rst:354 +#: ../../content/developer/reference/addons/views.rst:356 msgid "The root element of the Activity view is ````, it accepts the following attributes:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:358 -#: ../../content/developer/reference/addons/views.rst:487 +#: ../../content/developer/reference/addons/views.rst:362 +#: ../../content/developer/reference/addons/views.rst:502 msgid "``string`` (mandatory)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:358 -#: ../../content/developer/reference/addons/views.rst:487 +#: ../../content/developer/reference/addons/views.rst:362 +#: ../../content/developer/reference/addons/views.rst:502 msgid "A title, which should describe the view" msgstr "" -#: ../../content/developer/reference/addons/views.rst:360 -#: ../../content/developer/reference/addons/views.rst:1225 +#: ../../content/developer/reference/addons/views.rst:364 +#: ../../content/developer/reference/addons/views.rst:1280 msgid "Possible children of the view element are:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:363 +#: ../../content/developer/reference/addons/views.rst:369 msgid "declares fields to use in activity *logic*. If the field is simply displayed in the activity view, it does not need to be pre-declared." msgstr "" -#: ../../content/developer/reference/addons/views.rst:366 -#: ../../content/developer/reference/addons/views.rst:1231 -#: ../../content/developer/reference/addons/views.rst:1239 +#: ../../content/developer/reference/addons/views.rst:372 +#: ../../content/developer/reference/addons/views.rst:1288 +#: ../../content/developer/reference/addons/views.rst:1298 msgid "Possible attributes are:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:369 -#: ../../content/developer/reference/addons/views.rst:520 -#: ../../content/developer/reference/addons/views.rst:1139 -#: ../../content/developer/reference/addons/views.rst:1234 -#: ../../content/developer/reference/addons/views.rst:1725 +#: ../../content/developer/reference/addons/views.rst:377 +#: ../../content/developer/reference/addons/views.rst:537 +#: ../../content/developer/reference/addons/views.rst:1190 +#: ../../content/developer/reference/addons/views.rst:1293 +#: ../../content/developer/reference/addons/views.rst:1775 msgid "``name`` (required)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:369 -#: ../../content/developer/reference/addons/views.rst:1234 +#: ../../content/developer/reference/addons/views.rst:377 +#: ../../content/developer/reference/addons/views.rst:1293 msgid "the name of the field to fetch" msgstr "" -#: ../../content/developer/reference/addons/views.rst:387 -#: ../../content/developer/reference/addons/views.rst:1083 -#: ../../content/developer/reference/addons/views.rst:1321 +#: ../../content/developer/reference/addons/views.rst:397 +#: ../../content/developer/reference/addons/views.rst:1130 +#: ../../content/developer/reference/addons/views.rst:1388 msgid "``templates``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:372 +#: ../../content/developer/reference/addons/views.rst:380 msgid "defines the :ref:`reference/qweb` templates. Cards definition may be split into multiple templates for clarity, but activity views *must* define at least one root template ``activity-box``, which will be rendered once for each record." msgstr "" -#: ../../content/developer/reference/addons/views.rst:377 +#: ../../content/developer/reference/addons/views.rst:385 msgid "The activity view uses mostly-standard :ref:`javascript qweb ` and provides the following context variables (see :ref:`reference/views/kanban` for more details):" msgstr "" -#: ../../content/developer/reference/addons/views.rst:383 -#: ../../content/developer/reference/addons/views.rst:723 -#: ../../content/developer/reference/addons/views.rst:820 -#: ../../content/developer/reference/addons/views.rst:1079 -#: ../../content/developer/reference/addons/views.rst:1265 -#: ../../content/developer/reference/addons/views.rst:1511 +#: ../../content/developer/reference/addons/views.rst:393 +#: ../../content/developer/reference/addons/views.rst:752 +#: ../../content/developer/reference/addons/views.rst:859 +#: ../../content/developer/reference/addons/views.rst:1126 +#: ../../content/developer/reference/addons/views.rst:1328 +#: ../../content/developer/reference/addons/views.rst:1544 msgid "``widget``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:382 +#: ../../content/developer/reference/addons/views.rst:392 msgid "the current :js:class:`ActivityRecord`, can be used to fetch some meta-information. These methods are also available directly in the template context and don't need to be accessed via ``widget``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:386 +#: ../../content/developer/reference/addons/views.rst:396 msgid "an object with all the requested fields as its attributes. Each field has two attributes ``value`` and ``raw_value``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:392 -#: ../../content/developer/reference/addons/views.rst:1326 +#: ../../content/developer/reference/addons/views.rst:402 msgid "Calendar" msgstr "" -#: ../../content/developer/reference/addons/views.rst:394 +#: ../../content/developer/reference/addons/views.rst:404 msgid "Calendar views display records as events in a daily, weekly, monthly or yearly calendar. Their root element is ````. Available attributes on the calendar view are:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:398 -#: ../../content/developer/reference/addons/views.rst:957 -#: ../../content/developer/reference/addons/views.rst:1332 +#: ../../content/developer/reference/addons/views.rst:410 +#: ../../content/developer/reference/addons/views.rst:1002 msgid "``date_start`` (required)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:399 -#: ../../content/developer/reference/addons/views.rst:1333 +#: ../../content/developer/reference/addons/views.rst:411 msgid "name of the record's field holding the start date for the event" msgstr "" -#: ../../content/developer/reference/addons/views.rst:402 -#: ../../content/developer/reference/addons/views.rst:1336 +#: ../../content/developer/reference/addons/views.rst:414 msgid "``date_stop``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:401 -#: ../../content/developer/reference/addons/views.rst:1335 +#: ../../content/developer/reference/addons/views.rst:413 msgid "name of the record's field holding the end date for the event, if ``date_stop`` is provided records become movable (via drag and drop) directly in the calendar" msgstr "" -#: ../../content/developer/reference/addons/views.rst:405 -#: ../../content/developer/reference/addons/views.rst:1339 +#: ../../content/developer/reference/addons/views.rst:417 msgid "``date_delay``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:405 -#: ../../content/developer/reference/addons/views.rst:1339 +#: ../../content/developer/reference/addons/views.rst:417 msgid "alternative to ``date_stop``, provides the duration of the event instead of its end date (unit: day)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:408 -#: ../../content/developer/reference/addons/views.rst:1342 +#: ../../content/developer/reference/addons/views.rst:420 msgid "name of a record field to use for *color segmentation*. Records in the same color segment are allocated the same highlight color in the calendar, colors are allocated semi-randomly. Displayed the display_name/avatar of the visible record in the sidebar" msgstr "" -#: ../../content/developer/reference/addons/views.rst:414 -#: ../../content/developer/reference/addons/views.rst:1088 -#: ../../content/developer/reference/addons/views.rst:1348 +#: ../../content/developer/reference/addons/views.rst:426 +#: ../../content/developer/reference/addons/views.rst:1135 msgid "``form_view_id``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:413 -#: ../../content/developer/reference/addons/views.rst:1347 +#: ../../content/developer/reference/addons/views.rst:425 msgid "view to open when the user create or edit an event. Note that if this attribute is not set, the calendar view will fall back to the id of the form view in the current action, if any." msgstr "" -#: ../../content/developer/reference/addons/views.rst:418 -#: ../../content/developer/reference/addons/views.rst:1352 +#: ../../content/developer/reference/addons/views.rst:430 msgid "``event_open_popup``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:417 -#: ../../content/developer/reference/addons/views.rst:1351 +#: ../../content/developer/reference/addons/views.rst:429 msgid "If the option 'event_open_popup' is set to true, then the calendar view will open events (or records) in a FormViewDialog. Otherwise, it will open events in a new form view (with a do_action)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:422 -#: ../../content/developer/reference/addons/views.rst:1356 +#: ../../content/developer/reference/addons/views.rst:434 msgid "``quick_add``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:421 -#: ../../content/developer/reference/addons/views.rst:1355 +#: ../../content/developer/reference/addons/views.rst:433 msgid "enables quick-event creation on click: only asks the user for a ``name`` and tries to create a new event with just that and the clicked event time. Falls back to a full form dialog if the quick creation fails" msgstr "" -#: ../../content/developer/reference/addons/views.rst:425 -#: ../../content/developer/reference/addons/views.rst:1359 +#: ../../content/developer/reference/addons/views.rst:437 msgid "``all_day``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:425 -#: ../../content/developer/reference/addons/views.rst:1359 +#: ../../content/developer/reference/addons/views.rst:437 msgid "name of a boolean field on the record indicating whether the corresponding event is flagged as day-long (and duration is irrelevant)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:428 -#: ../../content/developer/reference/addons/views.rst:869 -#: ../../content/developer/reference/addons/views.rst:1362 +#: ../../content/developer/reference/addons/views.rst:440 +#: ../../content/developer/reference/addons/views.rst:910 msgid "``mode``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:428 +#: ../../content/developer/reference/addons/views.rst:440 msgid "Default display mode when loading the calendar. Possible attributes are: ``day``, ``week``, ``month``, ``year``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:432 -#: ../../content/developer/reference/addons/views.rst:1067 +#: ../../content/developer/reference/addons/views.rst:443 +#: ../../content/developer/reference/addons/views.rst:1112 msgid "``scales``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:431 +#: ../../content/developer/reference/addons/views.rst:443 msgid "Comma-separated list of scales to provide. By default, all scales are available. See mode for possible scale values." msgstr "" -#: ../../content/developer/reference/addons/views.rst:452 -#: ../../content/developer/reference/addons/views.rst:1369 +#: ../../content/developer/reference/addons/views.rst:446 +msgid "``create``, ``delete``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:446 +msgid "allows disabling the corresponding action in the view by setting the corresponding attribute to ``false``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:466 msgid "````" msgstr "" -#: ../../content/developer/reference/addons/views.rst:435 -#: ../../content/developer/reference/addons/views.rst:1368 +#: ../../content/developer/reference/addons/views.rst:449 msgid "declares fields to aggregate or to use in kanban *logic*. If the field is simply displayed in the calendar cards." msgstr "" -#: ../../content/developer/reference/addons/views.rst:438 +#: ../../content/developer/reference/addons/views.rst:452 msgid "Fields can have additional attributes:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:440 -msgid "``invisible`` use \"True\" to hide the value in the cards" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:442 -msgid "``avatar_field`` only for x2many field, to display the avatar instead of the display_name in the cards" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:445 -msgid "``write_model`` and ``write_field``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:447 -msgid "you can add a filter and save the result in the defined model, the filter is added in the sidebar" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:449 -msgid "``filter`` and ``color``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:451 -msgid "use \"True\" to add this field in filter in the sidebar. You can specify a ``color`` field used to colorize the checkbox." +#: ../../content/developer/reference/addons/views.rst:456 +#: ../../content/developer/reference/addons/views.rst:1530 +#: ../../content/developer/reference/addons/views.rst:1801 +msgid "``invisible``" msgstr "" #: ../../content/developer/reference/addons/views.rst:457 -msgid "Cohort" +msgid "use \"True\" to hide the value in the cards" msgstr "" -#: ../../content/developer/reference/addons/views.rst:463 -msgid "The cohort view is used to display and understand the way some data changes over a period of time. For example, imagine that for a given business, clients can subscribe to some service. The cohort view can then display the total number of subscriptions each month, and study the rate at which client leave the service (churn). When clicking on a cell, the cohort view will redirect you to a new action in which you will only see the records contained in the cell's time interval; this action contains a list view and a form view." +#: ../../content/developer/reference/addons/views.rst:459 +msgid "``avatar_field``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:459 +msgid "only for x2many field, to display the avatar instead of the display_name in the cards" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:462 +msgid "``write_model`` and ``write_field``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:462 +msgid "you can add a filter and save the result in the defined model, the filter is added in the sidebar" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:466 +msgid "``filter`` and ``color``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:465 +msgid "use \"True\" to add this field in filter in the sidebar. You can specify a ``color`` field used to colorize the checkbox." msgstr "" #: ../../content/developer/reference/addons/views.rst:471 +msgid "Cohort" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:477 +msgid "The cohort view is used to display and understand the way some data changes over a period of time. For example, imagine that for a given business, clients can subscribe to some service. The cohort view can then display the total number of subscriptions each month, and study the rate at which client leave the service (churn). When clicking on a cell, the cohort view will redirect you to a new action in which you will only see the records contained in the cell's time interval; this action contains a list view and a form view." +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:485 msgid "By default the cohort view will use the same list and form views as those defined on the action. You can pass a list view and a form view to the context of the action in order to set/override the views that will be used (the context keys to use being `form_view_id` and `list_view_id`)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:476 +#: ../../content/developer/reference/addons/views.rst:490 msgid "For example, here is a very simple cohort view:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:482 +#: ../../content/developer/reference/addons/views.rst:496 msgid "The root element of the Cohort view is , it accepts the following attributes:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:491 +#: ../../content/developer/reference/addons/views.rst:506 msgid "``date_start`` (mandatory)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:490 +#: ../../content/developer/reference/addons/views.rst:505 msgid "A valid date or datetime field. This field is understood by the view as the beginning date of a record" msgstr "" -#: ../../content/developer/reference/addons/views.rst:495 +#: ../../content/developer/reference/addons/views.rst:510 msgid "``date_stop`` (mandatory)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:494 +#: ../../content/developer/reference/addons/views.rst:509 msgid "A valid date or datetime field. This field is understood by the view as the end date of a record. This is the field that will determine the churn." msgstr "" -#: ../../content/developer/reference/addons/views.rst:500 +#: ../../content/developer/reference/addons/views.rst:515 msgid "``mode`` (optional)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:498 +#: ../../content/developer/reference/addons/views.rst:513 msgid "A string to describe the mode. It should be either 'churn' or 'retention' (default). Churn mode will start at 0% and accumulate over time whereas retention will start at 100% and decrease over time." msgstr "" -#: ../../content/developer/reference/addons/views.rst:506 +#: ../../content/developer/reference/addons/views.rst:521 msgid "``timeline`` (optional)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:503 +#: ../../content/developer/reference/addons/views.rst:518 msgid "A string to describe the timeline. It should be either 'backward' or 'forward' (default). Forward timeline will display data from date_start to date_stop, whereas backward timeline will display data from date_stop to date_start (when the date_start is in future / greater than date_stop)." msgstr "" -#: ../../content/developer/reference/addons/views.rst:510 +#: ../../content/developer/reference/addons/views.rst:525 msgid "``interval`` (optional)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:509 +#: ../../content/developer/reference/addons/views.rst:524 msgid "A string to describe a time interval. It should be 'day', 'week', 'month'' (default) or 'year'." msgstr "" -#: ../../content/developer/reference/addons/views.rst:514 -#: ../../content/developer/reference/addons/views.rst:663 +#: ../../content/developer/reference/addons/views.rst:529 +#: ../../content/developer/reference/addons/views.rst:688 msgid "``measure`` (optional)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:513 +#: ../../content/developer/reference/addons/views.rst:528 msgid "A field that can be aggregated. This field will be used to compute the values for each cell. If not set, the cohort view will count the number of occurrences." msgstr "" -#: ../../content/developer/reference/addons/views.rst:518 +#: ../../content/developer/reference/addons/views.rst:545 msgid "```` (optional)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:517 +#: ../../content/developer/reference/addons/views.rst:532 msgid "allows to specify a particular field in order to manage it from the available measures, it's main use is for hiding a field from the selectable measures:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:521 +#: ../../content/developer/reference/addons/views.rst:538 msgid "the name of the field to use in the view." msgstr "" -#: ../../content/developer/reference/addons/views.rst:523 -#: ../../content/developer/reference/addons/views.rst:588 -#: ../../content/developer/reference/addons/views.rst:620 -#: ../../content/developer/reference/addons/views.rst:693 +#: ../../content/developer/reference/addons/views.rst:540 +#: ../../content/developer/reference/addons/views.rst:611 +#: ../../content/developer/reference/addons/views.rst:645 +#: ../../content/developer/reference/addons/views.rst:720 msgid "``string`` (optional)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:523 +#: ../../content/developer/reference/addons/views.rst:540 msgid "the name that would be used to display the field in the cohort view, overrides the default python String attribute of the field." msgstr "" -#: ../../content/developer/reference/addons/views.rst:528 -#: ../../content/developer/reference/addons/views.rst:1146 +#: ../../content/developer/reference/addons/views.rst:545 +#: ../../content/developer/reference/addons/views.rst:1197 msgid "``invisible`` (optional)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:526 -#: ../../content/developer/reference/addons/views.rst:1747 +#: ../../content/developer/reference/addons/views.rst:543 +#: ../../content/developer/reference/addons/views.rst:1799 msgid "if true, the field will not appear either in the active measures nor in the selectable measures (useful for fields that do not make sense aggregated, such as fields in different units, e.g. € and $)." msgstr "" -#: ../../content/developer/reference/addons/views.rst:533 +#: ../../content/developer/reference/addons/views.rst:550 msgid "Dashboard" msgstr "" -#: ../../content/developer/reference/addons/views.rst:539 +#: ../../content/developer/reference/addons/views.rst:556 msgid "Like pivot and graph view, The dashboard view is used to display aggregate data. However, the dashboard can embed sub views, which makes it possible to have a more complete and interesting look on a given dataset." msgstr "" -#: ../../content/developer/reference/addons/views.rst:543 +#: ../../content/developer/reference/addons/views.rst:560 msgid "The dashboard view can display sub views, aggregates for some fields (over a domain), or even *formulas* (expressions which involves one or more aggregates). For example, here is a very simple dashboard:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:560 +#: ../../content/developer/reference/addons/views.rst:577 msgid "The root element of the Dashboard view is , it does not accept any attributes." msgstr "" -#: ../../content/developer/reference/addons/views.rst:563 +#: ../../content/developer/reference/addons/views.rst:580 msgid "There are 5 possible type of tags in a dashboard view:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:566 +#: ../../content/developer/reference/addons/views.rst:585 msgid "declares a sub view." msgstr "" -#: ../../content/developer/reference/addons/views.rst:568 -#: ../../content/developer/reference/addons/views.rst:585 -#: ../../content/developer/reference/addons/views.rst:605 -#: ../../content/developer/reference/addons/views.rst:681 -#: ../../content/developer/reference/addons/views.rst:715 +#: ../../content/developer/reference/addons/views.rst:587 +#: ../../content/developer/reference/addons/views.rst:606 +#: ../../content/developer/reference/addons/views.rst:628 +#: ../../content/developer/reference/addons/views.rst:706 +#: ../../content/developer/reference/addons/views.rst:742 msgid "Admissible attributes are:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:571 +#: ../../content/developer/reference/addons/views.rst:592 msgid "``type`` (mandatory)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:571 +#: ../../content/developer/reference/addons/views.rst:592 msgid "The type of the sub view. For example, *graph* or *pivot*." msgstr "" -#: ../../content/developer/reference/addons/views.rst:575 +#: ../../content/developer/reference/addons/views.rst:596 msgid "``ref`` (optional)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:574 +#: ../../content/developer/reference/addons/views.rst:595 msgid "An xml id for a view. If not given, the default view for the model will be used." msgstr "" -#: ../../content/developer/reference/addons/views.rst:578 +#: ../../content/developer/reference/addons/views.rst:599 msgid "A string which identifies this element. It is mostly useful to be used as a target for an xpath." msgstr "" -#: ../../content/developer/reference/addons/views.rst:596 -#: ../../content/developer/reference/addons/views.rst:766 -#: ../../content/developer/reference/addons/views.rst:2017 +#: ../../content/developer/reference/addons/views.rst:619 +#: ../../content/developer/reference/addons/views.rst:799 +#: ../../content/developer/reference/addons/views.rst:2077 msgid "``group``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:582 +#: ../../content/developer/reference/addons/views.rst:603 msgid "defines a column layout. This is actually very similar to the group element in a form view." msgstr "" -#: ../../content/developer/reference/addons/views.rst:588 +#: ../../content/developer/reference/addons/views.rst:611 msgid "A description which will be displayed as a group title." msgstr "" -#: ../../content/developer/reference/addons/views.rst:591 +#: ../../content/developer/reference/addons/views.rst:614 msgid "``colspan`` (optional)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:591 +#: ../../content/developer/reference/addons/views.rst:614 msgid "The number of subcolumns in this group tag. By default, 6." msgstr "" -#: ../../content/developer/reference/addons/views.rst:596 -#: ../../content/developer/reference/addons/views.rst:647 -#: ../../content/developer/reference/addons/views.rst:697 -#: ../../content/developer/reference/addons/views.rst:723 +#: ../../content/developer/reference/addons/views.rst:619 +#: ../../content/developer/reference/addons/views.rst:672 +#: ../../content/developer/reference/addons/views.rst:724 +#: ../../content/developer/reference/addons/views.rst:752 msgid "``col`` (optional)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:594 +#: ../../content/developer/reference/addons/views.rst:617 msgid "The number of columns spanned by this group tag (only makes sense inside another group). By default, 6." msgstr "" -#: ../../content/developer/reference/addons/views.rst:673 +#: ../../content/developer/reference/addons/views.rst:698 msgid "``aggregate``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:599 +#: ../../content/developer/reference/addons/views.rst:622 msgid "declares an aggregate. This is the value of an aggregate for a given field over the current domain." msgstr "" -#: ../../content/developer/reference/addons/views.rst:602 +#: ../../content/developer/reference/addons/views.rst:625 msgid "Note that aggregates are supposed to be used inside a group tag (otherwise the style will not be properly applied)." msgstr "" -#: ../../content/developer/reference/addons/views.rst:613 +#: ../../content/developer/reference/addons/views.rst:638 msgid "``field`` (mandatory)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:608 +#: ../../content/developer/reference/addons/views.rst:633 msgid "The field name to use for computing the aggregate. Possible field types are:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:611 +#: ../../content/developer/reference/addons/views.rst:636 msgid "``integer`` (default group operator is sum)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:612 +#: ../../content/developer/reference/addons/views.rst:637 msgid "``float`` (default group operator is sum)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:613 +#: ../../content/developer/reference/addons/views.rst:638 msgid "``many2one`` (default group operator is count distinct)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:616 +#: ../../content/developer/reference/addons/views.rst:641 msgid "A string to identify this aggregate (useful for formulas)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:619 +#: ../../content/developer/reference/addons/views.rst:644 msgid "A short description that will be displayed above the value. If not given, it will fall back to the field string." msgstr "" -#: ../../content/developer/reference/addons/views.rst:623 +#: ../../content/developer/reference/addons/views.rst:648 msgid "An additional restriction on the set of records that we want to aggregate. This domain will be combined with the current domain." msgstr "" -#: ../../content/developer/reference/addons/views.rst:629 +#: ../../content/developer/reference/addons/views.rst:654 msgid "``domain_label`` (optional)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:627 +#: ../../content/developer/reference/addons/views.rst:652 msgid "When the user clicks on an aggregate with a domain, it will be added to the search view as a facet. The string displayed for this facet can be customized with this attribute." msgstr "" -#: ../../content/developer/reference/addons/views.rst:643 +#: ../../content/developer/reference/addons/views.rst:668 msgid "``group_operator`` (optional)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:632 +#: ../../content/developer/reference/addons/views.rst:657 msgid "A valid postgreSQL aggregate function identifier to use when aggregating values (see https://www.postgresql.org/docs/9.5/static/functions-aggregate.html). If not provided, By default, the group_operator from the field definition is used. Note that no aggregation of field values is achieved if the group_operator value is \"\"." msgstr "" -#: ../../content/developer/reference/addons/views.rst:637 +#: ../../content/developer/reference/addons/views.rst:662 msgid "The special aggregate function ``count_distinct`` (defined in odoo) can also be used here" msgstr "" -#: ../../content/developer/reference/addons/views.rst:646 -#: ../../content/developer/reference/addons/views.rst:696 -#: ../../content/developer/reference/addons/views.rst:722 +#: ../../content/developer/reference/addons/views.rst:671 +#: ../../content/developer/reference/addons/views.rst:723 +#: ../../content/developer/reference/addons/views.rst:751 msgid "The number of columns spanned by this tag (only makes sense inside a group). By default, 1." msgstr "" -#: ../../content/developer/reference/addons/views.rst:651 -#: ../../content/developer/reference/addons/views.rst:701 +#: ../../content/developer/reference/addons/views.rst:676 +#: ../../content/developer/reference/addons/views.rst:728 msgid "``widget`` (optional)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:650 +#: ../../content/developer/reference/addons/views.rst:675 msgid "A widget to format the value (like the widget attribute for fields). For example, monetary." msgstr "" -#: ../../content/developer/reference/addons/views.rst:654 -#: ../../content/developer/reference/addons/views.rst:704 +#: ../../content/developer/reference/addons/views.rst:679 +#: ../../content/developer/reference/addons/views.rst:731 msgid "``help`` (optional)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:654 -#: ../../content/developer/reference/addons/views.rst:704 +#: ../../content/developer/reference/addons/views.rst:679 +#: ../../content/developer/reference/addons/views.rst:731 msgid "A help message to dipslay in a tooltip (equivalent of help for a field in python)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:657 +#: ../../content/developer/reference/addons/views.rst:682 msgid "This attribute is the name of a field describing the measure that has to be used in the graph and pivot views when clicking on the aggregate. The special value __count__ can be used to use the count measure." msgstr "" -#: ../../content/developer/reference/addons/views.rst:668 +#: ../../content/developer/reference/addons/views.rst:693 msgid "``clickable`` (optional)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:666 +#: ../../content/developer/reference/addons/views.rst:691 msgid "A boolean indicating if this aggregate should be clickable or not (default to true). Clicking on a clickable aggregate will change the measures used by the subviews and add the value of the domain attribute (if any) to the search view." msgstr "" -#: ../../content/developer/reference/addons/views.rst:673 -#: ../../content/developer/reference/addons/views.rst:709 +#: ../../content/developer/reference/addons/views.rst:698 +#: ../../content/developer/reference/addons/views.rst:736 msgid "``value_label`` (optional)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:671 +#: ../../content/developer/reference/addons/views.rst:696 msgid "A string put on the right of the aggregate value. For example, it can be useful to indicate the unit of measure of the aggregate value." msgstr "" -#: ../../content/developer/reference/addons/views.rst:709 +#: ../../content/developer/reference/addons/views.rst:736 msgid "``formula``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:676 +#: ../../content/developer/reference/addons/views.rst:701 msgid "declares a derived value. Formulas are values computed from aggregates." msgstr "" -#: ../../content/developer/reference/addons/views.rst:678 +#: ../../content/developer/reference/addons/views.rst:703 msgid "Note that like aggregates, formulas are supposed to be used inside a group tag (otherwise the style will not be properly applied)." msgstr "" -#: ../../content/developer/reference/addons/views.rst:687 +#: ../../content/developer/reference/addons/views.rst:714 msgid "``value`` (mandatory)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:684 +#: ../../content/developer/reference/addons/views.rst:711 msgid "A string expression that will be evaluated, with the builtin python evaluator (in the web client). Every aggregate can be used in the context, in the ``record`` variable. For example, ``record.price_total / record.order_id``." msgstr "" -#: ../../content/developer/reference/addons/views.rst:690 +#: ../../content/developer/reference/addons/views.rst:717 msgid "A string to identify this formula" msgstr "" -#: ../../content/developer/reference/addons/views.rst:693 +#: ../../content/developer/reference/addons/views.rst:720 msgid "A short description that will be displayed above the formula." msgstr "" -#: ../../content/developer/reference/addons/views.rst:700 +#: ../../content/developer/reference/addons/views.rst:727 msgid "A widget to format the value (like the widget attribute for fields). For example, monetary. By default, it is 'float'." msgstr "" -#: ../../content/developer/reference/addons/views.rst:707 +#: ../../content/developer/reference/addons/views.rst:734 msgid "A string put on the right of the formula value. For example, it can be useful to indicate the unit of measure of the formula value." msgstr "" -#: ../../content/developer/reference/addons/views.rst:712 +#: ../../content/developer/reference/addons/views.rst:739 msgid "Declares a specialized widget to be used to display the information. This is a mechanism similar to the widgets in the form view." msgstr "" -#: ../../content/developer/reference/addons/views.rst:718 +#: ../../content/developer/reference/addons/views.rst:747 msgid "A string to identify which widget should be instantiated. The view will look into the ``widget_registry`` to get the proper class." msgstr "" -#: ../../content/developer/reference/addons/views.rst:730 +#: ../../content/developer/reference/addons/views.rst:759 msgid "Form views are used to display the data from a single record. Their root element is ``
``. They are composed of regular HTML_ with additional structural and semantic components." msgstr "" -#: ../../content/developer/reference/addons/views.rst:735 -#: ../../content/developer/reference/addons/views.rst:1665 +#: ../../content/developer/reference/addons/views.rst:764 +#: ../../content/developer/reference/addons/views.rst:1706 msgid "Structural components" msgstr "" -#: ../../content/developer/reference/addons/views.rst:737 +#: ../../content/developer/reference/addons/views.rst:766 msgid "Structural components provide structure or \"visual\" features with little logic. They are used as elements or sets of elements in form views." msgstr "" -#: ../../content/developer/reference/addons/views.rst:751 +#: ../../content/developer/reference/addons/views.rst:784 msgid "``notebook``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:741 +#: ../../content/developer/reference/addons/views.rst:772 msgid "defines a tabbed section. Each tab is defined through a ``page`` child element. Pages can have the following attributes:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:744 -msgid "``string`` (required) the title of the tab" +#: ../../content/developer/reference/addons/views.rst:777 +#: ../../content/developer/reference/addons/views.rst:1642 +#: ../../content/developer/reference/addons/views.rst:1950 +msgid "``string`` (required)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:746 -msgid "``accesskey`` an HTML accesskey_" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:748 -msgid "``attrs`` standard dynamic attributes based on record values" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:751 -msgid "Note that ``notebook`` should not be placed within ``group``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:754 -msgid "used to define column layouts in forms. By default, groups define 2 columns and most direct children of groups take a single column. ``field`` direct children of groups display a label by default, and the label and the field itself have a colspan of 1 each." -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:759 -msgid "The number of columns in a ``group`` can be customized using the ``col`` attribute, the number of columns taken by an element can be customized using ``colspan``." -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:763 -msgid "Children are laid out horizontally (tries to fill the next column before changing row)." -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:766 -msgid "Groups can have a ``string`` attribute, which is displayed as the group's title" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:770 -msgid "``newline``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:769 -msgid "only useful within ``group`` elements, ends the current row early and immediately switches to a new row (without filling any remaining column beforehand)" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:773 -#: ../../content/developer/reference/addons/views.rst:2013 -msgid "``separator``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:773 -msgid "small horizontal spacing, with a ``string`` attribute behaves as a section title" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:776 -msgid "``sheet``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:776 -msgid "can be used as a direct child to ``form`` for a narrower and more responsive form layout" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:780 -msgid "``header``" +#: ../../content/developer/reference/addons/views.rst:778 +msgid "the title of the tab" msgstr "" #: ../../content/developer/reference/addons/views.rst:779 -msgid "combined with ``sheet``, provides a full-width location above the sheet itself, generally used to display workflow buttons and status widgets" +msgid "``accesskey``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:783 -msgid "Semantic components" +#: ../../content/developer/reference/addons/views.rst:780 +msgid "an HTML accesskey_" msgstr "" -#: ../../content/developer/reference/addons/views.rst:785 -msgid "Semantic components tie into and allow interaction with the Odoo system. Available semantic components are:" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:798 -#: ../../content/developer/reference/addons/views.rst:1485 -msgid "``button``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:789 -msgid "call into the Odoo system, similar to :ref:`list view buttons `. In addition, the following attribute can be specified:" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:794 -msgid "``special``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:794 -msgid "for form views opened in dialogs: ``save`` to save the record and close the dialog, ``cancel`` to close the dialog without saving." -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:798 -msgid "``confirm``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:797 -msgid "confirmation message to display (and for the user to accept) before performing the button's Odoo call (also works in Kanban views)." -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:801 -msgid "renders (and allow editing of, possibly) a single field of the current record. Using several times a field in a form view is supported and the fields can receive different values for modifiers 'invisible' and 'readonly'. However, the behavior is not guaranteed when several fields exist with different values for modifier 'required'. Possible attributes of the field node are:" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:808 -msgid "the name of the field to render" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:810 -msgid "the node id. Useful when there are several occurrences of the same field in the view (see ``label`` component below). Default is the field name." -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:813 -msgid "fields have a default rendering based on their type (e.g. :class:`~odoo.fields.Char`, :class:`~odoo.fields.Many2one`). The ``widget`` attributes allows using a different rendering method and context." -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:818 -msgid "list of widgets" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:820 -msgid "& options & specific attributes (e.g. widget=statusbar statusbar_visible clickable)" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:823 -msgid "``options``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:823 -msgid "JSON object specifying configuration option for the field's widget (including default widgets)" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:835 -#: ../../content/developer/reference/addons/views.rst:899 -#: ../../content/developer/reference/addons/views.rst:1199 -msgid "``class``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:826 -msgid "HTML class to set on the generated element, common field classes are:" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:828 -msgid "``oe_inline``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:829 -msgid "prevent the usual line break following fields" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:830 -msgid "``oe_left``, ``oe_right``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:831 -msgid "floats_ the field to the corresponding direction" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:832 -msgid "``oe_read_only``, ``oe_edit_only``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:833 -msgid "only displays the field in the corresponding form mode" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:835 -msgid "``oe_avatar``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:835 -msgid "for image fields, displays images as \"avatar\" (square, 90x90 maximum size, some image decorations)" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:838 -msgid "only displays the field for specific users" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:845 -msgid "``on_change``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:840 -msgid "calls the specified method when this field's value is edited, can generate update other fields or display warnings for the user" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:845 -msgid "Use :func:`odoo.api.onchange` on the model" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:847 -#: ../../content/developer/reference/addons/views.rst:903 -#: ../../content/developer/reference/addons/views.rst:1468 -#: ../../content/developer/reference/addons/views.rst:1520 +#: ../../content/developer/reference/addons/views.rst:782 +#: ../../content/developer/reference/addons/views.rst:888 +#: ../../content/developer/reference/addons/views.rst:946 +#: ../../content/developer/reference/addons/views.rst:1497 +#: ../../content/developer/reference/addons/views.rst:1553 msgid "``attrs``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:848 -msgid "dynamic meta-parameters based on record values" +#: ../../content/developer/reference/addons/views.rst:782 +msgid "standard dynamic attributes based on record values" msgstr "" -#: ../../content/developer/reference/addons/views.rst:850 -msgid "for relational fields only, filters to apply when displaying existing records for selection" +#: ../../content/developer/reference/addons/views.rst:784 +msgid "Note that ``notebook`` should not be placed within ``group``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:853 -msgid "for relational fields only, context to pass when fetching possible values" +#: ../../content/developer/reference/addons/views.rst:787 +msgid "used to define column layouts in forms. By default, groups define 2 columns and most direct children of groups take a single column. ``field`` direct children of groups display a label by default, and the label and the field itself have a colspan of 1 each." msgstr "" -#: ../../content/developer/reference/addons/views.rst:855 -msgid "``readonly``" +#: ../../content/developer/reference/addons/views.rst:792 +msgid "The number of columns in a ``group`` can be customized using the ``col`` attribute, the number of columns taken by an element can be customized using ``colspan``." msgstr "" -#: ../../content/developer/reference/addons/views.rst:855 -msgid "display the field in both readonly and edit mode, but never make it editable" +#: ../../content/developer/reference/addons/views.rst:796 +msgid "Children are laid out horizontally (tries to fill the next column before changing row)." msgstr "" -#: ../../content/developer/reference/addons/views.rst:858 -msgid "``required``" +#: ../../content/developer/reference/addons/views.rst:799 +msgid "Groups can have a ``string`` attribute, which is displayed as the group's title" msgstr "" -#: ../../content/developer/reference/addons/views.rst:858 -msgid "generates an error and prevents saving the record if the field doesn't have a value" +#: ../../content/developer/reference/addons/views.rst:803 +msgid "``newline``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:861 -#: ../../content/developer/reference/addons/views.rst:1538 -msgid "``nolabel``" +#: ../../content/developer/reference/addons/views.rst:802 +msgid "only useful within ``group`` elements, ends the current row early and immediately switches to a new row (without filling any remaining column beforehand)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:861 -msgid "don't automatically display the field's label, only makes sense if the field is a direct child of a ``group`` element" +#: ../../content/developer/reference/addons/views.rst:806 +#: ../../content/developer/reference/addons/views.rst:2073 +msgid "``separator``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:806 +msgid "small horizontal spacing, with a ``string`` attribute behaves as a section title" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:809 +msgid "``sheet``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:809 +msgid "can be used as a direct child to ``form`` for a narrower and more responsive form layout" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:813 +msgid "``header``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:812 +msgid "combined with ``sheet``, provides a full-width location above the sheet itself, generally used to display workflow buttons and status widgets" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:816 +msgid "Semantic components" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:818 +msgid "Semantic components tie into and allow interaction with the Odoo system. Available semantic components are:" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:835 +#: ../../content/developer/reference/addons/views.rst:1514 +msgid "``button``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:824 +msgid "call into the Odoo system, similar to :ref:`list view buttons `. In addition, the following attribute can be specified:" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:831 +msgid "``special``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:831 +msgid "for form views opened in dialogs: ``save`` to save the record and close the dialog, ``cancel`` to close the dialog without saving." +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:835 +msgid "``confirm``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:834 +msgid "confirmation message to display (and for the user to accept) before performing the button's Odoo call (also works in Kanban views)." +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:838 +msgid "renders (and allow editing of, possibly) a single field of the current record. Using several times a field in a form view is supported and the fields can receive different values for modifiers 'invisible' and 'readonly'. However, the behavior is not guaranteed when several fields exist with different values for modifier 'required'. Possible attributes of the field node are:" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:847 +msgid "the name of the field to render" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:849 +msgid "the node id. Useful when there are several occurrences of the same field in the view (see ``label`` component below). Default is the field name." +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:852 +msgid "fields have a default rendering based on their type (e.g. :class:`~odoo.fields.Char`, :class:`~odoo.fields.Many2one`). The ``widget`` attributes allows using a different rendering method and context." +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:857 +msgid "list of widgets" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:859 +msgid "& options & specific attributes (e.g. widget=statusbar statusbar_visible clickable)" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:862 +msgid "``options``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:862 +msgid "JSON object specifying configuration option for the field's widget (including default widgets)" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:876 +#: ../../content/developer/reference/addons/views.rst:942 +#: ../../content/developer/reference/addons/views.rst:1254 +msgid "``class``" msgstr "" #: ../../content/developer/reference/addons/views.rst:865 -msgid "``placeholder``" +msgid "HTML class to set on the generated element, common field classes are:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:864 -msgid "help message to display in *empty* fields. Can replace field labels in complex forms. *Should not* be an example of data as users are liable to confuse placeholder text with filled fields" +#: ../../content/developer/reference/addons/views.rst:869 +msgid "``oe_inline``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:868 -msgid "for :class:`~odoo.fields.One2many`, display mode (view type) to use for the field's linked records. One of ``tree``, ``form``, ``kanban`` or ``graph``. The default is ``tree`` (a list display)" +#: ../../content/developer/reference/addons/views.rst:870 +msgid "prevent the usual line break following fields" msgstr "" #: ../../content/developer/reference/addons/views.rst:871 -#: ../../content/developer/reference/addons/views.rst:1982 -msgid "``help``" +msgid "``oe_left``, ``oe_right``" msgstr "" #: ../../content/developer/reference/addons/views.rst:872 -msgid "tooltip displayed for users when hovering the field or its label" +msgid "floats_ the field to the corresponding direction" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:873 +msgid "``oe_read_only``, ``oe_edit_only``" msgstr "" #: ../../content/developer/reference/addons/views.rst:874 -msgid "``filename``" +msgid "only displays the field in the corresponding form mode" msgstr "" -#: ../../content/developer/reference/addons/views.rst:874 -msgid "for binary fields, name of the related field providing the name of the file" +#: ../../content/developer/reference/addons/views.rst:876 +msgid "``oe_avatar``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:877 -msgid "``password``" +#: ../../content/developer/reference/addons/views.rst:876 +msgid "for image fields, displays images as \"avatar\" (square, 90x90 maximum size, some image decorations)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:877 -msgid "indicates that a :class:`~odoo.fields.Char` field stores a password and that its data shouldn't be displayed" +#: ../../content/developer/reference/addons/views.rst:879 +msgid "only displays the field for specific users" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:886 +msgid "``on_change``" msgstr "" #: ../../content/developer/reference/addons/views.rst:881 -msgid "``kanban_view_ref``" +msgid "calls the specified method when this field's value is edited, can generate update other fields or display warnings for the user" msgstr "" -#: ../../content/developer/reference/addons/views.rst:880 -msgid "for opening specific kanban view when selecting records from m2o/m2m in mobile environment" +#: ../../content/developer/reference/addons/views.rst:886 +msgid "Use :func:`odoo.api.onchange` on the model" msgstr "" -#: ../../content/developer/reference/addons/views.rst:903 -msgid "``label``" +#: ../../content/developer/reference/addons/views.rst:889 +msgid "dynamic meta-parameters based on record values" msgstr "" -#: ../../content/developer/reference/addons/views.rst:884 -msgid "when a ``field`` component isn't placed directly inside a ``group``, or when its ``nolabel`` attribute is set, the field's label isn't automatically displayed alongside its value. The ``label`` component is the manual alternative of displaying the label of a field. Possible attributes are:" +#: ../../content/developer/reference/addons/views.rst:891 +msgid "for relational fields only, filters to apply when displaying existing records for selection" msgstr "" #: ../../content/developer/reference/addons/views.rst:894 +msgid "for relational fields only, context to pass when fetching possible values" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:896 +msgid "``readonly``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:896 +msgid "display the field in both readonly and edit mode, but never make it editable" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:899 +msgid "``required``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:899 +msgid "generates an error and prevents saving the record if the field doesn't have a value" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:902 +#: ../../content/developer/reference/addons/views.rst:1571 +msgid "``nolabel``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:902 +msgid "don't automatically display the field's label, only makes sense if the field is a direct child of a ``group`` element" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:906 +msgid "``placeholder``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:905 +msgid "help message to display in *empty* fields. Can replace field labels in complex forms. *Should not* be an example of data as users are liable to confuse placeholder text with filled fields" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:909 +msgid "for :class:`~odoo.fields.One2many`, display mode (view type) to use for the field's linked records. One of ``tree``, ``form``, ``kanban`` or ``graph``. The default is ``tree`` (a list display)" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:912 +#: ../../content/developer/reference/addons/views.rst:2042 +msgid "``help``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:913 +msgid "tooltip displayed for users when hovering the field or its label" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:915 +msgid "``filename``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:915 +msgid "for binary fields, name of the related field providing the name of the file" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:918 +msgid "``password``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:918 +msgid "indicates that a :class:`~odoo.fields.Char` field stores a password and that its data shouldn't be displayed" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:922 +msgid "``kanban_view_ref``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:921 +msgid "for opening specific kanban view when selecting records from m2o/m2m in mobile environment" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:946 +msgid "``label``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:925 +msgid "when a ``field`` component isn't placed directly inside a ``group``, or when its ``nolabel`` attribute is set, the field's label isn't automatically displayed alongside its value. The ``label`` component is the manual alternative of displaying the label of a field. Possible attributes are:" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:937 msgid "``for`` (mandatory)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:890 +#: ../../content/developer/reference/addons/views.rst:933 msgid "the reference to the field associated with the label. Can be either the name of a field, or its id (``id`` attribute set on the ``field``). When there are several occurrences of the same field in the view, and there are several ``label`` components associated with these ``field`` nodes, those labels must have unique ``for`` attributes (in this case referencing the ``id`` attribute of the corresponding ``field`` nodes)." msgstr "" -#: ../../content/developer/reference/addons/views.rst:897 +#: ../../content/developer/reference/addons/views.rst:940 msgid "the label to display. Display the field's label (coming from the field definition in the model) by default." msgstr "" -#: ../../content/developer/reference/addons/views.rst:900 -#: ../../content/developer/reference/addons/views.rst:902 +#: ../../content/developer/reference/addons/views.rst:943 +#: ../../content/developer/reference/addons/views.rst:945 msgid "same as for ``field`` component." msgstr "" -#: ../../content/developer/reference/addons/views.rst:938 +#: ../../content/developer/reference/addons/views.rst:981 msgid "classes for forms" msgstr "" -#: ../../content/developer/reference/addons/views.rst:940 +#: ../../content/developer/reference/addons/views.rst:983 msgid "widgets?" msgstr "" -#: ../../content/developer/reference/addons/views.rst:951 +#: ../../content/developer/reference/addons/views.rst:994 msgid "Gantt views appropriately display Gantt charts (for scheduling)." msgstr "" -#: ../../content/developer/reference/addons/views.rst:953 +#: ../../content/developer/reference/addons/views.rst:996 msgid "The root element of gantt views is ````, it has no children but can take the following attributes:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:957 +#: ../../content/developer/reference/addons/views.rst:1002 msgid "name of the field providing the start datetime of the event for each record." msgstr "" -#: ../../content/developer/reference/addons/views.rst:960 +#: ../../content/developer/reference/addons/views.rst:1005 msgid "``date_stop`` (required)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:960 +#: ../../content/developer/reference/addons/views.rst:1005 msgid "name of the field providing the end duration of the event for each record." msgstr "" -#: ../../content/developer/reference/addons/views.rst:963 +#: ../../content/developer/reference/addons/views.rst:1008 msgid "name of the field used to color the pills according to its value" msgstr "" -#: ../../content/developer/reference/addons/views.rst:978 +#: ../../content/developer/reference/addons/views.rst:1023 msgid "``{$name}`` can be one of the following `bootstrap contextual color`_ (``danger``, ``info``, ``secondary``, ``success`` or ``warning``)." msgstr "" -#: ../../content/developer/reference/addons/views.rst:980 -#: ../../content/developer/reference/addons/views.rst:1194 +#: ../../content/developer/reference/addons/views.rst:1025 +#: ../../content/developer/reference/addons/views.rst:1249 msgid "``default_group_by``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:981 +#: ../../content/developer/reference/addons/views.rst:1026 msgid "name of a field to group tasks by" msgstr "" -#: ../../content/developer/reference/addons/views.rst:982 +#: ../../content/developer/reference/addons/views.rst:1027 msgid "``disable_drag_drop``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:983 +#: ../../content/developer/reference/addons/views.rst:1028 msgid "if set to true, the gantt view will not have any drag&drop support" msgstr "" -#: ../../content/developer/reference/addons/views.rst:984 +#: ../../content/developer/reference/addons/views.rst:1029 msgid "``consolidation``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:985 +#: ../../content/developer/reference/addons/views.rst:1030 msgid "field name to display consolidation value in record cell" msgstr "" -#: ../../content/developer/reference/addons/views.rst:988 +#: ../../content/developer/reference/addons/views.rst:1033 msgid "``consolidation_max``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:987 +#: ../../content/developer/reference/addons/views.rst:1032 msgid "dictionary with the \"group by\" field as key and the maximum consolidation value that can be reached before displaying the cell in red (e.g. ``{\"user_id\": 100}``)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:992 +#: ../../content/developer/reference/addons/views.rst:1037 msgid "``consolidation_exclude``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:991 +#: ../../content/developer/reference/addons/views.rst:1036 msgid "name of the field that describes if the task has to be excluded from the consolidation if set to true it displays a striped zone in the consolidation line" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1009 +#: ../../content/developer/reference/addons/views.rst:1054 msgid "``create``, ``cell_create``, ``edit``, ``delete``, ``plan``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:995 +#: ../../content/developer/reference/addons/views.rst:1040 msgid "allows *dis*\\ abling the corresponding action in the view by setting the corresponding attribute to ``false`` (default: ``true``)." msgstr "" -#: ../../content/developer/reference/addons/views.rst:998 +#: ../../content/developer/reference/addons/views.rst:1043 msgid "``create``: If enabled, an ``Add`` button will be available in the control panel to create records." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1000 +#: ../../content/developer/reference/addons/views.rst:1045 msgid "``cell_create``: If enabled and ``create`` enabled, a \"**+**\" button will be displayed while hovering on a time slot cell to create a new record on that slot." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1002 +#: ../../content/developer/reference/addons/views.rst:1047 msgid "``edit``: If enabled, the opened records will be in edit mode (thus editable)." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1003 +#: ../../content/developer/reference/addons/views.rst:1048 msgid "``plan``: If enabled and ``edit`` enabled, a \"magnifying glass\" button will be displayed on time slots to plan unassigned records into that time slot." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1008 +#: ../../content/developer/reference/addons/views.rst:1053 msgid "When you do not want to create records on the gantt view and the beginning and end dates are required on the model, the planning feature should be disabled because no record will ever be found." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1014 +#: ../../content/developer/reference/addons/views.rst:1059 msgid "``offset``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1012 +#: ../../content/developer/reference/addons/views.rst:1057 msgid "Depending on the scale, the number of units to add to today to compute the default period. Examples: An offset of +1 in default_scale week will open the gantt view for next week, and an offset of -2 in default_scale month will open the gantt view of 2 months ago." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1017 +#: ../../content/developer/reference/addons/views.rst:1062 msgid "``progress``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1017 +#: ../../content/developer/reference/addons/views.rst:1062 msgid "name of a field providing the completion percentage for the record's event, between 0 and 100" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1020 +#: ../../content/developer/reference/addons/views.rst:1065 msgid "title of the gantt view" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1045 +#: ../../content/developer/reference/addons/views.rst:1090 msgid "``precision``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1022 +#: ../../content/developer/reference/addons/views.rst:1067 msgid "JSON object specifying snapping precisions for the pills in each scale." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1024 +#: ../../content/developer/reference/addons/views.rst:1069 msgid "Possible values for scale ``day`` are (default: ``hour``):" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1026 +#: ../../content/developer/reference/addons/views.rst:1071 msgid "``hour``: records times snap to full hours (ex: 7:12 becomes 8:00)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1028 +#: ../../content/developer/reference/addons/views.rst:1073 msgid "``hour:half``: records times snap to half hours (ex: 7:12 becomes 7:30)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1030 +#: ../../content/developer/reference/addons/views.rst:1075 msgid "``hour:quarter``: records times snap to half hours (ex: 7:12 becomes 7:15)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1032 +#: ../../content/developer/reference/addons/views.rst:1077 msgid "Possible values for scale ``week`` are (default: ``day:half``):" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1034 -#: ../../content/developer/reference/addons/views.rst:1040 +#: ../../content/developer/reference/addons/views.rst:1079 +#: ../../content/developer/reference/addons/views.rst:1085 msgid "``day``: records times snap to full days (ex: 7:28 AM becomes 11:59:59 PM of the previous day, 10:32 PM becomes 12:00 PM of the current day)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1036 -#: ../../content/developer/reference/addons/views.rst:1042 +#: ../../content/developer/reference/addons/views.rst:1081 +#: ../../content/developer/reference/addons/views.rst:1087 msgid "``day:half``: records times snap to half hours (ex: 7:28 AM becomes 12:00 PM)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1038 +#: ../../content/developer/reference/addons/views.rst:1083 msgid "Possible values for scale ``month`` are (default: ``day:half``):" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1044 +#: ../../content/developer/reference/addons/views.rst:1089 msgid "Scale ``year`` always snap to full day." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1046 +#: ../../content/developer/reference/addons/views.rst:1091 msgid "Example of precision attribute: ``{\"day\": \"hour:quarter\", \"week\": \"day:half\", \"month\": \"day\"}``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1048 +#: ../../content/developer/reference/addons/views.rst:1093 msgid "``total_row``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1048 +#: ../../content/developer/reference/addons/views.rst:1093 msgid "boolean to control whether the row containing the total count of records should be displayed. (default: ``false``)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1051 +#: ../../content/developer/reference/addons/views.rst:1096 msgid "``collapse_first_level``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1051 +#: ../../content/developer/reference/addons/views.rst:1096 msgid "boolean to control whether it is possible to collapse each row if grouped by one field. (default: ``false``, the collapse starts when grouping by two fields)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1055 +#: ../../content/developer/reference/addons/views.rst:1100 msgid "``display_unavailability``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1054 +#: ../../content/developer/reference/addons/views.rst:1099 msgid "boolean to mark the dates returned by the ``gantt_unavailability`` function of the model as available inside the gantt view. Records can still be scheduled in them, but their unavailability is visually displayed. (default: ``false``)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1063 +#: ../../content/developer/reference/addons/views.rst:1108 msgid "``default_scale``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1058 +#: ../../content/developer/reference/addons/views.rst:1103 msgid "default scale when rendering the view. Possible values are (default: ``month``):" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1060 +#: ../../content/developer/reference/addons/views.rst:1105 msgid "``day``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1061 +#: ../../content/developer/reference/addons/views.rst:1106 msgid "``week``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1062 +#: ../../content/developer/reference/addons/views.rst:1107 msgid "``month``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1063 +#: ../../content/developer/reference/addons/views.rst:1108 msgid "``year``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1066 +#: ../../content/developer/reference/addons/views.rst:1111 msgid "comma-separated list of allowed scales for this view. By default, all scales are allowed. For possible scale values to use in this list, see ``default_scale``." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1070 +#: ../../content/developer/reference/addons/views.rst:1115 msgid "defines the :ref:`reference/qweb` template ``gantt-popover`` which is used when the user hovers over one of the records in the gantt view." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1073 +#: ../../content/developer/reference/addons/views.rst:1118 msgid "The gantt view uses mostly-standard :ref:`javascript qweb ` and provides the following context variables:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1077 +#: ../../content/developer/reference/addons/views.rst:1124 msgid "the current :js:class:`GanttRow`, can be used to fetch some meta-information. The ``getColor`` method to convert in a color integer is also available directly in the template context without using ``widget``." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1081 -msgid "``on_create`` If specified when clicking the add button on the view, instead of opening a generic dialog, launch a client action. this should hold the xmlid of the action (eg: ``on_create=\"%(my_module.my_wizard)d\"``" +#: ../../content/developer/reference/addons/views.rst:1130 +msgid "``on_create``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1086 +#: ../../content/developer/reference/addons/views.rst:1129 +msgid "If specified when clicking the add button on the view, instead of opening a generic dialog, launch a client action. this should hold the xmlid of the action (eg: ``on_create=\"%(my_module.my_wizard)d\"``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:1133 msgid "view to open when the user create or edit a record. Note that if this attribute is not set, the gantt view will fall back to the id of the form view in the current action, if any." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1092 +#: ../../content/developer/reference/addons/views.rst:1139 msgid "``dynamic_range``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1091 +#: ../../content/developer/reference/addons/views.rst:1138 msgid "if set to true, the gantt view will start at the first record, instead of starting at the beginning of the year/month/day." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1111 +#: ../../content/developer/reference/addons/views.rst:1158 msgid "``thumbnails``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1095 +#: ../../content/developer/reference/addons/views.rst:1142 msgid "This allows to display a thumbnail next to groups name if the group is a relationnal field. This expects a python dict which keys are the name of the field on the active model. Values are the names of the field holding the thumbnail on the related model." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1099 +#: ../../content/developer/reference/addons/views.rst:1146 msgid "Example: tasks have a field user_id that reference res.users. The res.users model has a field image that holds the avatar, then:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1111 +#: ../../content/developer/reference/addons/views.rst:1158 msgid "will display the users avatars next to their names when grouped by user_id." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1116 +#: ../../content/developer/reference/addons/views.rst:1163 msgid "Graph" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1118 +#: ../../content/developer/reference/addons/views.rst:1165 msgid "The graph view is used to visualize aggregations over a number of records or record groups. Its root element is ```` which can take the following attributes:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1123 +#: ../../content/developer/reference/addons/views.rst:1172 msgid "one of ``bar`` (default), ``pie`` and ``line``, the type of graph to use" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1125 +#: ../../content/developer/reference/addons/views.rst:1174 msgid "``stacked``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1125 +#: ../../content/developer/reference/addons/views.rst:1174 msgid "only used for ``bar`` charts. If present and set to ``True``, stacks bars within a group" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1127 -#: ../../content/developer/reference/addons/views.rst:1706 +#: ../../content/developer/reference/addons/views.rst:1176 +#: ../../content/developer/reference/addons/views.rst:1754 msgid "``disable_linking``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1128 +#: ../../content/developer/reference/addons/views.rst:1177 msgid "set to ``True`` to prevent from redirecting clicks on graph to list view" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1132 +#: ../../content/developer/reference/addons/views.rst:1181 msgid "``order``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1130 +#: ../../content/developer/reference/addons/views.rst:1179 msgid "if set, x-axis values will be sorted by default according their measure with respect to the given order (``asc`` or ``desc``). Only used for ``bar`` and ``pie`` charts." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1134 +#: ../../content/developer/reference/addons/views.rst:1183 msgid "The only allowed element within a graph view is ``field`` which can have the following attributes:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1138 -#: ../../content/developer/reference/addons/views.rst:1724 +#: ../../content/developer/reference/addons/views.rst:1189 +#: ../../content/developer/reference/addons/views.rst:1774 msgid "the name of a field to use in the view. If used for grouping (rather than aggregating)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1142 +#: ../../content/developer/reference/addons/views.rst:1193 msgid "``title`` (optional)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1142 +#: ../../content/developer/reference/addons/views.rst:1193 msgid "string displayed on the top of the graph." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1145 +#: ../../content/developer/reference/addons/views.rst:1196 msgid "if true, the field will not appear either in the active measures nor in the selectable measures." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1149 -#: ../../content/developer/reference/addons/views.rst:1732 +#: ../../content/developer/reference/addons/views.rst:1200 +#: ../../content/developer/reference/addons/views.rst:1782 msgid "indicates whether the field should be used as a grouping criteria or as an aggregated value within a group. Possible values are:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1153 +#: ../../content/developer/reference/addons/views.rst:1206 msgid "groups by the specified field. All graph types support at least one level of grouping, some may support more." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1155 -#: ../../content/developer/reference/addons/views.rst:1737 +#: ../../content/developer/reference/addons/views.rst:1208 +#: ../../content/developer/reference/addons/views.rst:1789 msgid "``col``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1156 +#: ../../content/developer/reference/addons/views.rst:1209 msgid "authorized in graph views but only used by pivot tables" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1158 -#: ../../content/developer/reference/addons/views.rst:1740 +#: ../../content/developer/reference/addons/views.rst:1211 +#: ../../content/developer/reference/addons/views.rst:1792 msgid "field to aggregate within a group" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1163 -#: ../../content/developer/reference/addons/views.rst:1744 +#: ../../content/developer/reference/addons/views.rst:1216 +#: ../../content/developer/reference/addons/views.rst:1796 msgid "``interval``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1161 -#: ../../content/developer/reference/addons/views.rst:1742 +#: ../../content/developer/reference/addons/views.rst:1214 +#: ../../content/developer/reference/addons/views.rst:1794 msgid "on date and datetime fields, groups by the specified interval (``day``, ``week``, ``month``, ``quarter`` or ``year``) instead of grouping on the specific datetime (fixed second resolution) or date (fixed day resolution)." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1165 -#: ../../content/developer/reference/addons/views.rst:1751 +#: ../../content/developer/reference/addons/views.rst:1218 +#: ../../content/developer/reference/addons/views.rst:1803 msgid "The measures are automatically generated from the model fields; only the aggregatable fields are used. Those measures are also alphabetically sorted on the string of the field." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1171 +#: ../../content/developer/reference/addons/views.rst:1224 msgid "graph view aggregations are performed on database content, non-stored function fields can not be used in graph views" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1179 +#: ../../content/developer/reference/addons/views.rst:1232 msgid "The kanban view is a `kanban board`_ visualisation: it displays records as \"cards\", halfway between a :ref:`list view ` and a non-editable :ref:`form view `. Records may be grouped in columns for use in workflow visualisation or manipulation (e.g. tasks or work-progress management), or ungrouped (used simply to visualize records)." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1185 +#: ../../content/developer/reference/addons/views.rst:1238 msgid "The kanban view will load and display a maximum of ten columns. Any column after that will be closed (but can still be opened by the user)." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1189 +#: ../../content/developer/reference/addons/views.rst:1242 msgid "The root element of the Kanban view is ````, it can use the following attributes:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1193 +#: ../../content/developer/reference/addons/views.rst:1248 msgid "whether the kanban view should be grouped if no grouping is specified via the action or the current search. Should be the name of the field to group by when no grouping is otherwise specified" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1197 -#: ../../content/developer/reference/addons/views.rst:1406 -#: ../../content/developer/reference/addons/views.rst:1671 -#: ../../content/developer/reference/addons/views.rst:1718 +#: ../../content/developer/reference/addons/views.rst:1252 +#: ../../content/developer/reference/addons/views.rst:1429 +#: ../../content/developer/reference/addons/views.rst:1715 +#: ../../content/developer/reference/addons/views.rst:1766 msgid "``default_order``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1197 +#: ../../content/developer/reference/addons/views.rst:1252 msgid "cards sorting order used if the user has not already sorted the records (via the list view)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1200 +#: ../../content/developer/reference/addons/views.rst:1255 msgid "adds HTML classes to the root HTML element of the Kanban view" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1201 +#: ../../content/developer/reference/addons/views.rst:1256 msgid "``examples``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1202 +#: ../../content/developer/reference/addons/views.rst:1257 msgid "if set to a key in the `KanbanExamplesRegistry`_, examples on column setups will be available in the grouped kanban view. `Here `_ is an example of how to define those setups." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1203 +#: ../../content/developer/reference/addons/views.rst:1258 msgid "``group_create``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1204 +#: ../../content/developer/reference/addons/views.rst:1259 msgid "whether the \"Add a new column\" bar is visible or not. Default: true." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1205 +#: ../../content/developer/reference/addons/views.rst:1260 msgid "``group_delete``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1206 +#: ../../content/developer/reference/addons/views.rst:1261 msgid "whether groups can be deleted via the context menu. Default: true." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1207 +#: ../../content/developer/reference/addons/views.rst:1262 msgid "``group_edit``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1208 +#: ../../content/developer/reference/addons/views.rst:1263 msgid "whether groups can be edited via the context menu. Default: true." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1210 +#: ../../content/developer/reference/addons/views.rst:1265 msgid "``archivable``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1210 +#: ../../content/developer/reference/addons/views.rst:1265 msgid "whether records belonging to a column can be archived / restored if an ``active`` field is defined on the model. Default: true." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1214 +#: ../../content/developer/reference/addons/views.rst:1269 msgid "``quick_create``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1213 +#: ../../content/developer/reference/addons/views.rst:1268 msgid "whether it should be possible to create records without switching to the form view. By default, ``quick_create`` is enabled when the Kanban view is grouped by many2one, selection, char or boolean fields, and disabled when not." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1216 +#: ../../content/developer/reference/addons/views.rst:1271 msgid "``quick_create_view``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1217 +#: ../../content/developer/reference/addons/views.rst:1272 msgid "``form`` view reference, specifying the view used for records quick creation." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1221 +#: ../../content/developer/reference/addons/views.rst:1276 msgid "``records_draggable``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1219 +#: ../../content/developer/reference/addons/views.rst:1274 msgid "whether it should be possible to drag records when kanban is grouped. Default: true." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1221 +#: ../../content/developer/reference/addons/views.rst:1276 msgid "Set to ``true`` to always enable it, and to ``false`` to always disable it." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1223 +#: ../../content/developer/reference/addons/views.rst:1278 msgid "VFE missing information on on_create attribute of kanban views." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1228 +#: ../../content/developer/reference/addons/views.rst:1285 msgid "declares fields to use in kanban *logic*. If the field is simply displayed in the kanban view, it does not need to be pre-declared." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1252 -#: ../../content/developer/reference/addons/views.rst:1507 +#: ../../content/developer/reference/addons/views.rst:1313 +#: ../../content/developer/reference/addons/views.rst:1540 msgid "``progressbar``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1237 +#: ../../content/developer/reference/addons/views.rst:1296 msgid "declares a progressbar element to put on top of kanban columns." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1243 +#: ../../content/developer/reference/addons/views.rst:1304 msgid "``field`` (required)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1242 +#: ../../content/developer/reference/addons/views.rst:1303 msgid "the name of the field whose values are used to subgroup column's records in the progressbar" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1247 +#: ../../content/developer/reference/addons/views.rst:1308 msgid "``colors`` (required)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1246 +#: ../../content/developer/reference/addons/views.rst:1307 msgid "JSON mapping the above field values to either \"danger\", \"warning\", \"success\" or \"muted\" colors" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1252 +#: ../../content/developer/reference/addons/views.rst:1313 msgid "``sum_field`` (optional)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1250 +#: ../../content/developer/reference/addons/views.rst:1311 msgid "the name of the field whose column's records' values will be summed and displayed next to the progressbar (if omitted, displays the total number of records)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1255 +#: ../../content/developer/reference/addons/views.rst:1316 msgid "defines a list of :ref:`reference/qweb` templates. Cards definition may be split into multiple templates for clarity, but kanban views *must* define at least one root template ``kanban-box``, which will be rendered once for each record." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1260 +#: ../../content/developer/reference/addons/views.rst:1321 msgid "The kanban view uses mostly-standard :ref:`javascript qweb ` and provides the following context variables:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1264 +#: ../../content/developer/reference/addons/views.rst:1327 msgid "the current :js:class:`KanbanRecord`, can be used to fetch some meta-information. These methods are also available directly in the template context and don't need to be accessed via ``widget``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1268 +#: ../../content/developer/reference/addons/views.rst:1331 msgid "an object with all the requested fields as its attributes. Each field has two attributes ``value`` and ``raw_value``, the former is formatted according to current user parameters, the latter is the direct value from a :meth:`~odoo.models.Model.read` (except for date and datetime fields that are `formatted according to user's locale `_)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1275 +#: ../../content/developer/reference/addons/views.rst:1338 msgid "the current context, coming from the action, and the one2many or many2many field in the case of a Kanban view embedded in a Form view" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1277 +#: ../../content/developer/reference/addons/views.rst:1340 msgid "``user_context``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1279 +#: ../../content/developer/reference/addons/views.rst:1342 msgid "``read_only_mode``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1321 +#: ../../content/developer/reference/addons/views.rst:1388 msgid "``selection_mode``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1282 +#: ../../content/developer/reference/addons/views.rst:1345 msgid "set to true when kanban view is opened in mobile environment from m2o/m2m field for selecting records." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1285 +#: ../../content/developer/reference/addons/views.rst:1348 msgid "clicking on m2o/m2m field in mobile environment opens kanban view" msgstr "" @@ -23669,882 +22796,883 @@ msgstr "" msgid "buttons and fields" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1290 +#: ../../content/developer/reference/addons/views.rst:1353 msgid "While most of the Kanban templates are standard :ref:`reference/qweb`, the Kanban view processes ``field``, ``button`` and ``a`` elements specially:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1293 +#: ../../content/developer/reference/addons/views.rst:1356 msgid "by default fields are replaced by their formatted value, unless the ``widget`` attribute is specified, in which case their rendering and behavior depends on the corresponding widget. Possible values are (among others):" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1300 -#: ../../content/developer/reference/addons/views.rst:1511 +#: ../../content/developer/reference/addons/views.rst:1365 +#: ../../content/developer/reference/addons/views.rst:1544 msgid "``handle``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1299 +#: ../../content/developer/reference/addons/views.rst:1364 msgid "for ``sequence`` (or ``integer``) fields by which records are sorted, allows to drag&drop records to reorder them." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1302 +#: ../../content/developer/reference/addons/views.rst:1367 msgid "list widgets?" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1304 +#: ../../content/developer/reference/addons/views.rst:1369 msgid "buttons and links with a ``type`` attribute become perform Odoo-related operations rather than their standard HTML function. Possible types are:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1309 +#: ../../content/developer/reference/addons/views.rst:1376 msgid "``action``, ``object``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1308 +#: ../../content/developer/reference/addons/views.rst:1375 msgid "standard behavior for :ref:`Odoo buttons `, most attributes relevant to standard Odoo buttons can be used." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1311 +#: ../../content/developer/reference/addons/views.rst:1378 msgid "``open``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1312 +#: ../../content/developer/reference/addons/views.rst:1379 msgid "opens the card's record in the form view in read-only mode" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1313 +#: ../../content/developer/reference/addons/views.rst:1380 msgid "``edit``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1314 +#: ../../content/developer/reference/addons/views.rst:1381 msgid "opens the card's record in the form view in editable mode" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1316 +#: ../../content/developer/reference/addons/views.rst:1383 msgid "deletes the card's record and removes the card" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1320 +#: ../../content/developer/reference/addons/views.rst:1387 msgid "kanban-specific CSS" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1321 +#: ../../content/developer/reference/addons/views.rst:1388 msgid "kanban structures/widgets (vignette, details, ...)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1323 -msgid "If you need to extend the Kanban view, see :js:class::`the JS API `." -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:1328 -msgid "Calendar views display records as events in a daily, weekly or monthly calendar. Their root element is ````. Available attributes on the calendar view are:" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:1362 -msgid "Default display mode when loading the calendar. Possible attributes are: ``day``, ``week``, ``month``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:1365 -msgid "``create``, ``delete``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:1365 -#: ../../content/developer/reference/addons/views.rst:1416 -msgid "allows *dis*\\ abling the corresponding action in the view by setting the corresponding attribute to ``false``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:1376 -msgid "The root element of list views is ````\\ [#treehistory]_. The list view's root can have the following attributes:" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:1380 -msgid "by default, selecting a list view's row opens the corresponding :ref:`form view `. The ``editable`` attributes makes the list view itself editable in-place." -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:1384 -msgid "Valid values are ``top`` and ``bottom``, making *new* records appear respectively at the top or bottom of the list." -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:1387 -msgid "The architecture for the inline :ref:`form view ` is derived from the list view. Most attributes valid on a :ref:`form view `'s fields and buttons are thus accepted by list views although they may not have any meaning if the list view is non-editable" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:1393 -msgid "if the ``edit`` attribute is set to ``false``, the ``editable`` option will be ignored." +#: ../../content/developer/reference/addons/views.rst:1390 +msgid "If you need to extend the Kanban view, see :js:class:`KanbanRecord`." msgstr "" #: ../../content/developer/reference/addons/views.rst:1397 -msgid "``multi_edit``" +msgid "The root element of list views is ````\\ [#treehistory]_. The list view's root can have the following attributes:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1396 -msgid "editable or not editable list can activate the multi-editing feature by defining the `multi_edit=1`" +#: ../../content/developer/reference/addons/views.rst:1403 +msgid "by default, selecting a list view's row opens the corresponding :ref:`form view `. The ``editable`` attributes makes the list view itself editable in-place." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1400 -msgid "overrides the ordering of the view, replacing the model's order (:attr:`~odoo.models.BaseModel._order` model attribute). The value is a comma-separated list of fields, postfixed by ``desc`` to sort in reverse order:" +#: ../../content/developer/reference/addons/views.rst:1407 +msgid "Valid values are ``top`` and ``bottom``, making *new* records appear respectively at the top or bottom of the list." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1412 -#: ../../content/developer/reference/addons/views.rst:1533 -msgid "``{$name}`` can be ``bf`` (``font-weight: bold``), ``it`` (``font-style: italic``), or any `bootstrap contextual color`_ (``danger``, ``info``, ``muted``, ``primary``, ``success`` or ``warning``)." +#: ../../content/developer/reference/addons/views.rst:1410 +msgid "The architecture for the inline :ref:`form view ` is derived from the list view. Most attributes valid on a :ref:`form view `'s fields and buttons are thus accepted by list views although they may not have any meaning if the list view is non-editable" msgstr "" #: ../../content/developer/reference/addons/views.rst:1416 -msgid "``create``, ``edit``, ``delete``, ``duplicate``, ``import``, ``export_xlsx``" +msgid "if the ``edit`` attribute is set to ``false``, the ``editable`` option will be ignored." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1418 -#: ../../content/developer/reference/addons/views.rst:1687 -msgid "``limit``" +#: ../../content/developer/reference/addons/views.rst:1420 +msgid "``multi_edit``" msgstr "" #: ../../content/developer/reference/addons/views.rst:1419 -msgid "the default size of a page. It must be a positive integer" +msgid "editable or not editable list can activate the multi-editing feature by defining the `multi_edit=1`" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1421 -msgid "``groups_limit``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:1421 -msgid "when the list view is grouped, the default number of groups of a page. It must be a position integer" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:1425 -msgid "``expand``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:1424 -msgid "when the list view is grouped, automatically open the first level of groups if set to true (default: false)" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:1427 -msgid "Possible children elements of the list view are:" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:1432 -msgid "displays a button in a list cell" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:1434 -msgid "``icon``" +#: ../../content/developer/reference/addons/views.rst:1423 +msgid "overrides the ordering of the view, replacing the model's order (:attr:`~odoo.models.BaseModel._order` model attribute). The value is a comma-separated list of fields, postfixed by ``desc`` to sort in reverse order:" msgstr "" #: ../../content/developer/reference/addons/views.rst:1435 +#: ../../content/developer/reference/addons/views.rst:1566 +msgid "``{$name}`` can be ``bf`` (``font-weight: bold``), ``it`` (``font-style: italic``), or any `bootstrap contextual color`_ (``danger``, ``info``, ``muted``, ``primary``, ``success`` or ``warning``)." +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:1439 +msgid "``create``, ``edit``, ``delete``, ``import``, ``export_xlsx``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:1439 +msgid "allows *dis*\\ abling the corresponding action in the view by setting the corresponding attribute to ``false``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:1441 +#: ../../content/developer/reference/addons/views.rst:1733 +#: ../../content/developer/reference/addons/views.rst:2140 +msgid "``limit``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:1442 +msgid "the default size of a page. It must be a positive integer" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:1444 +msgid "``groups_limit``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:1444 +msgid "when the list view is grouped, the default number of groups of a page. It must be a position integer" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:1448 +#: ../../content/developer/reference/addons/views.rst:2134 +msgid "``expand``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:1447 +msgid "when the list view is grouped, automatically open the first level of groups if set to true (default: false)" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:1450 +msgid "Possible children elements of the list view are:" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:1457 +msgid "displays a button in a list cell" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:1461 +#: ../../content/developer/reference/addons/views.rst:2115 +msgid "``icon``" +msgstr "" + +#: ../../content/developer/reference/addons/views.rst:1462 msgid "icon to use to display the button" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1437 +#: ../../content/developer/reference/addons/views.rst:1464 msgid "if there is no ``icon``, the button's text" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1438 +#: ../../content/developer/reference/addons/views.rst:1465 msgid "if there is an ``icon``, ``alt`` text for the icon" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1440 +#: ../../content/developer/reference/addons/views.rst:1467 msgid "type of button, indicates how it clicking it affects Odoo:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1449 +#: ../../content/developer/reference/addons/views.rst:1478 msgid "``object``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1443 +#: ../../content/developer/reference/addons/views.rst:1472 msgid "call a method on the list's model. The button's ``name`` is the method, which is called with the current row's record id and the current context." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1452 +#: ../../content/developer/reference/addons/views.rst:1481 msgid "load an execute an ``ir.actions``, the button's ``name`` is the database id of the action. The context is expanded with the list's model (as ``active_model``), the current row's record (``active_id``) and all the records currently loaded in the list (``active_ids``, may be just a subset of the database records matching the current search)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1459 -#: ../../content/developer/reference/addons/views.rst:1461 +#: ../../content/developer/reference/addons/views.rst:1488 +#: ../../content/developer/reference/addons/views.rst:1490 msgid "see ``type``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1463 +#: ../../content/developer/reference/addons/views.rst:1492 msgid "dynamic attributes based on record values." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1465 +#: ../../content/developer/reference/addons/views.rst:1494 msgid "A mapping of attributes to domains, domains are evaluated in the context of the current row's record, if ``True`` the corresponding attribute is set on the cell." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1469 +#: ../../content/developer/reference/addons/views.rst:1498 msgid "Possible attribute is ``invisible`` (hides the button)." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1480 +#: ../../content/developer/reference/addons/views.rst:1509 msgid "``states``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1471 +#: ../../content/developer/reference/addons/views.rst:1500 msgid "shorthand for ``invisible`` ``attrs``: a list of states, comma separated, requires that the model has a ``state`` field and that it is used in the view." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1475 +#: ../../content/developer/reference/addons/views.rst:1504 msgid "Makes the button ``invisible`` if the record is *not* in one of the listed states" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1480 +#: ../../content/developer/reference/addons/views.rst:1509 msgid "Using ``states`` in combination with ``attrs`` may lead to unexpected results as domains are combined with a logical AND." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1483 +#: ../../content/developer/reference/addons/views.rst:1512 msgid "merged into the view's context when performing the button's Odoo call" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1485 +#: ../../content/developer/reference/addons/views.rst:1514 msgid "declared but unused: help" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1488 +#: ../../content/developer/reference/addons/views.rst:1517 msgid "defines a column where the corresponding field should be displayed for each record. Can use the following attributes:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1492 +#: ../../content/developer/reference/addons/views.rst:1523 msgid "the name of the field to display in the current model. A given name can only be used once per view" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1495 +#: ../../content/developer/reference/addons/views.rst:1526 msgid "the title of the field's column (by default, uses the ``string`` of the model's field)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1499 -#: ../../content/developer/reference/addons/views.rst:1749 -msgid "``invisible``" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:1498 +#: ../../content/developer/reference/addons/views.rst:1529 msgid "fetches and stores the field, but doesn't display the column in the table. Necessary for fields which shouldn't be displayed but are used by e.g. ``@colors``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1502 +#: ../../content/developer/reference/addons/views.rst:1533 msgid "lists the groups which should be able to see the field" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1504 +#: ../../content/developer/reference/addons/views.rst:1535 msgid "alternate representations for a field's display. Possible list view values are (among others):" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1508 +#: ../../content/developer/reference/addons/views.rst:1541 msgid "displays ``float`` fields as a progress bar." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1510 +#: ../../content/developer/reference/addons/views.rst:1543 msgid "for ``sequence`` (or ``integer``) fields by which records are sorted, instead of displaying the field's value just displays a drag&drop icon to reorder records." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1516 +#: ../../content/developer/reference/addons/views.rst:1549 msgid "``sum``, ``avg``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1514 +#: ../../content/developer/reference/addons/views.rst:1547 msgid "displays the corresponding aggregate at the bottom of the column. The aggregation is only computed on *currently displayed* records. The aggregation operation must match the corresponding field's ``group_operator``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1519 +#: ../../content/developer/reference/addons/views.rst:1552 msgid "dynamic attributes based on record values. Only effects the current field, so e.g. ``invisible`` will hide the field but leave the same field of other records visible, it will not hide the column itself" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1527 +#: ../../content/developer/reference/addons/views.rst:1560 msgid "``width`` (for ``editable``)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1523 +#: ../../content/developer/reference/addons/views.rst:1556 msgid "when there is no data in the list, the width of a column can be forced by setting this attribute. The value can be an absolute width (e.g. '100px'), or a relative weight (e.g. '3', meaning that this column will be 3 times larger than the others). Note that when there are records in the list, we let the browser automatically adapt the column's widths according to their content, and this attribute is thus ignored." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1530 +#: ../../content/developer/reference/addons/views.rst:1563 msgid "allow changing the style of a cell's text based on the corresponding record's attributes." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1537 +#: ../../content/developer/reference/addons/views.rst:1570 msgid "if set to \"1\", the column header will remain empty. Also, the column won't be sortable." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1542 +#: ../../content/developer/reference/addons/views.rst:1575 msgid "if the list view is ``editable``, any field attribute from the :ref:`form view ` is also valid and will be used when setting up the inline form view." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1548 +#: ../../content/developer/reference/addons/views.rst:1581 msgid "In case of list sub-views (One2many/Many2many display in a form view), The attribute ``column_invisible`` can be useful to hide a column depending on the parent object." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1556 +#: ../../content/developer/reference/addons/views.rst:1589 msgid "When a list view is grouped, numeric fields are aggregated and displayed for each group. Also, if there are too many records in a group, a pager will appear on the right of the group row. For this reason, it is not a good practice to have a numeric field in the last column, when the list view is in a situation where it can be grouped (it is however fine for x2manys field in a form view: they cannot be grouped)." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1583 +#: ../../content/developer/reference/addons/views.rst:1618 msgid "``groupby``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1565 +#: ../../content/developer/reference/addons/views.rst:1598 msgid "defines custom headers (with buttons) for the current view when grouping records on many2one fields. It is also possible to add `field`, inside the `groupby` which can be used for modifiers. These fields thus belong on the many2one comodel. These extra fields will be fetched in batch." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1571 +#: ../../content/developer/reference/addons/views.rst:1606 msgid "the name of a many2one field (on the current model). Custom header will be displayed when grouping the view on this field name." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1583 +#: ../../content/developer/reference/addons/views.rst:1618 msgid "A special button (`type=\"edit\"`) can be defined to open the many2one form view." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1633 +#: ../../content/developer/reference/addons/views.rst:1674 msgid "``control``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1586 +#: ../../content/developer/reference/addons/views.rst:1621 msgid "defines custom controls for the current view." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1588 +#: ../../content/developer/reference/addons/views.rst:1623 msgid "This makes sense if the parent ``tree`` view is inside a One2many field." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1590 +#: ../../content/developer/reference/addons/views.rst:1625 msgid "Does not support any attribute, but can have children:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1593 +#: ../../content/developer/reference/addons/views.rst:1630 msgid "adds a button to create a new element on the current list." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1595 +#: ../../content/developer/reference/addons/views.rst:1634 msgid "If any ``create`` is defined, it will overwrite the default \"add a line\" button." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1598 +#: ../../content/developer/reference/addons/views.rst:1637 msgid "The following attributes are supported:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1601 -#: ../../content/developer/reference/addons/views.rst:1890 -msgid "``string`` (required)" -msgstr "" - -#: ../../content/developer/reference/addons/views.rst:1601 +#: ../../content/developer/reference/addons/views.rst:1642 msgid "The text displayed on the button." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1604 +#: ../../content/developer/reference/addons/views.rst:1645 msgid "This context will be merged into the existing context when retrieving the default value of the new record." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1607 +#: ../../content/developer/reference/addons/views.rst:1648 msgid "For example it can be used to override default values." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1610 +#: ../../content/developer/reference/addons/views.rst:1651 msgid "The following example will override the default \"add a line\" button by replacing it with 3 new buttons: \"Add a product\", \"Add a section\" and \"Add a note\"." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1614 +#: ../../content/developer/reference/addons/views.rst:1655 msgid "\"Add a product\" will set the field 'display_type' to its default value." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1616 +#: ../../content/developer/reference/addons/views.rst:1657 msgid "The two other buttons will set the field 'display_type' to be respectively 'line_section' and 'line_note'." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1635 +#: ../../content/developer/reference/addons/views.rst:1676 msgid "for historical reasons, it has its origin in tree-type views later repurposed to a more table/list-type display" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1647 +#: ../../content/developer/reference/addons/views.rst:1688 msgid "This view is able to display records on a map and the routes between them. The record are represented by pins. It also allows the visualization of fields from the model in a popup tied to the record's pin." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1651 +#: ../../content/developer/reference/addons/views.rst:1692 msgid "The model on which the view is applied should contains a res.partner many2one since the view relies on the res.partner's address and coordinates fields to localize the records." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1656 +#: ../../content/developer/reference/addons/views.rst:1697 msgid "Api" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1658 +#: ../../content/developer/reference/addons/views.rst:1699 msgid "The view uses location data platforms' api to fetch the tiles (the map's background), do the geoforwarding (converting addresses to a set of coordinates) and fetch the routes. The view implements two api, the default one, openstreet map is able to fetch `tiles`_ and do `geoforwarding`_. This api does not require a token. As soon as a valid `MapBox`_ token is provided in the general settings the view switches to the Mapbox api. This api is faster and allows the computation of routes. The token are available by `signing up`_ to MapBox" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1667 +#: ../../content/developer/reference/addons/views.rst:1708 msgid "The view's root element is ```` multiple attributes are allowed" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1669 +#: ../../content/developer/reference/addons/views.rst:1713 msgid "``res_partner``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1670 +#: ../../content/developer/reference/addons/views.rst:1714 msgid "Contains the res.partner many2one. If not provided the view will resort to create an empty map." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1672 +#: ../../content/developer/reference/addons/views.rst:1716 msgid "If a field is provided the view will override the model's default order. The field must be part of the model on which the view is applied not from res.partner" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1673 +#: ../../content/developer/reference/addons/views.rst:1717 msgid "``routing``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1674 +#: ../../content/developer/reference/addons/views.rst:1718 msgid "if ``true`` the routes between the records will be shown. The view still needs a valid MapBox token and at least two located records. (i.e the records has a res.partner many2one and the partner has a address or valid coordinates)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1675 +#: ../../content/developer/reference/addons/views.rst:1719 msgid "``hide_name``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1676 +#: ../../content/developer/reference/addons/views.rst:1720 msgid "if ``true`` hide a name from the marker's popup (default: false)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1678 +#: ../../content/developer/reference/addons/views.rst:1722 msgid "``hide_address``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1678 +#: ../../content/developer/reference/addons/views.rst:1722 msgid "if ``true`` hide a address from the marker's popup (default: false)" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1680 +#: ../../content/developer/reference/addons/views.rst:1724 msgid "The ```` element can contain multiple ```` elements. Each ```` element will be interpreted as a line in the marker's popup. The field's attributes are the following:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1683 +#: ../../content/developer/reference/addons/views.rst:1729 msgid "The field to display." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1685 +#: ../../content/developer/reference/addons/views.rst:1731 msgid "This string will be displayed before the field's content. It Can be used as a description." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1687 +#: ../../content/developer/reference/addons/views.rst:1733 msgid "The size of a page (default: 80). It must be a positive integer." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1689 +#: ../../content/developer/reference/addons/views.rst:1735 msgid "No attribute or element is mandatory but as stated above if no res.partner many2one is provided the view won't be able to locate records." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1696 +#: ../../content/developer/reference/addons/views.rst:1742 msgid "For example here is a map:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1701 +#: ../../content/developer/reference/addons/views.rst:1747 msgid "Pivot" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1703 +#: ../../content/developer/reference/addons/views.rst:1749 msgid "The pivot view is used to visualize aggregations as a `pivot table`_. Its root element is ```` which can take the following attributes:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1707 +#: ../../content/developer/reference/addons/views.rst:1755 msgid "Set to ``True`` to remove table cell's links to list view." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1708 +#: ../../content/developer/reference/addons/views.rst:1756 msgid "``display_quantity``" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1709 +#: ../../content/developer/reference/addons/views.rst:1757 msgid "Set to ``true`` to display the Quantity column by default." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1711 +#: ../../content/developer/reference/addons/views.rst:1759 msgid "The name of the measure and the order (asc or desc) to use as default order in the view." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1720 +#: ../../content/developer/reference/addons/views.rst:1768 msgid "The only allowed element within a pivot view is ``field`` which can have the following attributes:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1728 +#: ../../content/developer/reference/addons/views.rst:1778 msgid "the name that will be used to display the field in the pivot view, overrides the default python String attribute of the field." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1736 +#: ../../content/developer/reference/addons/views.rst:1788 msgid "groups by the specified field, each group gets its own row." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1738 +#: ../../content/developer/reference/addons/views.rst:1790 msgid "creates column-wise groups" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1757 +#: ../../content/developer/reference/addons/views.rst:1809 msgid "like the graph view, the pivot aggregates data on database content which means that non-stored function fields can not be used in pivot views" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1761 +#: ../../content/developer/reference/addons/views.rst:1813 msgid "In Pivot view a ``field`` can have a ``widget`` attribute to dictate its format. The widget should be a field formatter, of which the most interesting are ``date``, ``datetime``, ``float_time``, and ``monetary``." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1765 +#: ../../content/developer/reference/addons/views.rst:1817 msgid "For instance a timesheet pivot view could be defined as::" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1776 +#: ../../content/developer/reference/addons/views.rst:1828 msgid "QWeb" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1778 +#: ../../content/developer/reference/addons/views.rst:1830 msgid "QWeb views are standard :ref:`reference/qweb` templates inside a view's ``arch``. They don't have a specific root element. Because QWeb views don't have a specific root element, their type must be specified explicitly (it can not be inferred from the root element of the ``arch`` field)." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1783 +#: ../../content/developer/reference/addons/views.rst:1835 msgid "QWeb views have two use cases:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1785 +#: ../../content/developer/reference/addons/views.rst:1837 msgid "they can be used as frontend templates, in which case :ref:`reference/data/template` should be used as a shortcut." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1787 +#: ../../content/developer/reference/addons/views.rst:1839 msgid "they can be used as actual qweb views (opened inside an action), in which case they should be defined as regular view with an explicit ``type`` (it can not be inferred) and a model." msgstr "" -#: ../../content/developer/reference/addons/views.rst:1791 +#: ../../content/developer/reference/addons/views.rst:1843 msgid "The main additions of qweb-as-view to the basic qweb-as-template are:" msgstr "" -#: ../../content/developer/reference/addons/views.rst:1793 +#: ../../content/developer/reference/addons/views.rst:1845 msgid "qweb-as-view has a special case for a ``