diff --git a/locale/sources/administration.pot b/locale/sources/administration.pot index e4b101002..061af4c66 100644 --- a/locale/sources/administration.pot +++ b/locale/sources/administration.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 16.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-17 09:28+0000\n" +"POT-Creation-Date: 2022-12-23 09:13+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1008,7 +1008,7 @@ msgid "Instead of using the repository as described above, the 'deb' packages fo msgstr "" #: ../../content/administration/install/install.rst:186 -msgid "Odoo 16.0 'deb' package currently supports `Debian 11 (Bullseye)`_, `Ubuntu 22.04 (Jammy)`_ or above." +msgid "Odoo 16 'deb' package currently supports `Debian 11 (Bullseye)`_, `Ubuntu 22.04 (Jammy)`_ or above." msgstr "" #: ../../content/administration/install/install.rst:189 @@ -1040,7 +1040,7 @@ msgid "Instead of using the repository as described above, the 'rpm' packages fo msgstr "" #: ../../content/administration/install/install.rst:227 -msgid "Odoo 16.0 'rpm' package supports Fedora 36." +msgid "Odoo 16 'rpm' package supports Fedora 36." msgstr "" #: ../../content/administration/install/install.rst:229 @@ -3176,7 +3176,7 @@ msgstr "" #: ../../content/administration/odoo_sh/advanced/submodules.rst:9 #: ../../content/administration/odoo_sh/getting_started/branches.rst:7 #: ../../content/administration/odoo_sh/getting_started/builds.rst:9 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:7 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:6 #: ../../content/administration/odoo_sh/getting_started/online-editor.rst:9 #: ../../content/administration/odoo_sh/getting_started/settings.rst:7 #: ../../content/administration/odoo_sh/getting_started/status.rst:7 @@ -3194,7 +3194,7 @@ msgid "The base is an Ubuntu system, where all of Odoo's required dependencies, msgstr "" #: ../../content/administration/odoo_sh/advanced/containers.rst:14 -msgid "If your project requires additional Python dependencies, or more recent releases, you can define a :file:`requirements.txt` file in the root of your branches listing them. The platform will take care to install these dependencies in your containers. `The pip requirements specifiers `_ documentation can help you write a :file:`requirements.txt` file. To have a concrete example, check out the `requirements.txt file of Odoo `_." +msgid "If your project requires additional Python dependencies, or more recent releases, you can define a :file:`requirements.txt` file in the root of your branches listing them. The platform will take care to install these dependencies in your containers. `The pip requirements specifiers `_ documentation can help you write a :file:`requirements.txt` file. To have a concrete example, check out the `requirements.txt file of Odoo `_." msgstr "" #: ../../content/administration/odoo_sh/advanced/containers.rst:22 @@ -3488,8 +3488,8 @@ msgstr "" #: ../../content/administration/odoo_sh/advanced/submodules.rst:82 #: ../../content/administration/odoo_sh/advanced/submodules.rst:94 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:358 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:487 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:364 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:502 msgid "Replace" msgstr "" @@ -4524,15 +4524,15 @@ msgstr "" msgid "If you plan to make it your production, unlink your former database from the subscription, and register the newly imported database. Read the :doc:`database registration documentation <../../maintain/on_premise>` for instructions." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:4 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:3 msgid "Your first module" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:9 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:8 msgid "This chapter helps you to create your first Odoo module and deploy it in your Odoo.sh project." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:11 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:10 msgid "This tutorial requires :ref:`you created a project on Odoo.sh `, and you know your Github repository's URL." msgstr "" @@ -4703,7 +4703,7 @@ msgid "Stage the changes to be committed" msgstr "" #: ../../content/administration/odoo_sh/getting_started/first_module.rst:164 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:392 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:399 msgid "Commit your changes" msgstr "" @@ -4720,8 +4720,8 @@ msgid "The above command is explained in the section :ref:`Commit & Push your ch msgstr "" #: ../../content/administration/odoo_sh/getting_started/first_module.rst:186 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:380 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:406 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:387 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:413 msgid "Or, from your computer terminal:" msgstr "" @@ -4749,267 +4749,279 @@ msgstr "" msgid "If your Odoo.sh project is configured to install your module automatically, you will directly see it amongst the database apps. Otherwise, it will be available in the apps to install." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:222 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:223 msgid "You can then play around with your module, create new records and test your features and buttons." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:226 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:227 msgid "Test with the production data" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:228 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:229 msgid "You need to have a production database for this step. You can create it if you do not have it yet." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:230 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:231 msgid "Once you tested your module in a development build with the demo data and believe it is ready, you can test it with the production data using a staging branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:233 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:234 msgid "You can either:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:235 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:236 msgid "Make your development branch a staging branch, by drag and dropping it onto the *staging* section title." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:240 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:242 msgid "Merge it in an existing staging branch, by drag and dropping it onto the given staging branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:245 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:289 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:247 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:293 msgid "You can also use the :code:`git merge` command to merge your branches." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:247 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:249 msgid "This will create a new staging build, which will duplicate the production database and make it run using a server updated with your latest changes of your branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:253 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:297 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:255 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:301 msgid "Once the database ready, you can access it using the *Connect* button." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:258 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:300 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:260 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:304 msgid "Install your module" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:260 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:262 msgid "Your module will not be installed automatically, you have to install it from the apps menu. Indeed, the purpose of the staging build is to test the behavior of your changes as it would be on your production, and on your production you would not like your module to be installed automatically, but on demand." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:264 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:267 msgid "Your module may not appear directly in your apps to install either, you need to update your apps list first:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:266 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:270 msgid "Activate the :ref:`developer mode `" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:267 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:271 msgid "in the apps menu, click the *Update Apps List* button," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:268 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:272 msgid "in the dialog that appears, click the *Update* button." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:273 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:277 msgid "Your module will then appear in the list of available apps." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:279 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:283 msgid "Deploy in production" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:281 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:285 msgid "Once you tested your module in a staging branch with your production data, and believe it is ready for production, you can merge your branch in the production branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:284 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:288 msgid "Drag and drop your staging branch on the production branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:291 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:295 msgid "This will merge the latest changes of your staging branch in the production branch, and update your production server with these latest changes." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:302 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:306 msgid "Your module will not be installed automatically, you have to install it manually as explained in the :ref:`above section about installing your module in staging databases `." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:308 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:312 msgid "Add a change" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:310 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:314 msgid "This section explains how to add a change in your module by adding a new field in a model and deploy it." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:314 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:319 msgid "From the Odoo.sh editor," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:313 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:318 msgid "browse to your module folder *~/src/user/my_module*," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:314 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:319 msgid "then, open the file *models/models.py*." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:319 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:325 msgid "Or, from your computer," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:317 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:322 msgid "use the file browser of your choice to browse to your module folder *~/src/odoo-addons/my_module*," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:318 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:324 msgid "then, open the file *models/models.py* using the editor of your choice, such as *Atom*, *Sublime Text*, *PyCharm*, *vim*, ..." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:321 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:327 msgid "Then, after the description field" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:327 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:333 msgid "Add a datetime field" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:333 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:339 msgid "Then, open the file *views/views.xml*." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:335 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:462 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:341 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:477 msgid "After" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:341 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:439 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:456 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:468 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:347 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:454 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:471 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:483 msgid "Add" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:347 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:353 msgid "These changes alter the database structure by adding a column in a table, and modify a view stored in database." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:350 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:356 msgid "In order to be applied in existing databases, such as your production database, these changes requires the module to be updated." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:353 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:359 msgid "If you would like the update to be performed automatically by the Odoo.sh platform when you push your changes, increase your module version in its manifest." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:356 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:362 msgid "Open the module manifest *__manifest__.py*." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:364 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:493 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:370 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:508 msgid "with" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:370 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:376 msgid "The platform will detect the change of version and trigger the update of the module upon the new revision deployment." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:372 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:379 msgid "Browse to your Git folder." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:374 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:381 msgid "Then, from an Odoo.sh terminal:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:386 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:393 msgid "Then, stage your changes to be committed" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:398 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:405 msgid "Push your changes:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:400 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:407 msgid "From an Odoo.sh terminal:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:412 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:419 msgid "The platform will then create a new build for the branch *feature-1*." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:417 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:424 msgid "Once you tested your changes, you can merge your changes in the production branch, for instance by drag-and-dropping the branch on the production branch in the Odoo.sh interface. As you increased the module version in the manifest, the platform will update the module automatically and your new field will be directly available. Otherwise you can manually update the module within the apps list." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:423 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:430 msgid "Use an external Python library" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:425 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:432 msgid "If you would like to use an external Python library which is not installed by default, you can define a *requirements.txt* file listing the external libraries your modules depends on." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:428 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:436 +msgid "It is not possible to install or upgrade system packages on an Odoo.sh database (e.g., apt packages). However, under specific conditions, packages can be considered for installation. This also applies to **Python modules** requiring system packages for their compilation, and **third-party Odoo modules**." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:440 +msgid "**PostgreSQL extensions** are not supported on Odoo.sh." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:441 +msgid "For more information, consult our `FAQ `_." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:443 msgid "The platform will use this file to automatically install the Python libraries your project needs." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:430 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:445 msgid "The feature is explained in this section by using the `Unidecode library `_ in your module." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:433 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:448 msgid "Create a file *requirements.txt* in the root folder of your repository" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:435 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:450 msgid "From the Odoo.sh editor, create and open the file ~/src/user/requirements.txt." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:437 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:452 msgid "Or, from your computer, create and open the file ~/src/odoo-addons/requirements.txt." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:445 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:460 msgid "Then use the library in your module, for instance to remove accents from characters in the name field of your model." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:448 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:463 msgid "Open the file *models/models.py*." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:450 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:465 msgid "Before" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:483 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:498 msgid "Adding a Python dependency requires a module version increase for the platform to install it." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:485 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:500 msgid "Edit the module manifest *__manifest__.py*" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:499 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:514 msgid "Stage and commit your changes:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:507 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:522 msgid "Then, push your changes:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:509 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:524 msgid "In an Odoo.sh terminal:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:515 +#: ../../content/administration/odoo_sh/getting_started/first_module.rst:530 msgid "In your computer terminal:" msgstr "" @@ -6045,7 +6057,7 @@ msgid "Selecting My Databases under my profile" msgstr "" #: ../../content/administration/upgrade/odoo_online.rst:14 -msgid "Click on the action settings icon next to your main database and select the *Upgrade* option." +msgid "Click on the up arrow button next to your main database name to proceed to the test upgrade." msgstr "" #: ../../content/administration/upgrade/odoo_online.rst:0 @@ -6053,18 +6065,18 @@ msgid "Selecting the action settings icon" msgstr "" #: ../../content/administration/upgrade/odoo_online.rst:19 -msgid "In the pop-up message that will appear, select Test Upgrade." +msgid "In the pop-up message that appears, select the target version and then :guilabel:`Test` as purpose." msgstr "" -#: ../../content/administration/upgrade/odoo_online.rst:0 -msgid "Selecting test upgrade" +#: ../../content/administration/upgrade/odoo_online.rst:23 +msgid "The :guilabel:`Production` purpose doesn't appear if you didn't test your upgraded database at least once." msgstr "" -#: ../../content/administration/upgrade/odoo_online.rst:24 +#: ../../content/administration/upgrade/odoo_online.rst:26 msgid "This triggers the automated upgrade process. A confirmation email is then sent to you with the the link to the upgraded database or to provide information if the upgrade failed." msgstr "" -#: ../../content/administration/upgrade/odoo_online.rst:28 +#: ../../content/administration/upgrade/odoo_online.rst:30 msgid "You can also see and access your test database from your *My Databases* page." msgstr "" diff --git a/locale/sources/contributing.pot b/locale/sources/contributing.pot index e9db2c52d..f91333c90 100644 --- a/locale/sources/contributing.pot +++ b/locale/sources/contributing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 16.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-17 09:28+0000\n" +"POT-Creation-Date: 2022-12-23 09:13+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,20 +16,141 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../content/contributing.rst:7 +#: ../../content/contributing.rst:6 msgid "Contributing" msgstr "" -#: ../../content/contributing.rst:9 -msgid "First, **thank you** for landing here and helping us improve Odoo!" +#: ../../content/contributing.rst:8 +msgid "First off, **thank you** for landing here and considering contributing to Odoo!" msgstr "" -#: ../../content/contributing.rst:11 -msgid "This documentation section is intended as a guide to making contributions for first-timers and veterans." +#: ../../content/contributing.rst:10 +msgid "This documentation serves as a guide for first-timer and veteran contributors. As an open-core project, Odoo accepts contributions from everyone, Odoo employees and members of the Odoo community alike. The Odoo community comprises users, developers, and other interested parties who contribute their time and expertise." 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 `_." +#: ../../content/contributing.rst:15 +msgid "Depending on your skill set and interest, there are many ways to contribute to Odoo. The table below lists the most important of them." +msgstr "" + +#: ../../content/contributing.rst:23 +msgid "Contribution" +msgstr "" + +#: ../../content/contributing.rst:24 +msgid "Description" +msgstr "" + +#: ../../content/contributing.rst:25 +msgid "Resources" +msgstr "" + +#: ../../content/contributing.rst:26 +msgid "Target Audience" +msgstr "" + +#: ../../content/contributing.rst:27 +msgid "Join the community" +msgstr "" + +#: ../../content/contributing.rst:28 +msgid "Participate in discussions on the forums, help answer questions, and assist other members of the Odoo community." +msgstr "" + +#: ../../content/contributing.rst:30 +msgid "`Odoo forums `_" +msgstr "" + +#: ../../content/contributing.rst:31 +msgid "Anyone interested in Odoo" +msgstr "" + +#: ../../content/contributing.rst:32 +msgid "Submit bug reports" +msgstr "" + +#: ../../content/contributing.rst:33 +msgid "Help improve the stability of Odoo by reporting the bugs that you discover in :doc:`supported versions ` directly to Odoo support. Make sure to include as many details (version, environment, test scenario...) as possible. If you don't have the Odoo Enterprise license required for contacting the support, open a new issue on the GitHub repository of Odoo." +msgstr "" + +#: ../../content/contributing.rst:38 +msgid "`Odoo support `_" +msgstr "" + +#: ../../content/contributing.rst:39 +msgid "`Issue tracker on GitHub `_" +msgstr "" + +#: ../../content/contributing.rst:40 +msgid "Users of Odoo" +msgstr "" + +#: ../../content/contributing.rst:41 +msgid "Translate Odoo" +msgstr "" + +#: ../../content/contributing.rst:42 +msgid "Translate the user interface and documentation of Odoo into different languages." +msgstr "" + +#: ../../content/contributing.rst:43 +msgid "`Odoo project on Transifex `_" +msgstr "" + +#: ../../content/contributing.rst:44 +msgid "Anyone fluent in multiple languages" +msgstr "" + +#: ../../content/contributing.rst:45 +msgid "Contribute to the codebase" +msgstr "" + +#: ../../content/contributing.rst:46 +msgid "Submit pull requests to the Odoo GitHub repositories to fix bugs, add new features, or improve the performance and reliability of the product. You can also review and comment on pull requests from other contributors. By contributing to the codebase, you can make a direct and lasting impact on the quality and features of Odoo." +msgstr "" + +#: ../../content/contributing.rst:50 +msgid ":doc:`Guide: Contributing to the codebase `" +msgstr "" + +#: ../../content/contributing.rst:51 +msgid ":doc:`Developer tutorials `" +msgstr "" + +#: ../../content/contributing.rst:52 +#: ../../content/contributing.rst:65 +msgid "Developers with experience in Python and web development" +msgstr "" + +#: ../../content/contributing.rst:53 +msgid "Contribute to the documentation" +msgstr "" + +#: ../../content/contributing.rst:54 +msgid "Submit corrections and improvements to the Odoo documentation. The product evolves fast, and it can be challenging to consistently reflect these changes in the documentation. By updating the documentation, you can help many users find their way in Odoo." +msgstr "" + +#: ../../content/contributing.rst:57 +msgid ":doc:`Guide: Contributing to the documentation `" +msgstr "" + +#: ../../content/contributing.rst:58 +msgid "Anyone interested in improving the Odoo documentation" +msgstr "" + +#: ../../content/contributing.rst:59 +msgid "Create custom modules" +msgstr "" + +#: ../../content/contributing.rst:60 +msgid "Develop new modules to extend the functionality of Odoo. Custom modules can be made available for free or paid on the Odoo App Store or on any other Odoo modules library. By creating custom modules and making them available to others, you can help grow the Odoo ecosystem and provide additional value to users of the platform." +msgstr "" + +#: ../../content/contributing.rst:64 +msgid "`Odoo Apps Store `_" +msgstr "" + +#: ../../content/contributing.rst:68 +msgid "It is mainly Odoo employees who develop new features for the codebase and write new content for the documentation. Be sure to discuss any idea for a new feature or page with the Odoo team so they can give you the green light before you begin working on it. Some features may already be in development on their side, and only approved features can be merged." msgstr "" #: ../../content/contributing/development.rst:6 @@ -273,7 +394,7 @@ msgid "New primary views do not require the inherit suffix as those are new reco msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:393 -#: ../../content/contributing/documentation.rst:204 +#: ../../content/contributing/documentation.rst:223 #: ../../content/contributing/documentation/rst_cheat_sheet.rst:879 #: ../../content/contributing/documentation/rst_cheat_sheet.rst:881 #: ../../content/contributing/documentation/rst_cheat_sheet.rst:897 @@ -1005,7 +1126,7 @@ msgid "Double-check your :abbr:`PR (Pull Request)` and, when ready, click again msgstr "" #: ../../content/contributing/documentation.rst:114 -#: ../../content/contributing/documentation.rst:396 +#: ../../content/contributing/documentation.rst:417 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 "" @@ -1038,10 +1159,10 @@ msgid "Verify that `the installation folder of Git is included in your system's msgstr "" #: ../../content/contributing/documentation.rst:144 -#: ../../content/contributing/documentation.rst:169 -#: ../../content/contributing/documentation.rst:317 +#: ../../content/contributing/documentation.rst:172 #: ../../content/contributing/documentation.rst:337 -#: ../../content/contributing/documentation.rst:368 +#: ../../content/contributing/documentation.rst:357 +#: ../../content/contributing/documentation.rst:388 msgid "Execute the following commands in a terminal:" msgstr "" @@ -1054,190 +1175,203 @@ msgid "As stated earlier, our documentation (in all its versions) is maintained msgstr "" #: ../../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." +msgid "Prior to submitting a modification, you need to make a copy of the sources and download that copy on your machine. Git's CLI (:dfn:`command-line interface`) allows downloading the sources by passing an URL to its :command:`git clone` command. You must choose the protocol of the URL depending on what you want to do with the sources: choose HTTPS if you intend to only build the documentation locally; choose SSH if you plan on proposing content changes." msgstr "" -#: ../../content/contributing/documentation.rst:164 -msgid "Go to `github.com/odoo/documentation `_ and click on the **Fork** button in the top right corner." +#: ../../content/contributing/documentation.rst:167 +msgid "Go to `github.com/odoo/documentation `_ and click on the **Fork** button in the top right corner. If you work at Odoo, skip this step." msgstr "" -#: ../../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." +#: ../../content/contributing/documentation.rst:176 +msgid "Clone with HTTPS" msgstr "" -#: ../../content/contributing/documentation.rst:181 +#: ../../content/contributing/documentation.rst:183 +#: ../../content/contributing/documentation.rst:197 +msgid "Replace `` with your GitHub username. If you work at Odoo, replace it with `odoo`." +msgstr "" + +#: ../../content/contributing/documentation.rst:186 +msgid "Clone with SSH" +msgstr "" + +#: ../../content/contributing/documentation.rst:189 +msgid "Make sure that you `registered your SSH key on GitHub `_." +msgstr "" + +#: ../../content/contributing/documentation.rst:200 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:185 +#: ../../content/contributing/documentation.rst:204 msgid "Windows:" msgstr "" -#: ../../content/contributing/documentation.rst:193 +#: ../../content/contributing/documentation.rst:212 msgid "Linux or Mac OS:" msgstr "" -#: ../../content/contributing/documentation.rst:206 +#: ../../content/contributing/documentation.rst:225 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:211 +#: ../../content/contributing/documentation.rst:230 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:216 +#: ../../content/contributing/documentation.rst:235 msgid "Python comes with its own package manager: `pip `_. It allows installing Python dependencies in a single command." msgstr "" -#: ../../content/contributing/documentation.rst:220 +#: ../../content/contributing/documentation.rst:239 msgid "Download and install the recommended release (`see README file `_) of **Python 3** on your machine." msgstr "" -#: ../../content/contributing/documentation.rst:222 +#: ../../content/contributing/documentation.rst:242 msgid "Make sure to have **pip** installed on your machine (on Windows, you can install pip alongside Python)." msgstr "" -#: ../../content/contributing/documentation.rst:224 +#: ../../content/contributing/documentation.rst:244 msgid "Execute the following commands in a terminal to verify that both installations finished successfully:" msgstr "" -#: ../../content/contributing/documentation.rst:232 +#: ../../content/contributing/documentation.rst:252 msgid "Execute the following commands in a terminal to install the Python dependencies of the documentation:" msgstr "" -#: ../../content/contributing/documentation.rst:241 +#: ../../content/contributing/documentation.rst:261 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:247 +#: ../../content/contributing/documentation.rst:267 msgid "Make" msgstr "" -#: ../../content/contributing/documentation.rst:249 +#: ../../content/contributing/documentation.rst:269 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:253 +#: ../../content/contributing/documentation.rst:273 msgid "Download and install **Make** on your machine." msgstr "" -#: ../../content/contributing/documentation.rst:254 +#: ../../content/contributing/documentation.rst:274 msgid "Verify that `the installation folder of Make is included in your system's PATH variable `_." msgstr "" -#: ../../content/contributing/documentation.rst:260 +#: ../../content/contributing/documentation.rst:280 msgid "pngquant" msgstr "" -#: ../../content/contributing/documentation.rst:262 +#: ../../content/contributing/documentation.rst:282 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:265 +#: ../../content/contributing/documentation.rst:285 msgid "Download and install **pngquant** on your machine." msgstr "" -#: ../../content/contributing/documentation.rst:266 +#: ../../content/contributing/documentation.rst:286 msgid "Verify that `the installation folder of pngquant is included in your system's PATH variable `_." msgstr "" -#: ../../content/contributing/documentation.rst:272 +#: ../../content/contributing/documentation.rst:292 msgid "Prepare your version" msgstr "" -#: ../../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``." +#: ../../content/contributing/documentation.rst:294 +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 16.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 16.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 ``16.0-my_contribution``." msgstr "" -#: ../../content/contributing/documentation.rst:282 +#: ../../content/contributing/documentation.rst:302 msgid "Execute the following commands in a terminal to..." msgstr "" -#: ../../content/contributing/documentation.rst:284 +#: ../../content/contributing/documentation.rst:304 msgid "Navigate to the documentation folder:" msgstr "" -#: ../../content/contributing/documentation.rst:290 -msgid "Switch to the version 13.0:" -msgstr "" - -#: ../../content/contributing/documentation.rst:296 -msgid "Create your own branch which will be a copy of 13.0:" -msgstr "" - -#: ../../content/contributing/documentation.rst:305 -msgid "Perform your changes" -msgstr "" - -#: ../../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:313 -msgid "If your changes include the addition of a new image, for instance :file:`my-image.png`, proceed as follows:" +#: ../../content/contributing/documentation.rst:310 +msgid "Switch to the version 16.0:" msgstr "" #: ../../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`." +msgid "Create your own branch which will be a copy of 16.0:" msgstr "" #: ../../content/contributing/documentation.rst:325 -msgid "Rename :file:`my-image-fs8.png` to :file:`my-image.png`." +msgid "Perform your changes" msgstr "" -#: ../../content/contributing/documentation.rst:326 -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)." +#: ../../content/contributing/documentation.rst:327 +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:333 -msgid "Preview your changes" +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:335 -msgid "To preview your changes in a generated documentation, proceed as follows:" +#: ../../content/contributing/documentation.rst:336 +msgid "Make sure that the image is in ``.png`` format." +msgstr "" + +#: ../../content/contributing/documentation.rst:344 +msgid "Delete :file:`my-image.png`." +msgstr "" + +#: ../../content/contributing/documentation.rst:345 +msgid "Rename :file:`my-image-fs8.png` to :file:`my-image.png`." msgstr "" #: ../../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:349 -msgid "Fix any error or warning shown in the logs of the build." -msgstr "" - -#: ../../content/contributing/documentation.rst:350 -msgid "Open the file :file:`documentation/_build/html/index.html` with your default web browser." +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:353 +msgid "Preview your changes" +msgstr "" + +#: ../../content/contributing/documentation.rst:355 +msgid "To preview your changes in a generated documentation, proceed as follows:" +msgstr "" + +#: ../../content/contributing/documentation.rst:366 +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:369 +msgid "Fix any error or warning shown in the logs of the build." +msgstr "" + +#: ../../content/contributing/documentation.rst:370 +msgid "Open the file :file:`documentation/_build/html/index.html` with your default web browser." +msgstr "" + +#: ../../content/contributing/documentation.rst:373 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:359 +#: ../../content/contributing/documentation.rst:379 msgid "Submit your changes" msgstr "" -#: ../../content/contributing/documentation.rst:362 +#: ../../content/contributing/documentation.rst:382 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:376 +#: ../../content/contributing/documentation.rst:396 msgid "Go to `github.com/odoo/documentation/pulls `_ and click on the **New pull request** button." msgstr "" -#: ../../content/contributing/documentation.rst:381 +#: ../../content/contributing/documentation.rst:401 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: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**)." +#: ../../content/contributing/documentation.rst:406 +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 **16.0**)." msgstr "" -#: ../../content/contributing/documentation.rst:391 +#: ../../content/contributing/documentation.rst:412 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 "" @@ -2477,11 +2611,11 @@ msgid "Absolute:" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:39 -msgid "``https://odoo.com/documentation/master/applications/sales/sales/products_prices/prices.html``" +msgid "``https://odoo.com/documentation/16.0/applications/sales/sales/products_prices/prices.html``" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:40 -msgid "``https://odoo.com/documentation/master/applications/sales/sales/products_prices/products/variants.html``" +msgid "``https://odoo.com/documentation/16.0/applications/sales/sales/products_prices/products/variants.html``" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:42 diff --git a/locale/sources/developer.pot b/locale/sources/developer.pot index ef4e0f0a5..d70187aef 100644 --- a/locale/sources/developer.pot +++ b/locale/sources/developer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 16.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-17 09:28+0000\n" +"POT-Creation-Date: 2022-12-23 09:13+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -27,7 +27,7 @@ msgstr "" #: ../../content/developer/api.rst:5 #: ../../content/developer/reference/backend/http.rst:52 #: ../../content/developer/reference/backend/orm.rst:54 -#: ../../content/developer/reference/backend/views.rst:2009 +#: ../../content/developer/reference/backend/views.rst:2011 #: ../../content/developer/reference/frontend/hooks.rst:85 #: ../../content/developer/reference/frontend/hooks.rst:120 #: ../../content/developer/reference/frontend/hooks.rst:168 @@ -387,12 +387,12 @@ msgstr "" #: ../../content/developer/reference/backend/actions.rst:416 #: ../../content/developer/reference/backend/data.rst:221 #: ../../content/developer/reference/backend/views.rst:1391 -#: ../../content/developer/reference/backend/views.rst:1799 -#: ../../content/developer/reference/backend/views.rst:1835 -#: ../../content/developer/reference/backend/views.rst:1919 -#: ../../content/developer/reference/backend/views.rst:2046 -#: ../../content/developer/reference/backend/views.rst:2215 -#: ../../content/developer/reference/backend/views.rst:2356 +#: ../../content/developer/reference/backend/views.rst:1801 +#: ../../content/developer/reference/backend/views.rst:1837 +#: ../../content/developer/reference/backend/views.rst:1921 +#: ../../content/developer/reference/backend/views.rst:2048 +#: ../../content/developer/reference/backend/views.rst:2217 +#: ../../content/developer/reference/backend/views.rst:2358 #: ../../content/developer/reference/frontend/services.rst:872 msgid "``name``" msgstr "" @@ -402,7 +402,7 @@ msgid "a human-readable description of the model" msgstr "" #: ../../content/developer/api/external_api.rst:866 -#: ../../content/developer/reference/backend/views.rst:2169 +#: ../../content/developer/reference/backend/views.rst:2171 msgid "``model``" msgstr "" @@ -531,10 +531,10 @@ msgstr "" #: ../../content/developer/reference/backend/data.rst:226 #: ../../content/developer/reference/backend/data.rst:250 #: ../../content/developer/reference/backend/views.rst:910 -#: ../../content/developer/reference/backend/views.rst:1844 -#: ../../content/developer/reference/backend/views.rst:2247 -#: ../../content/developer/reference/backend/views.rst:2362 -#: ../../content/developer/reference/backend/views.rst:2426 +#: ../../content/developer/reference/backend/views.rst:1846 +#: ../../content/developer/reference/backend/views.rst:2249 +#: ../../content/developer/reference/backend/views.rst:2364 +#: ../../content/developer/reference/backend/views.rst:2428 msgid "``groups``" msgstr "" @@ -613,7 +613,7 @@ 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 +#: ../../content/developer/howtos/themes.rst:955 #: ../../content/developer/reference/frontend/assets.rst:301 #: ../../content/developer/reference/frontend/framework_overview.rst:263 #: ../../content/developer/reference/frontend/hooks.rst:45 @@ -1463,6 +1463,7 @@ msgstr "" #: ../../content/developer/api/iap.rst:411 #: ../../content/developer/api/iap.rst:514 #: ../../content/developer/howtos/company.rst:229 +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:51 #: ../../content/developer/howtos/translations.rst:21 #: ../../content/developer/howtos/web.rst:137 #: ../../content/developer/howtos/web.rst:1878 @@ -1486,7 +1487,7 @@ msgstr "" #: ../../content/developer/reference/backend/views.rst:1584 #: ../../content/developer/reference/backend/views.rst:1679 #: ../../content/developer/reference/backend/views.rst:1697 -#: ../../content/developer/reference/backend/views.rst:1826 +#: ../../content/developer/reference/backend/views.rst:1828 #: ../../content/developer/reference/frontend/qweb.rst:413 #: ../../content/developer/reference/frontend/qweb.rst:414 #: ../../content/developer/reference/frontend/qweb.rst:476 @@ -2317,791 +2318,795 @@ msgid "shows help text with all available options" msgstr "" #: ../../content/developer/cli.rst:52 -msgid "shows Odoo version e.g. \"Odoo Server 13.0\"" +msgid "shows Odoo version e.g. \"Odoo Server 16.0\"" msgstr "" -#: ../../content/developer/cli.rst:57 +#: ../../content/developer/cli.rst:54 +msgid "You can enable auto-completion in your shell by running" +msgstr "" + +#: ../../content/developer/cli.rst:65 msgid "Running the server" msgstr "" -#: ../../content/developer/cli.rst:63 +#: ../../content/developer/cli.rst:71 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:67 +#: ../../content/developer/cli.rst:75 msgid "For advanced database options, take a look :ref:`below `." msgstr "" -#: ../../content/developer/cli.rst:71 +#: ../../content/developer/cli.rst:79 msgid "comma-separated list of modules to install before running the server (requires :option:`-d`)." msgstr "" -#: ../../content/developer/cli.rst:76 +#: ../../content/developer/cli.rst:84 msgid "comma-separated list of modules to update before running the server. Use ``all`` for all modules. (requires :option:`-d`)." msgstr "" -#: ../../content/developer/cli.rst:81 +#: ../../content/developer/cli.rst:89 msgid "comma-separated list of directories in which modules are stored. These directories are scanned for modules." msgstr "" -#: ../../content/developer/cli.rst:88 +#: ../../content/developer/cli.rst:96 msgid "specify an additional upgrade path." msgstr "" -#: ../../content/developer/cli.rst:92 +#: ../../content/developer/cli.rst:100 msgid "list of server-wide modules to load. Those modules are supposed to provide features not necessarily tied to a particular database. This is in contrast to modules that are always bound to a specific database when they are installed (i.e. the majority of Odoo addons). Default is ``base,web``." msgstr "" -#: ../../content/developer/cli.rst:99 +#: ../../content/developer/cli.rst:107 msgid "path to an alternate :ref:`configuration file `. If not defined, Odoo checks ``ODOO_RC`` environmental variable and default location :file:`{$HOME}/.odoorc`. See configuration file section :ref:`below `." msgstr "" -#: ../../content/developer/cli.rst:106 +#: ../../content/developer/cli.rst:114 msgid "directory path where to store Odoo data (eg. filestore, sessions). If not specified, Odoo will fallback to a predefined path. On Unix systems its one defined in ``$XDG_DATA_HOME`` environmental variable or :file:`~/.local/share/Odoo` or :file:`/var/lib/Odoo`." msgstr "" -#: ../../content/developer/cli.rst:114 +#: ../../content/developer/cli.rst:122 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:120 +#: ../../content/developer/cli.rst:128 msgid "disables demo data loading for modules installed comma-separated, use ``all`` for all modules. Requires :option:`-d` and :option:`-i`." msgstr "" -#: ../../content/developer/cli.rst:126 +#: ../../content/developer/cli.rst:134 msgid "path to a file where the server pid will be stored" msgstr "" -#: ../../content/developer/cli.rst:130 +#: ../../content/developer/cli.rst:138 msgid "stops the server after its initialization." msgstr "" -#: ../../content/developer/cli.rst:134 +#: ../../content/developer/cli.rst:142 msgid "Absolute path to the GeoIP database file." msgstr "" -#: ../../content/developer/cli.rst:140 +#: ../../content/developer/cli.rst:148 msgid "Testing Configuration" msgstr "" -#: ../../content/developer/cli.rst:144 +#: ../../content/developer/cli.rst:152 msgid "runs tests after module installation" msgstr "" -#: ../../content/developer/cli.rst:148 +#: ../../content/developer/cli.rst:156 msgid "runs a python test file" msgstr "" -#: ../../content/developer/cli.rst:152 +#: ../../content/developer/cli.rst:160 msgid "Comma-separated list of specs to filter which tests to execute. Enable unit tests if set." msgstr "" -#: ../../content/developer/cli.rst:154 +#: ../../content/developer/cli.rst:162 msgid "Example: `--test-tags :TestClass.test_func,/test_module,external`" msgstr "" -#: ../../content/developer/cli.rst:156 +#: ../../content/developer/cli.rst:164 msgid "The `-` specifies if we want to include or exclude tests matching this spec." msgstr "" -#: ../../content/developer/cli.rst:157 +#: ../../content/developer/cli.rst:165 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:160 +#: ../../content/developer/cli.rst:168 msgid "`*` will match all tags." msgstr "" -#: ../../content/developer/cli.rst:161 +#: ../../content/developer/cli.rst:169 msgid "If tag is omitted on include mode, its value is `standard`." msgstr "" -#: ../../content/developer/cli.rst:162 +#: ../../content/developer/cli.rst:170 msgid "If tag is omitted on exclude mode, its value is `*`." msgstr "" -#: ../../content/developer/cli.rst:163 +#: ../../content/developer/cli.rst:171 msgid "The module, class, and method will respectively match the module name, test class name and test method name." msgstr "" -#: ../../content/developer/cli.rst:165 +#: ../../content/developer/cli.rst:173 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:173 +#: ../../content/developer/cli.rst:181 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:178 +#: ../../content/developer/cli.rst:186 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:185 +#: ../../content/developer/cli.rst:193 msgid "Database" msgstr "" -#: ../../content/developer/cli.rst:189 +#: ../../content/developer/cli.rst:197 msgid "database username, used to connect to PostgreSQL." msgstr "" -#: ../../content/developer/cli.rst:193 +#: ../../content/developer/cli.rst:201 msgid "database password, if using `password authentication`_." msgstr "" -#: ../../content/developer/cli.rst:197 +#: ../../content/developer/cli.rst:205 msgid "host for the database server" msgstr "" -#: ../../content/developer/cli.rst:199 +#: ../../content/developer/cli.rst:207 msgid "``localhost`` on Windows" msgstr "" -#: ../../content/developer/cli.rst:200 +#: ../../content/developer/cli.rst:208 msgid "UNIX socket otherwise" msgstr "" -#: ../../content/developer/cli.rst:204 +#: ../../content/developer/cli.rst:212 msgid "port the database listens on, defaults to 5432" msgstr "" -#: ../../content/developer/cli.rst:208 +#: ../../content/developer/cli.rst:216 msgid "hides databases that do not match ````. The filter is a `regular expression`_, with the additions that:" msgstr "" -#: ../../content/developer/cli.rst:211 +#: ../../content/developer/cli.rst:219 msgid "``%h`` is replaced by the whole hostname the request is made on." msgstr "" -#: ../../content/developer/cli.rst:212 +#: ../../content/developer/cli.rst:220 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:216 +#: ../../content/developer/cli.rst:224 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:220 +#: ../../content/developer/cli.rst:228 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:224 +#: ../../content/developer/cli.rst:232 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:232 +#: ../../content/developer/cli.rst:240 msgid "Restrict access to databases whose name starts with 11" msgstr "" -#: ../../content/developer/cli.rst:238 +#: ../../content/developer/cli.rst:246 msgid "Restrict access to only two databases, 11firstdatabase and 11seconddatabase" msgstr "" -#: ../../content/developer/cli.rst:244 +#: ../../content/developer/cli.rst:252 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:253 +#: ../../content/developer/cli.rst:261 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:260 +#: ../../content/developer/cli.rst:268 msgid "when creating new databases from the database-management screens, use the specified `template database`_. Defaults to ``template0``." msgstr "" -#: ../../content/developer/cli.rst:265 +#: ../../content/developer/cli.rst:273 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:271 +#: ../../content/developer/cli.rst:279 msgid "Suppresses the ability to list databases available on the system" msgstr "" -#: ../../content/developer/cli.rst:275 +#: ../../content/developer/cli.rst:283 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:282 +#: ../../content/developer/cli.rst:290 msgid "Use the unaccent function provided by the database when available." msgstr "" -#: ../../content/developer/cli.rst:287 +#: ../../content/developer/cli.rst:295 msgid "Emails" msgstr "" -#: ../../content/developer/cli.rst:291 +#: ../../content/developer/cli.rst:299 msgid "Email address used as when Odoo needs to send mails" msgstr "" -#: ../../content/developer/cli.rst:295 +#: ../../content/developer/cli.rst:303 msgid "Define which email address the SMTP configuration will apply to. The field can be a domain name or an entire email address, or it can remain empty. If the sender's email address does not match this set filter, then the email will be encapsulated using a combination of the two system parameters: ``mail.default.from`` and ``mail.catchall.domain``. For example, \"Admin\" => \"Admin\" ." msgstr "" -#: ../../content/developer/cli.rst:303 +#: ../../content/developer/cli.rst:311 msgid "Address of the SMTP server to connect to in order to send mails" msgstr "" -#: ../../content/developer/cli.rst:309 +#: ../../content/developer/cli.rst:317 msgid "If set, odoo should use SSL/STARTSSL SMTP connections" msgstr "" -#: ../../content/developer/cli.rst:313 +#: ../../content/developer/cli.rst:321 msgid "Username to connect to the SMTP server" msgstr "" -#: ../../content/developer/cli.rst:317 +#: ../../content/developer/cli.rst:325 msgid "Password to connect to the SMTP server" msgstr "" -#: ../../content/developer/cli.rst:321 +#: ../../content/developer/cli.rst:329 msgid "An SSL certificate is to be used for authentication. If set, then `smtp-ssl-private-key` is required." msgstr "" -#: ../../content/developer/cli.rst:326 +#: ../../content/developer/cli.rst:334 msgid "An SSL private key is used for authentication. If set, then `smtp-ssl-certificate` is required." msgstr "" -#: ../../content/developer/cli.rst:331 +#: ../../content/developer/cli.rst:339 msgid "Internationalisation" msgstr "" -#: ../../content/developer/cli.rst:333 +#: ../../content/developer/cli.rst:341 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:339 +#: ../../content/developer/cli.rst:347 msgid "specifies the languages (separated by commas) for the translations you want to be loaded" msgstr "" -#: ../../content/developer/cli.rst:344 +#: ../../content/developer/cli.rst:352 msgid "specify the language of the translation file. Use it with --i18n-export or --i18n-import" msgstr "" -#: ../../content/developer/cli.rst:349 +#: ../../content/developer/cli.rst:357 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:354 +#: ../../content/developer/cli.rst:362 msgid "import a CSV or a PO file with translations and exit. The '-l' option is required." msgstr "" -#: ../../content/developer/cli.rst:359 +#: ../../content/developer/cli.rst:367 msgid "overwrites existing translation terms on updating a module or importing a CSV or a PO file." msgstr "" -#: ../../content/developer/cli.rst:364 +#: ../../content/developer/cli.rst:372 msgid "specify modules to export. Use in combination with --i18n-export" msgstr "" -#: ../../content/developer/cli.rst:369 +#: ../../content/developer/cli.rst:377 msgid "Advanced Options" msgstr "" -#: ../../content/developer/cli.rst:374 +#: ../../content/developer/cli.rst:382 msgid "Developer features" msgstr "" -#: ../../content/developer/cli.rst:378 +#: ../../content/developer/cli.rst:386 msgid "comma-separated list of features. For development purposes only. Do not use it in production. Possible features are:" msgstr "" -#: ../../content/developer/cli.rst:381 +#: ../../content/developer/cli.rst:389 msgid "``all``: all the features below are activated" msgstr "" -#: ../../content/developer/cli.rst:383 +#: ../../content/developer/cli.rst:391 msgid "``xml``: read QWeb template 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. Particularly, templates are not translated on using this option." msgstr "" -#: ../../content/developer/cli.rst:388 +#: ../../content/developer/cli.rst:396 msgid "``reload``: restart server when python file are updated (may not be detected depending on the text editor used)" msgstr "" -#: ../../content/developer/cli.rst:391 +#: ../../content/developer/cli.rst:399 msgid "``qweb``: break in the evaluation of QWeb template when a node contains ``t-debug='debugger'``" msgstr "" -#: ../../content/developer/cli.rst:393 +#: ../../content/developer/cli.rst:401 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:396 +#: ../../content/developer/cli.rst:404 msgid "``werkzeug``: display the full traceback on the frontend page in case of exception" msgstr "" -#: ../../content/developer/cli.rst:402 +#: ../../content/developer/cli.rst:410 msgid "HTTP" msgstr "" -#: ../../content/developer/cli.rst:406 +#: ../../content/developer/cli.rst:414 msgid "do not start the HTTP or long-polling workers (may still start :ref:`cron ` workers)" msgstr "" -#: ../../content/developer/cli.rst:409 +#: ../../content/developer/cli.rst:417 msgid "has no effect if :option:`--test-enable` is set, as tests require an accessible HTTP server" msgstr "" -#: ../../content/developer/cli.rst:414 +#: ../../content/developer/cli.rst:422 msgid "TCP/IP address on which the HTTP server listens, defaults to ``0.0.0.0`` (all addresses)" msgstr "" -#: ../../content/developer/cli.rst:420 +#: ../../content/developer/cli.rst:428 msgid "Port on which the HTTP server listens, defaults to 8069." msgstr "" -#: ../../content/developer/cli.rst:424 +#: ../../content/developer/cli.rst:432 msgid "TCP port for websocket connections in multiprocessing or gevent mode, defaults to 8072. Not used in default (threaded) mode." msgstr "" -#: ../../content/developer/cli.rst:429 +#: ../../content/developer/cli.rst:437 msgid "enables the use of ``X-Forwarded-*`` headers through `Werkzeug's proxy support`_. Only enable this when running behind a trusted web proxy!" msgstr "" -#: ../../content/developer/cli.rst:433 +#: ../../content/developer/cli.rst:441 msgid "proxy mode *must not* be enabled outside of a reverse proxy scenario" msgstr "" -#: ../../content/developer/cli.rst:438 +#: ../../content/developer/cli.rst:446 msgid "delegates serving attachments files to the static web server and sets both ``X-Sendfile`` (apache) and ``X-Accel-*`` (nginx) http headers on stream responses. See :ref:`deploy/streaming` for web server configuration." msgstr "" -#: ../../content/developer/cli.rst:445 +#: ../../content/developer/cli.rst:453 msgid "Logging" msgstr "" -#: ../../content/developer/cli.rst:447 +#: ../../content/developer/cli.rst:455 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:454 +#: ../../content/developer/cli.rst:462 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:461 +#: ../../content/developer/cli.rst:469 msgid "logs to the system's event logger: `syslog on unices `_ and `the Event Log on Windows `_." msgstr "" -#: ../../content/developer/cli.rst:464 +#: ../../content/developer/cli.rst:472 msgid "Neither is configurable" msgstr "" -#: ../../content/developer/cli.rst:468 +#: ../../content/developer/cli.rst:476 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:474 +#: ../../content/developer/cli.rst:482 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:478 +#: ../../content/developer/cli.rst:486 msgid "The colon ``:`` is mandatory" msgstr "" -#: ../../content/developer/cli.rst:479 +#: ../../content/developer/cli.rst:487 msgid "The logger can be omitted to configure the root (default) handler" msgstr "" -#: ../../content/developer/cli.rst:480 +#: ../../content/developer/cli.rst:488 msgid "If the level is omitted, the logger is set to ``INFO``" msgstr "" -#: ../../content/developer/cli.rst:482 +#: ../../content/developer/cli.rst:490 msgid "The option can be repeated to configure multiple loggers e.g." msgstr "" -#: ../../content/developer/cli.rst:490 +#: ../../content/developer/cli.rst:498 msgid "enables DEBUG logging of HTTP requests and responses, equivalent to ``--log-handler=odoo.http:DEBUG``" msgstr "" -#: ../../content/developer/cli.rst:495 +#: ../../content/developer/cli.rst:503 msgid "enables DEBUG logging of SQL querying, equivalent to ``--log-handler=odoo.sql_db:DEBUG``" msgstr "" -#: ../../content/developer/cli.rst:500 +#: ../../content/developer/cli.rst:508 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:505 +#: ../../content/developer/cli.rst:513 msgid "Odoo also provides debugging pseudo-levels which apply to different sets of loggers:" msgstr "" -#: ../../content/developer/cli.rst:510 +#: ../../content/developer/cli.rst:518 msgid "``debug_sql``" msgstr "" -#: ../../content/developer/cli.rst:509 +#: ../../content/developer/cli.rst:517 msgid "sets the SQL logger to ``debug``" msgstr "" -#: ../../content/developer/cli.rst:511 +#: ../../content/developer/cli.rst:519 msgid "equivalent to ``--log-sql``" msgstr "" -#: ../../content/developer/cli.rst:514 +#: ../../content/developer/cli.rst:522 msgid "``debug_rpc``" msgstr "" -#: ../../content/developer/cli.rst:513 +#: ../../content/developer/cli.rst:521 msgid "sets the ``odoo`` and HTTP request loggers to ``debug``" msgstr "" -#: ../../content/developer/cli.rst:515 +#: ../../content/developer/cli.rst:523 msgid "equivalent to ``--log-level debug --log-request``" msgstr "" -#: ../../content/developer/cli.rst:520 +#: ../../content/developer/cli.rst:528 msgid "``debug_rpc_answer``" msgstr "" -#: ../../content/developer/cli.rst:517 +#: ../../content/developer/cli.rst:525 msgid "sets the ``odoo`` and HTTP request and response loggers to ``debug``" msgstr "" -#: ../../content/developer/cli.rst:520 +#: ../../content/developer/cli.rst:528 msgid "equivalent to ``--log-level debug --log-request --log-response``" msgstr "" -#: ../../content/developer/cli.rst:524 +#: ../../content/developer/cli.rst:532 msgid "In case of conflict between :option:`--log-level` and :option:`--log-handler`, the latter is used" msgstr "" -#: ../../content/developer/cli.rst:530 +#: ../../content/developer/cli.rst:538 msgid "Multiprocessing" msgstr "" -#: ../../content/developer/cli.rst:534 +#: ../../content/developer/cli.rst:542 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:538 +#: ../../content/developer/cli.rst:546 msgid "multiprocessing mode is only available on Unix-based systems" msgstr "" -#: ../../content/developer/cli.rst:540 +#: ../../content/developer/cli.rst:548 msgid "A number of options allow limiting and recycling workers:" msgstr "" -#: ../../content/developer/cli.rst:544 +#: ../../content/developer/cli.rst:552 msgid "Number of requests a worker will process before being recycled and restarted." msgstr "" -#: ../../content/developer/cli.rst:547 +#: ../../content/developer/cli.rst:555 msgid "Defaults to *8196*." msgstr "" -#: ../../content/developer/cli.rst:551 +#: ../../content/developer/cli.rst:559 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:554 +#: ../../content/developer/cli.rst:562 msgid "Defaults to *2048MiB*." msgstr "" -#: ../../content/developer/cli.rst:558 +#: ../../content/developer/cli.rst:566 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:562 +#: ../../content/developer/cli.rst:570 msgid "Defaults to *2560MiB*." msgstr "" -#: ../../content/developer/cli.rst:566 +#: ../../content/developer/cli.rst:574 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:569 +#: ../../content/developer/cli.rst:577 msgid "Defaults to *60*." msgstr "" -#: ../../content/developer/cli.rst:573 +#: ../../content/developer/cli.rst:581 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:576 +#: ../../content/developer/cli.rst:584 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:579 +#: ../../content/developer/cli.rst:587 msgid "Defaults to *120*." msgstr "" -#: ../../content/developer/cli.rst:583 +#: ../../content/developer/cli.rst:591 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:586 +#: ../../content/developer/cli.rst:594 msgid "For multi-processing mode, this is in addition to the HTTP worker processes." msgstr "" -#: ../../content/developer/cli.rst:591 +#: ../../content/developer/cli.rst:599 msgid "Configuration file" msgstr "" -#: ../../content/developer/cli.rst:595 +#: ../../content/developer/cli.rst:603 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:600 +#: ../../content/developer/cli.rst:608 msgid "Some conversions don't match the pattern:" msgstr "" -#: ../../content/developer/cli.rst:602 +#: ../../content/developer/cli.rst:610 msgid ":option:`--db-filter` becomes ``dbfilter``" msgstr "" -#: ../../content/developer/cli.rst:603 +#: ../../content/developer/cli.rst:611 msgid ":option:`--no-http` corresponds to the ``http_enable`` boolean" msgstr "" -#: ../../content/developer/cli.rst:604 +#: ../../content/developer/cli.rst:612 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:607 +#: ../../content/developer/cli.rst:615 msgid ":option:`--smtp` is stored as ``smtp_server``" msgstr "" -#: ../../content/developer/cli.rst:608 +#: ../../content/developer/cli.rst:616 msgid ":option:`--database` is stored as ``db_name``" msgstr "" -#: ../../content/developer/cli.rst:609 +#: ../../content/developer/cli.rst:617 msgid ":option:`--i18n-import` and :option:`--i18n-export` aren't available at all from configuration files" msgstr "" -#: ../../content/developer/cli.rst:612 +#: ../../content/developer/cli.rst:620 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:618 +#: ../../content/developer/cli.rst:626 msgid "Here is a sample file:" msgstr "" -#: ../../content/developer/cli.rst:643 +#: ../../content/developer/cli.rst:651 msgid "Shell" msgstr "" -#: ../../content/developer/cli.rst:645 +#: ../../content/developer/cli.rst:653 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:655 +#: ../../content/developer/cli.rst:663 msgid "Specify a preferred REPL to use in shell mode." msgstr "" -#: ../../content/developer/cli.rst:661 +#: ../../content/developer/cli.rst:669 msgid "Scaffolding" msgstr "" -#: ../../content/developer/cli.rst:665 +#: ../../content/developer/cli.rst:673 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:670 +#: ../../content/developer/cli.rst:678 msgid "Scaffolding is available via the :command:`odoo-bin scaffold` subcommand." msgstr "" -#: ../../content/developer/cli.rst:678 +#: ../../content/developer/cli.rst:686 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:683 +#: ../../content/developer/cli.rst:691 msgid "directory in which to create the new module, defaults to the current directory" msgstr "" -#: ../../content/developer/cli.rst:688 +#: ../../content/developer/cli.rst:696 msgid "a template directory, files are passed through jinja2_ then copied to the ``destination`` directory" msgstr "" -#: ../../content/developer/cli.rst:692 +#: ../../content/developer/cli.rst:700 msgid "This will create module *my_module* in directory */addons/*." msgstr "" -#: ../../content/developer/cli.rst:697 +#: ../../content/developer/cli.rst:705 msgid "Database Population" msgstr "" -#: ../../content/developer/cli.rst:701 +#: ../../content/developer/cli.rst:709 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:712 +#: ../../content/developer/cli.rst:720 msgid "list of models for which the database should be filled" msgstr "" -#: ../../content/developer/cli.rst:716 +#: ../../content/developer/cli.rst:724 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:721 +#: ../../content/developer/cli.rst:729 msgid ":ref:`reference/performance/populate`" msgstr "" -#: ../../content/developer/cli.rst:726 +#: ../../content/developer/cli.rst:734 msgid "Cloc" msgstr "" -#: ../../content/developer/cli.rst:730 +#: ../../content/developer/cli.rst:738 msgid "Odoo Cloc is a tool to count the number of relevant lines written in Python, Javascript, CSS, SCSS, or XML. This can be used as a rough metric for pricing maintenance of extra modules." msgstr "" -#: ../../content/developer/cli.rst:735 +#: ../../content/developer/cli.rst:743 msgid "Command-line options" msgstr "" -#: ../../content/developer/cli.rst:740 +#: ../../content/developer/cli.rst:748 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:742 +#: ../../content/developer/cli.rst:750 msgid "The :option:`--addons-path` option is required to specify the path(s) to the module folder(s)." msgstr "" -#: ../../content/developer/cli.rst:745 +#: ../../content/developer/cli.rst:753 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:752 +#: ../../content/developer/cli.rst:760 msgid ":ref:`reference/cmdline/cloc/database-option`" msgstr "" -#: ../../content/developer/cli.rst:757 +#: ../../content/developer/cli.rst:765 msgid "Process the files in the provided path." msgstr "" -#: ../../content/developer/cli.rst:760 +#: ../../content/developer/cli.rst:768 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:767 +#: ../../content/developer/cli.rst:775 msgid "Multiple paths can be provided by repeating the option." msgstr "" -#: ../../content/developer/cli.rst:774 +#: ../../content/developer/cli.rst:782 msgid ":ref:`reference/cmdline/cloc/path-option`" msgstr "" -#: ../../content/developer/cli.rst:780 +#: ../../content/developer/cli.rst:788 msgid "Comma-separated list of directories in which modules are stored. These directories are scanned for modules." msgstr "" -#: ../../content/developer/cli.rst:781 +#: ../../content/developer/cli.rst:789 msgid "Required if the :option:`--database` option is used." msgstr "" -#: ../../content/developer/cli.rst:786 +#: ../../content/developer/cli.rst:794 msgid "Specify a configuration file to use in place of the :option:`--addons-path` option." msgstr "" -#: ../../content/developer/cli.rst:795 +#: ../../content/developer/cli.rst:803 msgid "Show the details of lines counted for each file." msgstr "" -#: ../../content/developer/cli.rst:799 +#: ../../content/developer/cli.rst:807 msgid "Processed files" msgstr "" -#: ../../content/developer/cli.rst:804 +#: ../../content/developer/cli.rst:812 msgid "With the :option:`--database` option" msgstr "" -#: ../../content/developer/cli.rst:806 +#: ../../content/developer/cli.rst:814 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. Finally, it counts the lines of code of Javascript, CSS, and SCSS files, and of QWeb views from imported modules." msgstr "" -#: ../../content/developer/cli.rst:812 +#: ../../content/developer/cli.rst:820 msgid "Some files are excluded from the count by default:" msgstr "" -#: ../../content/developer/cli.rst:814 +#: ../../content/developer/cli.rst:822 msgid "The manifest (:file:`__manifest__.py` or :file:`__openerp__.py`)" msgstr "" -#: ../../content/developer/cli.rst:815 +#: ../../content/developer/cli.rst:823 msgid "The contents of the folder :file:`static/lib`" msgstr "" -#: ../../content/developer/cli.rst:816 +#: ../../content/developer/cli.rst:824 msgid "The tests defined in the folder :file:`tests` and :file:`static/tests`" msgstr "" -#: ../../content/developer/cli.rst:817 +#: ../../content/developer/cli.rst:825 msgid "The migrations scripts defined in the folder :file:`migrations` and `upgrades`" msgstr "" -#: ../../content/developer/cli.rst:818 +#: ../../content/developer/cli.rst:826 msgid "The XML files declared in the ``demo`` or ``demo_xml`` sections of the manifest" msgstr "" -#: ../../content/developer/cli.rst:820 +#: ../../content/developer/cli.rst:828 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:833 +#: ../../content/developer/cli.rst:841 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:835 +#: ../../content/developer/cli.rst:843 msgid "For more information about the pattern syntax, see `glob `_." msgstr "" -#: ../../content/developer/cli.rst:842 +#: ../../content/developer/cli.rst:850 msgid "With the :option:`--path` option" msgstr "" -#: ../../content/developer/cli.rst:844 +#: ../../content/developer/cli.rst:852 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:850 +#: ../../content/developer/cli.rst:858 msgid "Identifying Extra Modules" msgstr "" -#: ../../content/developer/cli.rst:852 +#: ../../content/developer/cli.rst:860 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:859 +#: ../../content/developer/cli.rst:867 #: ../../content/developer/reference/frontend/services.rst:662 msgid "Error Handling" msgstr "" -#: ../../content/developer/cli.rst:861 +#: ../../content/developer/cli.rst:869 msgid "Some file cannot be counted by Odoo Cloc. Those file are reported at the end of the output." msgstr "" -#: ../../content/developer/cli.rst:865 +#: ../../content/developer/cli.rst:873 msgid "Max file size exceeded" msgstr "" -#: ../../content/developer/cli.rst:867 +#: ../../content/developer/cli.rst:875 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:870 +#: ../../content/developer/cli.rst:878 msgid "A generated XML file that contains lots of data. It should be excluded in the manifest." msgstr "" -#: ../../content/developer/cli.rst:871 +#: ../../content/developer/cli.rst:879 msgid "A JavaScript library that should be placed in the :file:`static/lib` folder." msgstr "" -#: ../../content/developer/cli.rst:874 +#: ../../content/developer/cli.rst:882 msgid "Syntax Error" msgstr "" -#: ../../content/developer/cli.rst:876 +#: ../../content/developer/cli.rst:884 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/cli.rst:883 +#: ../../content/developer/cli.rst:891 msgid "TSConfig Generator" msgstr "" -#: ../../content/developer/cli.rst:887 +#: ../../content/developer/cli.rst:895 msgid "When working on javascript, there are ways to help your editor providing you with powerful auto-completion. One of those ways is the use of a tsconfig.json file. Originally meant for typescript, editors can use its information with plain javascript also. With this config file, you will now have full auto-completion across modules." msgstr "" -#: ../../content/developer/cli.rst:892 +#: ../../content/developer/cli.rst:900 msgid "The command to generate this files takes as many unnamed arguments as you need. Those are relative paths to your addon directories. In the example below, we move up one folder to save the tsconfig file in the folder containing community and enterprise." msgstr "" @@ -3308,7 +3313,7 @@ msgid "`addons/l10n_il/data/account.group.template.csv Create Menu Item`. You will then need to refresh the page to see it. Alternatively, to create a dedicated section for a totally new report in the :guilabel:`Reporting` menu, you need to create a new `ir.ui.menu` record (usually in the main `l10n_XX` module) and a new `ir.actions.client` (usually in the new report XML file) that calls the `account.report` with the new **report id**. Then, set the new menu as `parent_id` field in the action model." msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:380 -msgid "`ir.ui.menu record in l10n_be `_" +#: ../../content/developer/howtos/accounting_localization.rst:388 +msgid "`ir.ui.menu creation `_" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:381 -msgid "`parent_id field in l10n_be_reports (v16) `_" +#: ../../content/developer/howtos/accounting_localization.rst:389 +msgid "`ir.actions.client and menu item creation `_" msgstr "" #: ../../content/developer/howtos/backend.rst:7 @@ -4808,14 +4813,14 @@ msgstr "" #: ../../content/developer/howtos/backend.rst:885 #: ../../content/developer/reference/backend/views.rst:1064 -#: ../../content/developer/reference/backend/views.rst:1748 -#: ../../content/developer/reference/backend/views.rst:1879 +#: ../../content/developer/reference/backend/views.rst:1750 +#: ../../content/developer/reference/backend/views.rst:1881 msgid "``decoration-{$name}``" msgstr "" #: ../../content/developer/howtos/backend.rst:861 #: ../../content/developer/reference/backend/views.rst:1051 -#: ../../content/developer/reference/backend/views.rst:1744 +#: ../../content/developer/reference/backend/views.rst:1746 msgid "allow changing the style of a row's text based on the corresponding record's attributes." msgstr "" @@ -4875,7 +4880,7 @@ msgstr "" #: ../../content/developer/howtos/backend.rst:907 #: ../../content/developer/reference/backend/views.rst:449 #: ../../content/developer/reference/backend/views.rst:1048 -#: ../../content/developer/reference/backend/views.rst:2435 +#: ../../content/developer/reference/backend/views.rst:2437 msgid "``color``" msgstr "" @@ -4903,11 +4908,11 @@ msgstr "" #: ../../content/developer/reference/backend/views.rst:972 #: ../../content/developer/reference/backend/views.rst:1105 #: ../../content/developer/reference/backend/views.rst:1393 -#: ../../content/developer/reference/backend/views.rst:1776 -#: ../../content/developer/reference/backend/views.rst:1838 -#: ../../content/developer/reference/backend/views.rst:2049 -#: ../../content/developer/reference/backend/views.rst:2217 -#: ../../content/developer/reference/backend/views.rst:2429 +#: ../../content/developer/reference/backend/views.rst:1778 +#: ../../content/developer/reference/backend/views.rst:1840 +#: ../../content/developer/reference/backend/views.rst:2051 +#: ../../content/developer/reference/backend/views.rst:2219 +#: ../../content/developer/reference/backend/views.rst:2431 #: ../../content/developer/reference/frontend/services.rst:870 #: ../../content/developer/reference/frontend/services.rst:873 #: ../../content/developer/reference/frontend/services.rst:879 @@ -4941,8 +4946,8 @@ msgstr "" #: ../../content/developer/reference/backend/views.rst:1441 #: ../../content/developer/reference/backend/views.rst:1490 #: ../../content/developer/reference/backend/views.rst:1503 -#: ../../content/developer/reference/backend/views.rst:2171 -#: ../../content/developer/reference/backend/views.rst:2252 +#: ../../content/developer/reference/backend/views.rst:2173 +#: ../../content/developer/reference/backend/views.rst:2254 msgid "``domain``" msgstr "" @@ -4955,11 +4960,11 @@ msgstr "" #: ../../content/developer/reference/backend/data.rst:72 #: ../../content/developer/reference/backend/views.rst:925 #: ../../content/developer/reference/backend/views.rst:1650 -#: ../../content/developer/reference/backend/views.rst:1824 -#: ../../content/developer/reference/backend/views.rst:1961 -#: ../../content/developer/reference/backend/views.rst:2173 -#: ../../content/developer/reference/backend/views.rst:2245 -#: ../../content/developer/reference/backend/views.rst:2352 +#: ../../content/developer/reference/backend/views.rst:1826 +#: ../../content/developer/reference/backend/views.rst:1963 +#: ../../content/developer/reference/backend/views.rst:2175 +#: ../../content/developer/reference/backend/views.rst:2247 +#: ../../content/developer/reference/backend/views.rst:2354 #: ../../content/developer/reference/frontend/services.rst:854 msgid "``context``" msgstr "" @@ -5054,7 +5059,7 @@ msgid "Graph views contain ```` with a mandatory ``@type`` attribute taki msgstr "" #: ../../content/developer/howtos/backend.rst:1029 -#: ../../content/developer/reference/backend/views.rst:2101 +#: ../../content/developer/reference/backend/views.rst:2103 msgid "``row`` (default)" msgstr "" @@ -5063,7 +5068,7 @@ msgid "the field should be aggregated by default" msgstr "" #: ../../content/developer/howtos/backend.rst:1032 -#: ../../content/developer/reference/backend/views.rst:2105 +#: ../../content/developer/reference/backend/views.rst:2107 msgid "``measure``" msgstr "" @@ -5567,6 +5572,684 @@ msgstr "" msgid "check_company on company_dependent fields." msgstr "" +#: ../../content/developer/howtos/discover_js_framework.rst:5 +msgid "Discover the JavaScript Framework" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework.rst:13 +msgid "For this training, we will step into the shoes of the IT staff at the fictional company Awesome T-Shirt, which is dedicated to printing custom t-shirts for online customers. The Awesome T-Shirt company uses Odoo to manage orders and has created a dedicated Odoo module to manage their workflow. The project is currently a simple kanban view, with a few columns." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework.rst:18 +msgid "The usual process is as follows: a customer looking for a nice t-shirt can simply order it from the Awesome T-Shirt site and give the url for any image they want. They must also fill in some basic information, such as the desired size and quantity of t-shirts. Once they have confirmed their order, and once the payment has been validated, the system will create a task in our application." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework.rst:23 +msgid "The big boss of Awesome T-shirt, Bafien Carpink, is unhappy with our implementation. He believes that by micromanaging more, he will be able to get more revenue from his employees. As the IT staff for Awesome T-shirt, we are responsible with improving the system. Various independent tasks must be performed." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework.rst:28 +msgid "Let us now practice our Odoo skills!" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework.rst:33 +msgid "Setup" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework.rst:35 +msgid "To follow the training, it is necessary to have basic knowledge on Git and a recent version of Odoo installed. If you have not installed it yet, we recommend installing it from :ref:`source ` (:dfn:`running Odoo from source code`)." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework.rst:39 +msgid "To setup your development environment, you can also follow the dedicated chapter in :doc:`Getting Started: Development environment setup ` tutorial." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework.rst:42 +msgid "The last things to do are:" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework.rst:44 +msgid "Clone the `official Odoo tutorials repository `_ and switch to the branch `16.0`." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework.rst:46 +msgid "Add the cloned repository to the :option:`--addons-path `." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework.rst:47 +msgid "Start a new Odoo database and install the modules `owl_playground`, `awesome_tshirt`, and `awesome_gallery`." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework.rst:51 +#: ../../content/developer/howtos/web.rst:1449 +msgid "Exercises" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework.rst:53 +msgid ":doc:`discover_js_framework/01_components`" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework.rst:54 +msgid ":doc:`discover_js_framework/02_odoo_web_framework`" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:3 +msgid "Chapter 1: Components" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:5 +msgid "This chapter introduces the `Owl framework `_, a tailor-made component system for Odoo. The main building blocks of OWL are `components `_ and `templates `_." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:9 +msgid "In Owl, every part of user interface is managed by a component: they hold the logic and define the templates that are used to render the user interface. In practice, a component is represented by a small JavaScript class subclassing the `Component` class." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:16 +msgid "The `Counter` class implements a component that holds the internal state of a counter and defines how it should be incremented." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:33 +msgid "The `Counter` class specifies the name of the template to render. The template is written in XML and defines a part of user interface." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:45 +msgid "You maybe noticed the `owl=\"1\"` temporary attribute, it allows Odoo to differentiate Owl templates from the old JavaScript framework templates." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:48 +msgid "Let us take some time to get used to Owl itself. Below, you will find a series of exercises intended to quickly understand and practice the basics of Owl." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:51 +msgid "update screenshot" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:53 +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:27 +msgid "Goal" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:55 +msgid "Here is an overview of what we are going to achieve in this chapter." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:0 +msgid "Overview of chapter 1." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:64 +msgid "The solutions for each exercise of the chapter are hosted on the `official Odoo tutorials repository `_." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:68 +msgid "1. Displaying a counter" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:70 +msgid "As a first exercise, let us implement a counter in the `Playground` component located in :file:`owl_playground/static/src/`. To see the result, you can go to the `/owl_playground/playground` route with your browser." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:75 +msgid "The Odoo JavaScript files downloaded by the browser are minified. For debugging purpose, it's easier when the files are not minified. Switch to :ref:`debug mode with assets ` so that the files are not minified." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:80 +msgid "Modify :file:`playground.js` so that it acts as a counter like in :ref:`the example above `. You will need to use the `useState `_ function so that the component is re-rendered whenever any part of the state object has been read by this component is modified." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:84 +msgid "In the same component, create an `increment` method." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:85 +msgid "Modify the template in :file:`playground.xml` so that it displays your counter variable. Use `t-esc `_ to output the data." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:87 +msgid "Add a button in the template and specify a `t-on-click `_ attribute in the button to trigger the `increment` method whenever the button is clicked." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:0 +msgid "A counter component." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:97 +msgid "`Video: How to use the DevTools `_" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:100 +msgid "2. Extract counter in a component" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:102 +msgid "For now we have the logic of a counter in the `Playground` component, let us see how to create a `sub-component `_ from it." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:107 +msgid "Extract the counter code from the `Playground` component into a new `Counter` component." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:108 +msgid "You can do it in the same file first, but once it's done, update your code to move the `Counter` in its own file." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:110 +msgid "Make sure the template is in its own file, with the same name." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:113 +msgid "Don't forget :code:`/** @odoo-module **/` in your JavaScript files. More information on this can be found :ref:`here `." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:117 +msgid "3. A todo component" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:119 +msgid "We will create new components in :file:`owl_playground/static/src/` to keep track of a list of todos. This will be done incrementally in multiple exercises that will introduce various concepts." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:124 +msgid "Create a `Todo` component that receive a `todo` object in `props `_, and display it. It should show something like **3. buy milk**." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:127 +msgid "Add the Bootstrap classes `text-muted` and `text-decoration-line-through` on the task if it is done. To do that, you can use `dynamic attributes `_" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:130 +msgid "Modify :file:`owl_playground/static/src/playground.js` and :file:`owl_playground/static/src/playground.xml` to display your new `Todo` component with some hard-coded props to test it first." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:0 +msgid "A Todo component" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:149 +msgid "`Owl: Dynamic class attributes `_" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:152 +msgid "4. Props validation" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:154 +msgid "The `Todo` component has an implicit API. It expects to receive in its props the description of a todo object in a specified format: `id`, `description` and `done`. Let us make that API more explicit. We can add a props definition that will let Owl perform a validation step in `dev mode `_. You can activate the dev mode in the `App configuration `_" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:160 +msgid "It is a good practice to do props validation for every component." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:164 +msgid "Add `props validation `_ to the `Todo` component." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:166 +msgid "Make sure it passes in dev mode which is activated by default in `owl_playground`. The dev mode can be activated and deactivated by modifying the `dev` attribute in the in the `config` parameter of the `mount `_ function in :file:`owl_playground/static/src/main.js`." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:170 +msgid "Remove `done` from the props and reload the page. The validation should fail." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:173 +msgid "5. A list of todos" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:175 +msgid "Now, let us display a list of todos instead of just one todo. For now, we can still hard-code the list." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:180 +msgid "Change the code to display a list of todos instead of just one, and use `t-foreach `_ in the template." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:182 +msgid "Think about how it should be keyed with the `t-key` directive." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:0 +msgid "A TodoList" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:190 +msgid "6. Adding a todo" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:192 +msgid "So far, the todos in our list are hard-coded. Let us make it more useful by allowing the user to add a todo to the list." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:197 +msgid "Add an input above the task list with placeholder *Enter a new task*." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:198 +msgid "Add an `event handler `_ on the `keyup` event named ``addTodo``." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:200 +msgid "Implement `addTodo` to check if enter was pressed (:code:`ev.keyCode === 13`), and in that case, create a new todo with the current content of the input as the description." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:202 +msgid "Make sure it has a unique id. It can be just a counter that increments at each todo." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:203 +msgid "Then, clear the input of all content." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:204 +msgid "Bonus point: don't do anything if the input is empty." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:207 +msgid "Notice that nothing updates in the UI: this is because Owl does not know that it should update the UI. This can be fixed by wrapping the todo list in a `useState` hook." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:0 +msgid "Creating todos" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:220 +msgid "`Owl: Reactivity `_" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:223 +msgid "7. Focusing the input" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:225 +msgid "Let's see how we can access the DOM with `t-ref `_ and `useRef `_." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:230 +msgid "Focus the `input` from the previous exercise when the dashboard is `mounted `_." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:232 +msgid "Bonus point: extract the code into a specialized `hook `_ `useAutofocus`." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:236 +msgid "`Owl: Component lifecycle `_" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:239 +msgid "8. Toggling todos" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:241 +msgid "Now, let's add a new feature: mark a todo as completed. This is actually trickier than one might think. The owner of the state is not the same as the component that displays it. So, the `Todo` component needs to communicate to its parent that the todo state needs to be toggled. One classic way to do this is by using a `callback prop `_ `toggleState`." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:249 +msgid "Add an input with the attribute :code:`type=\"checkbox\"` before the id of the task, which must be checked if the state `done` is true." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:251 +msgid "Add a callback props `toggleState`." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:252 +msgid "Add a `click` event handler on the input in the `Todo` component and make sure it calls the `toggleState` function with the todo id." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:254 +msgid "Make it work!" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:0 +msgid "Toggling todos" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:262 +msgid "9. Deleting todos" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:264 +msgid "The final touch is to let the user delete a todo." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:268 +msgid "Add a new callback prop `removeTodo`." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:272 +msgid "If you're using an array to store your todo list, you can use the JavaScript `splice` function to remove a todo from it." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:284 +msgid "Insert :code:`` in the template of the `Todo` component." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:285 +msgid "Whenever the user clicks on it, it should call the `removeTodo` method." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:0 +msgid "Deleting todos" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:293 +msgid "10. Generic components with slots" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:295 +msgid "Owl has a powerful `slot `_ system to allow you to write generic components. This is useful to factorize the common layout between different parts of the interface." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:300 +msgid "Write a `Card` component using the following Bootstrap HTML structure:" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:316 +msgid "This component should have two slots: one slot for the title, and one for the content (the default slot)." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:320 +msgid "Here is how one could use it:" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:330 +msgid "Bonus point: if the `title` slot is not given, the `h5` should not be rendered at all." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:0 +msgid "Creating card with slots" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:338 +msgid "`Bootstrap: documentation on cards `_" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:341 +msgid "11. Go further" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:345 +msgid "Add prop validation on the `Card` component." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/01_components.rst:346 +msgid "Try to express in the props validation system that it requires a `default` slot, and an optional `title` slot." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:3 +msgid "Chapter 2: Odoo web framework" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:5 +msgid "In the previous chapter, we learned to use Owl framework and its different concepts. We can now learn how to use the Odoo JavaScript framework which is is built on top of Owl." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:None +msgid "What we learned in chapter 1" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:24 +msgid "In the `awesome_tshirt` module, we will build our Awesome dashboard. This will be a good opportunity to discover many useful features in the Odoo JavaScript framework." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:0 +msgid "overview" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:35 +msgid "The solutions for each exercise of the chapter are hosted on the `official Odoo tutorials repository `_." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:39 +msgid "1. A new Layout" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:41 +msgid "Most screens in the Odoo web client uses a common layout: a control panel on top, with some buttons, and a main content zone just below. This is done using a `Layout component `_, available in `@web/search/layout`." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:47 +msgid "Update the `AwesomeDashboard` component located in :file:`awesome_tshirt/static/src/` to use the `Layout` component. You can use :code:`{ \"top-right\": false, \"bottom-right\": false }` for the `display` props of the `Layout` component." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:0 +msgid "new Layout" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:57 +msgid "`Example: use of Layout in client action `_ and `template `_" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:60 +msgid "`Example: use of Layout in kanban view `_" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:64 +msgid "2. Add some buttons for quick navigation" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:66 +msgid "Bafien Carpink want buttons for easy access to common views in Odoo. In order to do that, you will need to use the action service." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:69 +msgid ":ref:`Services ` is a notion defined by the Odoo JavaScript framework, it is a persistent piece of code that exports state and/or functions. Each service can depend on other services, and components can import a service with the `useService()` hooks." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:75 +msgid "This shows how to open the settings view from a component using the action service." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:91 +msgid "Let us add three buttons in the control panel bottom left zone." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:93 +msgid "A button `Customers`, which opens a kanban view with all customers (this action already exists, so you should use `its xml id `_)." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:96 +msgid "A button `New Orders`, which opens a list view with all orders created in the last 7 days." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:97 +msgid "A button `Cancelled Order`, which opens a list of all orders created in the last 7 days, but already cancelled." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:0 +msgid "buttons for quick navigation" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:105 +msgid "`Example: doAction use `_" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:108 +msgid "`Code: action service `_" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:112 +msgid "3. Call the server, add some statistics" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:114 +msgid "Let's improve the dashboard by adding a few cards (see the `Card` component made in the Owl training) containing a few statistics. There is a route `/awesome_tshirt/statistics` that will perform some computations and return an object containing some useful information." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:118 +msgid "Whenever we need to call a specific controller, we need to use the :ref:`rpc service `. It only exports a single function that perform the request: :code:`rpc(route, params, settings)`" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:122 +msgid "Here is a short explanation on the various arguments:" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:124 +msgid "`route` is the target route, as a string. For example `/myroute/`." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:125 +msgid "`params` is an object that contains all data that will be given to the controller. (optional)" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:126 +msgid "`settings` are for advanced controls on the request. Make it silent, or using a specific xhr instance. (optional)" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:131 +msgid "A basic request could look like this:" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:144 +msgid "Change `Dashboard` so that it uses the `rpc` service." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:145 +msgid "Call the statistics route `/awesome_tshirt/statistics` in the `onWillStart` hook." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:146 +msgid "Display a few cards in the dashboard containing:" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:148 +msgid "Number of new orders this month" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:149 +msgid "Total amount of new orders this month" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:150 +msgid "Average amount of t-shirt by order this month" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:151 +msgid "Number of cancelled orders this month" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:152 +msgid "Average time for an order to go from 'new' to 'sent' or 'cancelled'" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:0 +msgid "statistics cards" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:160 +msgid "`Code: rpc service `_" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:161 +msgid "`Example: calling a route in onWillStart `_" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:165 +msgid "4. Cache network calls, create a service" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:167 +msgid "If you open your browser dev tools, in the network tabs, you will probably see that the call to `/awesome_tshirt/statistics` is done every time the client action is displayed. This is because the `onWillStart` hook is called each time the `Dashboard` component is mounted. But in this case, we would probably prefer to do it only the first time, so we actually need to maintain some state outside of the `Dashboard` component. This is a nice use case for a service!" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:175 +msgid "The following example registers a simple service that displays a notification every 5 seconds." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:193 +msgid "Implements a new `awesome_tshirt.statistics` service." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:194 +msgid "It should provide a function `loadStatistics` that, once called, performs the actual rpc, and always return the same information." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:196 +msgid "Maybe use the `memoize `_ utility function from `@web/core/utils/functions`" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:199 +msgid "Use this service in the `Dashboard` component." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:200 +msgid "Check that it works as expected" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:203 +msgid "`Example: simple service `_" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:204 +msgid "`Example: service with a dependency `_" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:208 +msgid "5. Display a pie chart" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:210 +msgid "Everyone likes charts (!), so let us add a pie chart in our dashboard, which displays the proportions of t-shirts sold for each size: S/M/L/XL/XXL." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:213 +msgid "For this exercise, we will use `Chart.js `_. It is the chart library used by the graph view. However, it is not loaded by default, so we will need to either add it to our assets bundle, or lazy load it (it's usually better since our users will not have to load the chartjs code every time if they don't need it)." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:219 +msgid "Load chartjs, you can use the `loadJs `_ function to load :file:`/web/static/lib/Chart/Chart.js`." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:222 +msgid "In a `Card` (from previous exercises), display a `pie chart `_ in the dashboard that displays the correct quantity for each sold t-shirts in each size (that information is available in the statistics route)." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:0 +msgid "pie chart" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:233 +msgid "`Example: lazy loading a js file `_" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:235 +msgid "`Example: rendering a chart in a component `_" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:239 +msgid "6. Going further" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:241 +msgid "Here is a list of some small improvements you could try to do if you have the time:" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:245 +msgid "Make sure your application can be :ref:`translated ` (with `env._t`)." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:247 +msgid "Clicking on a section of the pie chart should open a list view of all orders which have the corresponding size." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:249 +msgid "Add a SCSS file and see if you can change the background color of the dashboard action." +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:0 +msgid "background color and translation" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:257 +msgid "`Example: use of env._t function `_" +msgstr "" + +#: ../../content/developer/howtos/discover_js_framework/02_odoo_web_framework.rst:259 +msgid "`Code: translation code in web/ `_" +msgstr "" + #: ../../content/developer/howtos/rdtraining.rst:39 #: ../../content/developer/howtos/rdtraining.rst:69 #: ../../content/developer/howtos/rdtraining.rst:39 @@ -6428,7 +7111,7 @@ msgstr "" #: ../../content/developer/howtos/rdtraining/12_sprinkles.rst:262 #: ../../content/developer/howtos/rdtraining/13_inheritance.rst:155 #: ../../content/developer/howtos/rdtraining/C_data.rst:176 -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:301 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:302 msgid "Field" msgstr "" @@ -6440,7 +7123,7 @@ msgstr "" #: ../../content/developer/howtos/rdtraining/12_sprinkles.rst:215 #: ../../content/developer/howtos/rdtraining/12_sprinkles.rst:262 #: ../../content/developer/howtos/rdtraining/13_inheritance.rst:155 -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:301 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:302 #: ../../content/developer/reference/frontend/assets.rst:300 #: ../../content/developer/reference/frontend/framework_overview.rst:262 #: ../../content/developer/reference/frontend/hooks.rst:224 @@ -6521,7 +7204,7 @@ msgstr "" #: ../../content/developer/howtos/rdtraining/09_compute_onchange.rst:175 #: ../../content/developer/howtos/rdtraining/12_sprinkles.rst:217 #: ../../content/developer/howtos/rdtraining/12_sprinkles.rst:264 -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:303 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:304 msgid "Integer" msgstr "" @@ -6562,8 +7245,8 @@ msgstr "" #: ../../content/developer/howtos/rdtraining/04_basicmodel.rst:194 #: ../../content/developer/howtos/rdtraining/08_relations.rst:244 -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:304 -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:306 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:305 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:307 msgid "Selection" msgstr "" @@ -6700,7 +7383,7 @@ msgid "Data Files (CSV)" msgstr "" #: ../../content/developer/howtos/rdtraining/05_securityintro.rst:18 -msgid "Odoo is a highly data driven system. Although behavior is customized using Python code, part of a module's value is in the data it sets up when loaded. One way to load data is through a CSV file. One example is the `list of country states `__ which is loaded at installation of the ``base`` module." +msgid "Odoo is a highly data driven system. Although behavior is customized using Python code, part of a module's value is in the data it sets up when loaded. One way to load data is through a CSV file. One example is the `list of country states `_ which is loaded at installation of the `base` module." msgstr "" #: ../../content/developer/howtos/rdtraining/05_securityintro.rst:33 @@ -7250,7 +7933,7 @@ msgstr "" #: ../../content/developer/howtos/rdtraining/07_basicviews.rst:56 #: ../../content/developer/howtos/rdtraining/12_sprinkles.rst:378 -#: ../../content/developer/howtos/rdtraining/14_other_module.rst:117 +#: ../../content/developer/howtos/rdtraining/14_other_module.rst:115 msgid "Tips:" msgstr "" @@ -7322,7 +8005,7 @@ msgstr "" #: ../../content/developer/howtos/rdtraining/07_basicviews.rst:134 #: ../../content/developer/howtos/rdtraining/12_sprinkles.rst:385 -#: ../../content/developer/reference/backend/views.rst:2190 +#: ../../content/developer/reference/backend/views.rst:2192 msgid "Search" msgstr "" @@ -7456,8 +8139,8 @@ msgid "a list of the offers received" msgstr "" #: ../../content/developer/howtos/rdtraining/08_relations.rst:22 -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:305 -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:307 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:306 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:308 msgid "Many2one" msgstr "" @@ -7729,7 +8412,7 @@ msgid "Many2one (``res.partner``)" msgstr "" #: ../../content/developer/howtos/rdtraining/08_relations.rst:246 -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:305 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:306 msgid "property_id" msgstr "" @@ -8258,7 +8941,7 @@ msgid "**Reference**: the documentation related to this topic can be found in :f msgstr "" #: ../../content/developer/howtos/rdtraining/11_constraints.rst:76 -msgid "**Goal**: at the end of this section, it will not possible to accept an offer lower than 90% of the expected price." +msgid "**Goal**: at the end of this section, it will not be possible to accept an offer lower than 90% of the expected price." msgstr "" #: ../../content/developer/howtos/rdtraining/11_constraints.rst:0 @@ -8439,7 +9122,7 @@ msgstr "" #: ../../content/developer/howtos/rdtraining/12_sprinkles.rst:182 #: ../../content/developer/howtos/rdtraining/12_sprinkles.rst:215 #: ../../content/developer/howtos/rdtraining/12_sprinkles.rst:262 -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:249 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:250 #: ../../content/developer/reference/backend/orm.rst:94 msgid "Model" msgstr "" @@ -8469,7 +9152,7 @@ msgid "Order" msgstr "" #: ../../content/developer/howtos/rdtraining/12_sprinkles.rst:184 -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:305 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:306 msgid "``estate.property``" msgstr "" @@ -8516,12 +9199,12 @@ msgstr "" #: ../../content/developer/howtos/rdtraining/12_sprinkles.rst:187 #: ../../content/developer/howtos/rdtraining/12_sprinkles.rst:217 -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:307 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:308 msgid "``estate.property.type``" msgstr "" #: ../../content/developer/howtos/rdtraining/12_sprinkles.rst:191 -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:319 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:320 msgid "View" msgstr "" @@ -9229,63 +9912,59 @@ msgstr "" msgid "the ``move_type`` should correspond to a 'Customer Invoice'" msgstr "" -#: ../../content/developer/howtos/rdtraining/14_other_module.rst:114 -msgid "the ``journal_id`` must be a ``sale`` journal (when in doubt, have a look `here `__)" -msgstr "" - -#: ../../content/developer/howtos/rdtraining/14_other_module.rst:119 +#: ../../content/developer/howtos/rdtraining/14_other_module.rst:117 msgid "to create an object, use ``self.env[model_name].create(values)``, where ``values`` is a ``dict``." msgstr "" -#: ../../content/developer/howtos/rdtraining/14_other_module.rst:121 +#: ../../content/developer/howtos/rdtraining/14_other_module.rst:119 msgid "the ``create`` method doesn't accept recordsets as field values." msgstr "" -#: ../../content/developer/howtos/rdtraining/14_other_module.rst:123 +#: ../../content/developer/howtos/rdtraining/14_other_module.rst:121 msgid "When a property is set to 'Sold', you should now have a new customer invoice created in Invoicing / Customers / Invoices." msgstr "" -#: ../../content/developer/howtos/rdtraining/14_other_module.rst:126 +#: ../../content/developer/howtos/rdtraining/14_other_module.rst:124 msgid "Obviously we don't have any invoice lines so far. To create an invoice line, we need the following information:" msgstr "" -#: ../../content/developer/howtos/rdtraining/14_other_module.rst:129 +#: ../../content/developer/howtos/rdtraining/14_other_module.rst:127 msgid "``name``: a description of the line" msgstr "" -#: ../../content/developer/howtos/rdtraining/14_other_module.rst:130 +#: ../../content/developer/howtos/rdtraining/14_other_module.rst:128 msgid "``quantity``" msgstr "" -#: ../../content/developer/howtos/rdtraining/14_other_module.rst:131 +#: ../../content/developer/howtos/rdtraining/14_other_module.rst:129 msgid "``price_unit``" msgstr "" -#: ../../content/developer/howtos/rdtraining/14_other_module.rst:133 +#: ../../content/developer/howtos/rdtraining/14_other_module.rst:131 msgid "Moreover, an invoice line needs to be linked to an invoice. The easiest and most efficient way to link a line to an invoice is to include all lines at invoice creation. To do this, the ``invoice_line_ids`` field is included in the ``account.move`` creation, which is a :class:`~odoo.fields.One2many`. One2many and Many2many use special 'commands' which have been made human readable with the :class:`~odoo.fields.Command` namespace. This namespace represents a triplet command to execute on a set of records. The triplet was originally the only option to do these commands, but it is now standard to use the namespace instead. The format is to place them in a list which is executed sequentially. Here is a simple example to include a One2many field ``line_ids`` at creation of a ``test.model``::" msgstr "" -#: ../../content/developer/howtos/rdtraining/14_other_module.rst:159 +#: ../../content/developer/howtos/rdtraining/14_other_module.rst:157 msgid "Add the third step of invoice creation." msgstr "" -#: ../../content/developer/howtos/rdtraining/14_other_module.rst:161 +#: ../../content/developer/howtos/rdtraining/14_other_module.rst:159 msgid "Add two invoice lines during the creation of the ``account.move``. Each property sold will be invoiced following these conditions:" msgstr "" -#: ../../content/developer/howtos/rdtraining/14_other_module.rst:164 +#: ../../content/developer/howtos/rdtraining/14_other_module.rst:162 msgid "6% of the selling price" msgstr "" -#: ../../content/developer/howtos/rdtraining/14_other_module.rst:165 +#: ../../content/developer/howtos/rdtraining/14_other_module.rst:163 msgid "an additional 100.00 from administrative fees" msgstr "" -#: ../../content/developer/howtos/rdtraining/14_other_module.rst:167 +#: ../../content/developer/howtos/rdtraining/14_other_module.rst:165 msgid "Tip: Add the ``invoice_line_ids`` at creation following the example above. For each line, we need a ``name``, ``quantity`` and ``price_unit``." msgstr "" -#: ../../content/developer/howtos/rdtraining/14_other_module.rst:170 +#: ../../content/developer/howtos/rdtraining/14_other_module.rst:168 msgid "This chapter might be one of the most difficult that has been covered so far, but it is the closest to what Odoo development will be in practice. In the :ref:`next chapter `, we will introduce the templating mechanism used in Odoo." msgstr "" @@ -9588,7 +10267,7 @@ msgstr "" #: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:14 #: ../../content/developer/howtos/rdtraining/J_reports.rst:12 #: ../../content/developer/howtos/rdtraining/K_dashboard.rst:12 -msgid "To follow the exercise, it is recommended that you fetch the branch 15.0-core from the `technical training solutions `__ repository. It contains a version of the module created during the core training we can use as a starting point." +msgid "To follow the exercise, it is recommended that you fetch the branch 16.0-core from the `technical training solutions `_ repository. It contains a version of the module created during the core training we can use as a starting point." msgstr "" #: ../../content/developer/howtos/rdtraining/B_acl_irrules.rst:20 @@ -10197,7 +10876,7 @@ msgstr "" #: ../../content/developer/howtos/rdtraining/C_data.rst:9 #: ../../content/developer/howtos/rdtraining/E_unittest.rst:9 -msgid "To do the exercise, fetch the branch 15.0-core from the `technical training solutions `__ repository. It contains a basic module we will use as a starting point" +msgid "To do the exercise, fetch the branch 16.0-core from the `technical training solutions `_ repository. It contains a basic module we will use as a starting point" msgstr "" #: ../../content/developer/howtos/rdtraining/C_data.rst:14 @@ -10889,7 +11568,7 @@ msgid "These test classes are built on top of the ``unittest`` python module." msgstr "" #: ../../content/developer/howtos/rdtraining/E_unittest.rst:284 -msgid "For better readability, split your tests into multiple files depending on the scope of the tests. You can also have a Common class that most of the tests should inherit from; this common class can define the whole set up for the module. For instance in `account `__." +msgid "For better readability, split your tests into multiple files depending on the scope of the tests. You can also have a Common class that most of the tests should inherit from; this common class can define the whole set up for the module. For instance in `account `__." msgstr "" #: ../../content/developer/howtos/rdtraining/E_unittest.rst:289 @@ -11017,58 +11696,58 @@ msgid "Manually create the data in your database." msgstr "" #: ../../content/developer/howtos/rdtraining/J_reports.rst:99 -msgid "Copy this `data file `__ into a new directory (data) in your estate module and copy `these lines `__ into your __manifest__.py file (you may need to create a new database to load in the demo data)." +msgid "Copy this `data file `_ into a new directory (data) in your estate module and copy `these lines `_ into your __manifest__.py file (you may need to create a new database to load in the demo data)." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:104 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:105 msgid "Before continuing, click through your data in your database and make sure your data is as expected. Of course you can add the data after you write your report code, but then you will not be able to incrementally test portions of your code as you write it. This can make checking for mistakes and debugging your code more difficult in the long run for complicated reports." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:110 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:111 msgid "Minimal Template" msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:112 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:113 msgid "A minimal viable template is viewable under the \"Minimal viable template\" section of the :ref:`reference/reports/templates` documentation. We can modify this example to build our minimal property offers template file:" msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:154 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:155 msgid "Most of the Odoo specific (i.e. non-HTML) items in our file are explained in the minimal viable template section. Some additional features in our template are:" msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:157 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:158 msgid "The use of the ``class=\"table\"`` attribute so our table has some nice formatting. Twitter Bootstrap (we're using its table class in this case) and FontAwesome (useful for adding icons) classes can be used in your report template." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:160 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:161 msgid "The use of ``t-set``, ``t-value``, ``t-foreach`` and ``t-as`` so that we can loop over all of the ``offer_ids``." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:162 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:163 msgid "If you are already familiar with website templating engines, then the QWeb directives (i.e. the `t-` commands) probably don't need much explanation and you can just look at its :ref:`documentation ` and skip ahead to the next subsection." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:166 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:167 msgid "Otherwise you are encouraged to read more about them ( `Wikipedia `__ has a good high level description), but the general idea is that QWeb provides the ability to dynamically generate web code based on Odoo data and simple commands. I.e. QWeb can access recordset data (and methods) and process simple programming operations such as setting and accessing temporary variables. For example, in the above example:" msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:172 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:173 msgid "``t-set`` creates a temporary variable called \"offers\" that has its value set by ``t-value`` to the current ``estate.property`` recordset's ``offer_ids``." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:174 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:175 msgid "the ``t-foreach`` and ``t-as`` usage is the equivalent to the Python:" msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:181 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:182 msgid "Report Action" msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:183 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:184 msgid "Now that we have a template, we need to make it accessible in our app via a ``ir.actions.report``. A practical example of ``ir.actions.report`` is `here `__ corresponding to `this template `__. Its contents are all explained in :ref:`the documentation `." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:190 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:191 msgid "An ``ir.actions.report`` is primarily used via the Print menu of a model's view. In the practical example, the ``binding_model_id`` specifies which model's views the report should show in and Odoo will auto-magically add it for you. Another common use case of the report action is to link it to a button like we learned in :ref:`howto/rdtraining/10_actions`. This is handy for reports that only make sense under specific conditions. For example, if we wanted to make a \"Final Sale\" report, then we can link it to a \"Print Sale Info\" button that appears in the form view only when the property is \"Sold\"." msgstr "" @@ -11076,43 +11755,43 @@ msgstr "" msgid "Print Menu Button" msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:202 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:203 msgid "You may have noticed or are wondered why our report template loops through a recordset. When our template is passed more than one record, it can produce one PDF report for all of the records. Using the Print menu in the list view with multiple records selected will demonstrate this." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:207 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:208 msgid "Make a Report" msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:209 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:210 msgid "Finally, you now know where to create your files and how the content of the files should look. Happy report making!" msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:211 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:212 msgid "Make a report." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:213 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:214 msgid "Add the property offers report from the minimal template subsection to the Print menu of the Property views." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:215 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:216 msgid "Improve the report by adding more data. Refer to the **Goal** of this section to see what additional data you can add and feel free to add even more." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:218 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:219 msgid "Bonus: Make an extra flexible report by adding in some logic so that when there are no offers on a property then we don't create a table and instead write something about how there are no offers yet. Hint: you will need to use ``t-if`` and ``t-else``." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:222 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:223 msgid "Remember to check that your PDF reports match your data as expected." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:226 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:227 msgid "Sub-templates" msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:230 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:231 msgid "**Goal**: at the end of this section, we will have a sub-template that we use in 2 reports." msgstr "" @@ -11120,39 +11799,39 @@ msgstr "" msgid "Report using a subtemplate" msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:236 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:237 msgid "There are two main reasons for using sub-templates. One is to make the code easier to read when working with extra long or complicated templates. The other is to reuse code where possible. Our simple property offers report is useful, but listing property offers information can be useful for more than just one report template. One example is a report that lists all of a salesman's properties' offers." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:241 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:242 msgid "See if you can understand how to call a sub-template by reading the :ref:`documentation ` on it and/or by looking at an `example `__ (remember QWeb uses the same control flows regardless if it is for a report or a view in Odoo.)" msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:246 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:247 msgid "Create and use a sub-template." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:248 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:249 msgid "Split the table portion of the offers into its own template. Remember to check that your original report still prints correctly afterwards." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:251 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:252 msgid "Add a new report for ``res.users`` that allows you to print all of the Real Estate Properties that are visible in their form view (i.e. in the \"Settings\" app). Include the offers for each of those saleman's properties in the same report. Hint: since the ``binding_model_id`` in this case will not be within the estate module, you will need to use ``ref=\"base.model_res_users\"``." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:256 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:257 msgid "Your end result should look similar to the image in the **Goal** of this section." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:258 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:259 msgid "Remember to check that your reports match your data as expected!" msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:261 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:262 msgid "Report Inheritance" msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:265 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:266 msgid "**Goal**: at the end of this section, we will inherit the property report in the ``estate_account`` module." msgstr "" @@ -11160,58 +11839,58 @@ msgstr "" msgid "An inherited report" msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:272 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:273 msgid "Inheritance in QWeb uses the same ``xpath`` elements as :ref:`views inheritance `. A QWeb template refers to its parent template in a different way though. It is even easier to do by just adding the ``inherit_id`` attribute to the ``template`` element and setting it equal to the *module.parent_template_id*." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:276 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:277 msgid "We didn't add any new fields to any of the estate models in `estate_account`, but we can still add information to our existing property report. For example, we know that any \"Sold\" properties will already have an invoice created for them, so we can add this information to our report." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:280 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:281 msgid "Inherit a report." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:282 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:283 msgid "Extend the property report to include some information about the invoice. You can look at the **Goal** of this section for inspiration (i.e. print a line when the property is Done, otherwise print nothing)." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:285 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:286 msgid "Again, remember to check that your reports match your data as expected!" msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:288 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:289 msgid "Additional Features" msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:290 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:291 msgid "All of the following extra features are described further in the :ref:`reference/reports/report` documentation, including how to implement each of them." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:294 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:295 #: ../../content/developer/howtos/web.rst:1227 msgid "Translations" msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:296 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:297 msgid "We all know Odoo is used in multiple languages thanks to automated and manual translating. QWeb reports are no exception! Note that sometimes the translations do not work properly if there are unnecessary spaces in your template's text content so try to avoid them when possible (especially leading spaces)." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:301 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:302 #: ../../content/developer/reference/backend/reports.rst:309 msgid "Reports are web pages" msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:303 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:304 msgid "You probably are tired of hearing that QWeb creates HTML, but we're saying it again! One of the neat features about reports being written in QWeb is they can be viewed within the web browser. This can be useful if you want to embed a hyperlink that leads to a specific report. Note that the usual security checks will still apply to prevent unauthorized users from accessing the reports." msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:309 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:310 #: ../../content/developer/reference/backend/reports.rst:148 msgid "Barcodes" msgstr "" -#: ../../content/developer/howtos/rdtraining/J_reports.rst:311 +#: ../../content/developer/howtos/rdtraining/J_reports.rst:312 msgid "Odoo has a built-in barcode image creator that allows for barcodes to be embedded in your reports. Check out the corresponding `code `__ to see all the supported barcode types." msgstr "" @@ -11236,7 +11915,7 @@ msgid "The documentation related to this topic can be found in :ref:`reference/v msgstr "" #: ../../content/developer/howtos/rdtraining/K_dashboard.rst:37 -msgid "You probably have already guessed that since dashboard views are an Enterprise view, they must have a dependency on an Enterprise module. The Enterprise module is ``web_dashboard``. Don't forget to add it to your manifest file! It is standard to add dashboards intended to be used as a ``view_mode`` for one of your module's models (in the ``model`` folder``) to the views directory (i.e. the same file that contains the other views for the same model)." +msgid "You probably have already guessed that since dashboard views are an Enterprise view, they must have a dependency on an Enterprise module. The Enterprise module is ``web_dashboard``. Don't forget to add it to your manifest file! It is standard to add dashboards intended to be used as a ``view_mode`` for one of your module's models (in the ``model`` folder) to the views directory (i.e. the same file that contains the other views for the same model)." msgstr "" #: ../../content/developer/howtos/rdtraining/K_dashboard.rst:43 @@ -11304,98 +11983,98 @@ msgid "At least 1 sold property and at least 1 canceled property" msgstr "" #: ../../content/developer/howtos/rdtraining/K_dashboard.rst:122 -msgid "Copy this `data file `__ into a new directory called ``data`` in your estate module and copy `these lines `__ into your __manifest__.py file (you may need to create a new database to load in the demo data)." +msgid "Copy this `data file `_ into a new directory called ``data`` in your estate module and copy `these lines `_ into your __manifest__.py file (you may need to create a new database to load in the demo data)." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:127 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:128 msgid "Click through your database data and make sure it is what you expect. Of course you can add the data after you write your dashboard code and then test that your view is working as expected." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:131 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:132 msgid "Aggregations" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:132 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:133 msgid "Building a dashboard view is very similar to what you have previously done in :ref:`howto/rdtraining/07_basicviews`. For the dashboard view, we use the `dashboard` root element and choose from its possible tags (see all the possibilities and their attributes in the :ref:`reference/views/dashboard` documentation). So a simple dashboard example is:" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:146 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:147 msgid "In this example, ```` adds styling and ```` declares an aggregation. We indicate which ``field`` we want to aggregate, what ``string`` to display with the value, and how to aggregate it with the `group_operator` attribute. The `group_operator` can use any valid PostgreSQL aggregate function plus the special Odoo defined ``count_distinct``." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:151 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:152 msgid "Hopefully you remember how to add views to a window action `view_mode` (hint, it was covered in :ref:`howto/rdtraining/06_firstui`). Now let's make some dashboards!" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:154 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:155 msgid "Make a dashboard view." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:156 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:157 msgid "Create a dashboard of aggregated values for the ``estate.property`` model. You can look at the **Goal** of this section for some inspiration. Remember to check that your statistics are calculating as you expect and note that the calculated values take into consideration any applied view filters!" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:161 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:162 msgid "Bonus: Add in some aggregations that need a `domain` to make sense (remember domains were also covered in :ref:`howto/rdtraining/07_basicviews`)." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:165 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:166 msgid "Pie Charts" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:166 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:167 msgid "Adding pie charts to dashboards is a piece of cake using the `` element. An example is:" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:176 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:177 msgid "In this example, we indicate that we're using the `pie_chart` widget with the `name` attribute, the ``title`` for the pie chart, and that we're grouping it by property type." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:179 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:180 msgid "Add some pie charts." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:181 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:182 msgid "Add the pie charts from the **Goal** of this section to your dashboard. Hint: you will need to add `'measure': selling_price` to your pie chart `attrs` if you want to show selling prices grouped by property type." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:185 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:186 msgid "Hover over and click on the pie charts to check your charts counts values and don't forget that filters will also apply to the charts." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:188 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:189 msgid "Bonus: Add a domain to your selling price pie chart to only include \"sold\" properties (i.e. not \"offer_accepted\" ones). Note that the `'` will need to be escaped since it is declared as part of the `attrs`." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:193 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:194 msgid "Subviews" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:194 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:195 msgid "Similar to how we can use the list view within the form view (we saw this automatically happen for One2many relationships in :ref:`howto/rdtraining/08_relations`), we can add other views within our dashboard view. The most commonly added are the pivot and graph views, but the cohort view is also an option. These views are covered in more depth in :ref:`howto/rdtraining/H_adv_views`. For this topic you are only required to know their names. A dashboard with only subviews is:" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:207 -msgid "The `ref` attribute can be added to `` elements to use a specific xml id for that view. If no xml id is provided for a graph or pivot view then the default view will be used. The cohort view will not work in the dashboard without a specific xml id. If you have already created some of these views then you are welcome to add them to your dashboard! Sample graph and pivot views are included in the `solution code `__ that you are welcome to use as well." +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:208 +msgid "The `ref` attribute can be added to `` elements to use a specific xml id for that view. If no xml id is provided for a graph or pivot view then the default view will be used. The cohort view will not work in the dashboard without a specific xml id. If you have already created some of these views then you are welcome to add them to your dashboard! Sample graph and pivot views are included in the `solution code `_ that you are welcome to use as well." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:215 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:216 msgid "Add subviews." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:217 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:218 msgid "Add in a graph and a pivot view to your dashboard. Try playing around with the layout of your subviews in relation to your pie charts and aggregated values and refer to the **Goal** of this section for an often used layout. Remember to check that your subviews are displaying your data as expected (and yes, they are also affected by the filters!)." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:223 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:224 msgid "SQL Views" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:227 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:228 msgid "This section expects you to have a basic knowledge of SQL. If you have little to no SQL knowledge then `this is a good tutorial to start with `__ and these `exercises `__ are good for those who need a refresher or extra practice." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:234 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:235 msgid "**Goal**: at the end of this section, we will have a new SQL view that displays different property statistics." msgstr "" @@ -11403,100 +12082,100 @@ msgstr "" msgid "SQL view" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:242 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:243 msgid "Occasionally we want to show data that goes beyond what our model already has in it. We could add a lot of stored computed or related fields (non-stored fields cannot be aggregated or displayed in pie charts), but it would be impractical to store a bunch of fields only for this purpose. We can instead add a custom SQL view to minimize the computational load and keep our model clean of unnecessary fields." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:250 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:251 msgid "We will start with the more difficult part: our special report model. This file starts the same as any other model except that we add 2 attributes ``_auto`` and ``_rec_name``::" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:262 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:263 msgid "``_auto = False`` indicates that we do not want to store the model in the database and we will create a custom table by overriding the ``BaseModel.init()`` method. ``_rec_name`` indicates which of the model's fields represents a record's name (i.e. the name that will be used in the navigation breadcrumb when opening a record's form view). In this case I left it as 'id' because our property offers don't have a name. We will need the `tools` import later (i.e. ``odoo/odoo/tools``, which is full of all sort of useful helper methods you will probably use in the future). Note that it is standard to include ``report`` in the model name." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:270 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:271 msgid "Remember your new model will need to be added to your security file like you learned in :ref:`howto/rdtraining/05_securityintro`!" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:273 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:274 msgid "Then we define the fields we need for our dashboard the same way as any other model (like you learned in :ref:`howto/rdtraining/04_basicmodel`), except that every field is ``readonly=True``. After all, our model is for readonly purposes only." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:277 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:278 msgid "Now we override the ``BaseModel.init()`` method mentioned earlier::" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:288 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:289 msgid "We use ``tools.drop_view_if_exists`` to ensure that we don't create a conflicting view and then execute the SQL query. It is standard to separate the different parts of the query to allow for easier model extension. Exactly how the query is split up across methods is not standardized, but you will often see at minimum ``_select`` and ``_from`` methods [or something similar] and of course all of these methods will return strings. The columns from the SELECT will populate our model's fields so ensure that your column names match your field names or use alias names that match." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:296 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:297 msgid "Create report model." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:298 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:299 msgid "Create a report model with the following fields:" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:301 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:302 #: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountAccountTemplate.note:1 msgid "Note" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:303 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:304 msgid "Corresponds to ``id`` of ``estate.property.offer``" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:304 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:305 msgid "offer_state" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:304 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:305 msgid "Equals ``state`` choices of ``estate.property.offer``" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:306 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:307 msgid "property_state" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:306 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:307 msgid "Equals ``state`` choices of ``estate.property``" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:307 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:308 msgid "property_type_id" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:310 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:311 msgid "and write the SQL query necessary to populate the fields (hint, you will need 2 JOINs)." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:312 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:313 msgid "You won't be able to check if your model is correct until we create a view for it, but you are welcome to check your query directly in your database to see if the results are as you expect. If you struggle with this exercise, then `here is an example `__ to reference." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:320 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:321 msgid "Now that we have our model, we can make its dashboard view. There is no difference to how its made except that its file is located in the ``report`` folder. Since it is a new model not linked to any other model, we will also have to add a new menuitem to view our dashboard. Typically SQL views are added under a first level menu called *Reporting* (because it's a report, surprise!). Do you remember how to add a ``menuitem``? If not, revisit :ref:`howto/rdtraining/06_firstui`) again." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:326 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:327 msgid "Create report view." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:328 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:329 msgid "Recreate the dashboard in the **Goal** of this section. Hint: it uses the ``formula`` element, which we did not need for our previous dashboard." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:331 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:332 msgid "Bonus: Create ``list`` and ``form`` views for your new report model so we don't have to see the ugly defaults when you click on your pie charts." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:335 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:336 msgid "Extra Tips" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:336 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:337 msgid "**Tip 1** A common mistake in SQL views is to not take into account the duplication of certain data due to table JOINs. For example, in our **Goal** we have a pie chart of the offers' property types. We may be tempted to add a similar pie chart with a domain to only include canceled properties, so we think we are only counting the number of canceled properties by property type. In reality we are still looking at all the offers per property so any property with more than 1 offer will be counted per offer. This example is easily double checked by clicking on the pie chart to see its list view:" msgstr "" @@ -11504,24 +12183,24 @@ msgstr "" msgid "Pie chart list view" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:348 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:349 msgid "But for cases such as average aggregations or using a subview such as the pivot view, it is easy to miss this mistake. It is also easy to miss this mistake when you have insufficient test data. In order to add a number of properties canceled by property type pie chart to this report, we would either have to do a hack (too advanced for this tutorial) or simply exclude it from this report." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:354 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:355 msgid "**Tip 2** If you have a field that you do not want as a measure (i.e. in your pivot or graph views), then you can add ``store=False`` to it and it will not show." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:357 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:358 msgid "**Tip 3** If you have a SQL View that depends on context then instead of overriding ``BaseModel.init()`` set the ``_table_query`` property::" msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:364 +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:365 msgid "The *select* and *from* methods remain the same." msgstr "" -#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:366 -msgid "`Here is an example `__ of a report that depends on the currently selected companies (in a multi-company environment) context to determine the currency exchange rates to use for accurately displaying amounts when the selected companies have different currencies." +#: ../../content/developer/howtos/rdtraining/K_dashboard.rst:367 +msgid "`Here is an example `__ of a report that depends on the currently selected companies (in a multi-company environment) context to determine the currency exchange rates to use for accurately displaying amounts when the selected companies have different currencies." msgstr "" #: ../../content/developer/howtos/rdtraining/L_cron.rst:7 @@ -11576,1011 +12255,1011 @@ msgstr "" msgid "Advanced O: Performances" msgstr "" -#: ../../content/developer/howtos/themes.rst:4 +#: ../../content/developer/howtos/themes.rst:5 msgid "Theme Tutorial" msgstr "" -#: ../../content/developer/howtos/themes.rst:8 -msgid "This tutorial provides a great overview of what you can do creating an Odoo theme. It is however incomplete. We are currently working on a new detailed theme tutorial, come back here soon to unleash the true power of Odoo themes!" +#: ../../content/developer/howtos/themes.rst:9 +msgid "This tutorial is outdated and won't work out of the box." msgstr "" -#: ../../content/developer/howtos/themes.rst:15 +#: ../../content/developer/howtos/themes.rst:13 msgid "Odoo celebrates freedom. Freedom for the designer to go further and freedom for the user to customize everything according to their needs." msgstr "" -#: ../../content/developer/howtos/themes.rst:18 +#: ../../content/developer/howtos/themes.rst:16 msgid "Ready to create your own theme? Great. Here are some things you should know before you begin. This tutorial is a guide to creating an Odoo theme." msgstr "" -#: ../../content/developer/howtos/themes.rst:24 +#: ../../content/developer/howtos/themes.rst:22 msgid "An introduction for web designers" msgstr "" -#: ../../content/developer/howtos/themes.rst:26 +#: ../../content/developer/howtos/themes.rst:24 msgid "If you are a web designer using Odoo for the first time, you are in the right place. This introduction will outline the basics of Odoo theme creation. Odoo’s team has created a framework that’s powerful and easy to use." msgstr "" -#: ../../content/developer/howtos/themes.rst:30 +#: ../../content/developer/howtos/themes.rst:28 msgid "From common CMS to Odoo" msgstr "" -#: ../../content/developer/howtos/themes.rst:34 +#: ../../content/developer/howtos/themes.rst:32 msgid "If you always think and work in the same way, you’ll probably get the same results. If you want something completely new, then try something different." msgstr "" -#: ../../content/developer/howtos/themes.rst:38 +#: ../../content/developer/howtos/themes.rst:36 msgid "Where is my header.php file?" msgstr "" -#: ../../content/developer/howtos/themes.rst:40 +#: ../../content/developer/howtos/themes.rst:38 msgid "This is usually the first question from a web designer used to working with Wordpress or Joomla and coming to Odoo for the first time." msgstr "" -#: ../../content/developer/howtos/themes.rst:50 +#: ../../content/developer/howtos/themes.rst:48 msgid "Indeed, when using common CMSs, you have to code several files (like header.php, page.php, post.php, etc.) in order to create a basic structure for your website. With those systems, this base structure acts as a design foundation that you have to update over time to ensure compatibility within your CMS. So, even after you have spent hours coding the files, you have not even started on the design yet." msgstr "" -#: ../../content/developer/howtos/themes.rst:52 +#: ../../content/developer/howtos/themes.rst:50 msgid "This **does not** apply to creating Odoo themes." msgstr "" -#: ../../content/developer/howtos/themes.rst:56 +#: ../../content/developer/howtos/themes.rst:54 msgid "We think that theme design should be simple (and powerful). When we created our Website Builder, we decided to start from scratch instead of relying on what already existed. This approach gave us the freedom to focus on the things that are really important for designers: styles, content and the logic behind them. No more struggling with technical stuff." msgstr "" -#: ../../content/developer/howtos/themes.rst:59 +#: ../../content/developer/howtos/themes.rst:57 msgid "Odoo default theme structure" msgstr "" -#: ../../content/developer/howtos/themes.rst:65 +#: ../../content/developer/howtos/themes.rst:63 msgid "Odoo comes with a default website structure. It is a very basic “theme” that provides minimal structure and layout. When you create a new theme, you are actually **extending** this. Indeed it’s always enabled in your setup and it acts exactly like the CMS’s base structure we mentioned above, except that you don’t have to create or maintain it. It will upgrade automatically within your Odoo installation and, since it is included in the Website Builder module, everything is smoothly integrated by default." msgstr "" -#: ../../content/developer/howtos/themes.rst:70 +#: ../../content/developer/howtos/themes.rst:68 msgid "As a result, you are totally free to focus on design while this structure does the job of providing integrations and functionality." msgstr "" -#: ../../content/developer/howtos/themes.rst:80 +#: ../../content/developer/howtos/themes.rst:78 msgid "**Main features:**" msgstr "" -#: ../../content/developer/howtos/themes.rst:82 +#: ../../content/developer/howtos/themes.rst:80 msgid "Basic layouts for pages, blog, eCommerce and much more" msgstr "" -#: ../../content/developer/howtos/themes.rst:83 +#: ../../content/developer/howtos/themes.rst:81 msgid "Website Builder integration" msgstr "" -#: ../../content/developer/howtos/themes.rst:84 +#: ../../content/developer/howtos/themes.rst:82 msgid "Basic Snippets" msgstr "" -#: ../../content/developer/howtos/themes.rst:85 +#: ../../content/developer/howtos/themes.rst:83 msgid "Automatic Sass compiling" msgstr "" -#: ../../content/developer/howtos/themes.rst:86 +#: ../../content/developer/howtos/themes.rst:84 msgid "Automatic Js and CSS minification and combination" msgstr "" -#: ../../content/developer/howtos/themes.rst:90 +#: ../../content/developer/howtos/themes.rst:88 msgid "**Main technologies:**" msgstr "" -#: ../../content/developer/howtos/themes.rst:92 +#: ../../content/developer/howtos/themes.rst:90 msgid "Twitter Bootstrap" msgstr "" -#: ../../content/developer/howtos/themes.rst:93 +#: ../../content/developer/howtos/themes.rst:91 msgid "jQuery" msgstr "" -#: ../../content/developer/howtos/themes.rst:94 +#: ../../content/developer/howtos/themes.rst:92 msgid "jQuery UI" msgstr "" -#: ../../content/developer/howtos/themes.rst:95 +#: ../../content/developer/howtos/themes.rst:93 msgid "underscore.js" msgstr "" -#: ../../content/developer/howtos/themes.rst:98 +#: ../../content/developer/howtos/themes.rst:96 msgid "Thinking \"modular\"" msgstr "" -#: ../../content/developer/howtos/themes.rst:100 +#: ../../content/developer/howtos/themes.rst:98 msgid "An Odoo theme is not a folder containing HTML or PHP files, it’s a modular framework written in XML. Never worked with XML files before? Don’t worry, after following the tutorial, you’ll be able to create your first theme with only basic knowledge of HTML." msgstr "" -#: ../../content/developer/howtos/themes.rst:102 +#: ../../content/developer/howtos/themes.rst:100 msgid "Using classical web design workflows, you usually code the layout of the entire page. The result of this is a “static” web page. You can update the content, of course, but your client will need you to work on making even basic changes." msgstr "" -#: ../../content/developer/howtos/themes.rst:104 +#: ../../content/developer/howtos/themes.rst:102 msgid "Creating themes for Odoo is a total change of perspective. Instead of defining the complete layout for a page, you can create blocks (snippets) and let the user choose where to “drag&drop” them, creating the page layout on their own. We call this modular design." msgstr "" -#: ../../content/developer/howtos/themes.rst:107 +#: ../../content/developer/howtos/themes.rst:105 msgid "Imagine an Odoo theme as a “list” of elements and options that you have to create or extend. As a designer, your goal is to style these elements in order to achieve a wonderful result, regardless of where the end user chooses to place them." msgstr "" -#: ../../content/developer/howtos/themes.rst:110 +#: ../../content/developer/howtos/themes.rst:108 msgid "Let’s take a tour of our “list” elements:" msgstr "" -#: ../../content/developer/howtos/themes.rst:117 +#: ../../content/developer/howtos/themes.rst:115 msgid "Snippets (or building-blocks)" msgstr "" -#: ../../content/developer/howtos/themes.rst:119 +#: ../../content/developer/howtos/themes.rst:117 msgid "A piece of HTML code. The user will drag&drop, modify and combine them using our built-in Website Builder interface. You can define sets of options and styles for each snippet. The user will choose from them according to their needs." msgstr "" -#: ../../content/developer/howtos/themes.rst:124 +#: ../../content/developer/howtos/themes.rst:122 msgid "Pages" msgstr "" -#: ../../content/developer/howtos/themes.rst:126 +#: ../../content/developer/howtos/themes.rst:124 msgid "These are normal web pages, except that they will be editable by the final user and that you can define an empty area that the user can “fill” by dragging snippets into it." msgstr "" -#: ../../content/developer/howtos/themes.rst:137 +#: ../../content/developer/howtos/themes.rst:135 msgid "Styles" msgstr "" -#: ../../content/developer/howtos/themes.rst:139 +#: ../../content/developer/howtos/themes.rst:137 msgid "Styles are defined using SCSS files (or you can use standard CSS files). You can define a style as **default** or **optional**. The default styles are always active in your theme, the optional styles can be enabled or disabled by the user." msgstr "" -#: ../../content/developer/howtos/themes.rst:144 +#: ../../content/developer/howtos/themes.rst:142 msgid "Functionalities" msgstr "" -#: ../../content/developer/howtos/themes.rst:146 +#: ../../content/developer/howtos/themes.rst:144 msgid "Thanks to Odoo’s modularity, everything can be personalized even more. This means there are endless possibilities for your creativity. Adding functionalities is easy and it’s simple to provide the end user with customizable options." msgstr "" -#: ../../content/developer/howtos/themes.rst:150 +#: ../../content/developer/howtos/themes.rst:148 msgid "Odoo's XML files, an overview" msgstr "" -#: ../../content/developer/howtos/themes.rst:152 +#: ../../content/developer/howtos/themes.rst:150 msgid "Any Odoo XML file starts with encoding specifications. After that, you have to write your code inside a ```` tag." msgstr "" -#: ../../content/developer/howtos/themes.rst:165 +#: ../../content/developer/howtos/themes.rst:162 msgid "Almost every element and option that you create has to be placed inside a ``