diff --git a/locale/sources/administration.pot b/locale/sources/administration.pot index f541e97a7..96e6ba04e 100644 --- a/locale/sources/administration.pot +++ b/locale/sources/administration.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Odoo saas-16.1\n" +"Project-Id-Version: Odoo saas-16.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-19 10:30+0000\n" +"POT-Creation-Date: 2024-03-08 07:55+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -412,7 +412,7 @@ msgid "Needed RAM = #worker * ( (light_worker_ratio * light_worker_ram_estimatio msgstr "" #: ../../content/administration/install/deploy.rst:225 -#: ../../content/administration/install/deploy.rst:412 +#: ../../content/administration/install/deploy.rst:413 msgid "LiveChat" msgstr "" @@ -484,340 +484,340 @@ msgstr "" msgid "in ``/etc/nginx/sites-enabled/odoo.conf`` set:" msgstr "" -#: ../../content/administration/install/deploy.rst:361 +#: ../../content/administration/install/deploy.rst:362 msgid "HTTPS Hardening" msgstr "" -#: ../../content/administration/install/deploy.rst:363 +#: ../../content/administration/install/deploy.rst:364 msgid "Add the `Strict-Transport-Security` header to all requests, in order to prevent browsers from ever sending a plain HTTP request to this domain. You will need to maintain a working HTTPS service with a valid certificate on this domain at all times, otherwise your users will see security alerts or be entirely unable to access it." msgstr "" -#: ../../content/administration/install/deploy.rst:369 +#: ../../content/administration/install/deploy.rst:370 msgid "Force HTTPS connections during a year for every visitor in NGINX with the line:" msgstr "" -#: ../../content/administration/install/deploy.rst:375 +#: ../../content/administration/install/deploy.rst:376 msgid "Additional configuration can be defined for the `session_id` cookie. The `Secure` flag can be added to ensure it is never transmitted over HTTP and `SameSite=Lax` to prevent authenticated `CSRF`_." msgstr "" -#: ../../content/administration/install/deploy.rst:386 +#: ../../content/administration/install/deploy.rst:387 msgid "Odoo as a WSGI Application" msgstr "" -#: ../../content/administration/install/deploy.rst:388 +#: ../../content/administration/install/deploy.rst:389 msgid "It is also possible to mount Odoo as a standard WSGI_ application. Odoo provides the base for a WSGI launcher script as ``odoo-wsgi.example.py``. That script should be customized (possibly after copying it from the setup directory) to correctly set the configuration directly in :mod:`odoo.tools.config` rather than through the command-line or a configuration file." msgstr "" -#: ../../content/administration/install/deploy.rst:394 +#: ../../content/administration/install/deploy.rst:395 msgid "However the WSGI server will only expose the main HTTP endpoint for the web client, website and webservice API. Because Odoo does not control the creation of workers anymore it can not setup cron or livechat workers" msgstr "" -#: ../../content/administration/install/deploy.rst:399 +#: ../../content/administration/install/deploy.rst:400 msgid "Cron Workers" msgstr "" -#: ../../content/administration/install/deploy.rst:401 +#: ../../content/administration/install/deploy.rst:402 msgid "Starting one of the built-in Odoo servers next to the WSGI server is required to process cron jobs. That server must be configured to only process crons and not HTTP requests using the :option:`--no-http ` cli option or the ``http_enable = False`` configuration file setting." msgstr "" -#: ../../content/administration/install/deploy.rst:406 +#: ../../content/administration/install/deploy.rst:407 msgid "On Linux-like systems, using the multi-processing server over the multi-threading one is recommended to benefit from better hardware usage and increased stability, i.e., using the :option:`--workers=-1 ` and :option:`--max-cron-threads=n ` cli options." msgstr "" -#: ../../content/administration/install/deploy.rst:414 +#: ../../content/administration/install/deploy.rst:415 msgid "Using a gevent-compatible WSGI server is required for the correct operation of the live chat feature. That server should be able to handle many simultaneous long-lived connections but doesn't need a lot of processing power. All requests whose path starts with ``/websocket/`` should be directed to that server. A regular (thread/process-based) WSGI server should be used for all other requests." msgstr "" -#: ../../content/administration/install/deploy.rst:420 +#: ../../content/administration/install/deploy.rst:421 msgid "The Odoo cron server can also be used to serve the live chat requests. Just drop the :option:`--no-http ` cli option from the cron server and make sure requests whose path starts with ``/websocket/`` are directed to this server, either on the :option:`--http-port ` (multi-threading server) or on the :option:`--gevent-port ` (multi-processing server)." msgstr "" -#: ../../content/administration/install/deploy.rst:429 +#: ../../content/administration/install/deploy.rst:430 msgid "Serving static files and attachments" msgstr "" -#: ../../content/administration/install/deploy.rst:431 +#: ../../content/administration/install/deploy.rst:432 msgid "For development convenience, Odoo directly serves all static files and attachments in its modules. This may not be ideal when it comes to performances, and static files should generally be served by a static HTTP server." msgstr "" -#: ../../content/administration/install/deploy.rst:436 +#: ../../content/administration/install/deploy.rst:437 msgid "Serving static files" msgstr "" -#: ../../content/administration/install/deploy.rst:438 +#: ../../content/administration/install/deploy.rst:439 msgid "Odoo static files are located in each module's :file:`static/` folder, so static files can be served by intercepting all requests to :samp:`/{MODULE}/static/{FILE}`, and looking up the right module (and file) in the various addons paths." msgstr "" -#: ../../content/administration/install/deploy.rst:442 +#: ../../content/administration/install/deploy.rst:443 msgid "It is recommended to set the ``Content-Security-Policy: default-src 'none'`` header on all images delivered by the web server. It is not strictly necessary as users cannot modify/inject content inside of modules' :file:`static/` folder and existing images are final (they do not fetch new resources by themselves). However, it is good practice." msgstr "" -#: ../../content/administration/install/deploy.rst:447 +#: ../../content/administration/install/deploy.rst:448 msgid "Using the above NGINX (https) configuration, the following ``map`` and ``location`` blocks should be added to serve static files via NGINX." msgstr "" -#: ../../content/administration/install/deploy.rst:474 +#: ../../content/administration/install/deploy.rst:475 msgid "The actual ``root`` and ``try_files`` directives are dependant on your installation, specifically on your :option:`--addons-path `." msgstr "" -#: ../../content/administration/install/deploy.rst:481 +#: ../../content/administration/install/deploy.rst:482 msgid "Debian package" msgstr "" -#: ../../content/administration/install/deploy.rst:483 +#: ../../content/administration/install/deploy.rst:484 msgid "Say Odoo has been installed via the **debian packages** for Community and Enterprise, and that the :option:`--addons-path ` is ``'/usr/lib/python3/dist-packages/odoo/addons'``." msgstr "" -#: ../../content/administration/install/deploy.rst:487 -#: ../../content/administration/install/deploy.rst:501 +#: ../../content/administration/install/deploy.rst:488 +#: ../../content/administration/install/deploy.rst:502 msgid "The ``root`` and ``try_files`` should be:" msgstr "" -#: ../../content/administration/install/deploy.rst:494 +#: ../../content/administration/install/deploy.rst:495 msgid "Git sources" msgstr "" -#: ../../content/administration/install/deploy.rst:496 +#: ../../content/administration/install/deploy.rst:497 msgid "Say Odoo has been installed via the **sources**, that both the Community and Enterprise git repositories were cloned in :file:`/opt/odoo/community` and :file:`/opt/odoo/enterprise` respectively, and that the :option:`--addons-path ` is ``'/opt/odoo/community/odoo/addons,/opt/odoo/community/addons,/opt/odoo/enterprise'``." msgstr "" -#: ../../content/administration/install/deploy.rst:509 +#: ../../content/administration/install/deploy.rst:510 msgid "Serving attachments" msgstr "" -#: ../../content/administration/install/deploy.rst:511 +#: ../../content/administration/install/deploy.rst:512 msgid "Attachments are files stored in the filestore which access is regulated by Odoo. They cannot be directly accessed via a static web server as accessing them requires multiple lookups in the database to determine where the files are stored and whether the current user can access them or not." msgstr "" -#: ../../content/administration/install/deploy.rst:516 +#: ../../content/administration/install/deploy.rst:517 msgid "Nevertheless, once the file has been located and the access rights verified by Odoo, it is a good idea to serve the file using the static web server instead of Odoo. For Odoo to delegate serving files to the static web server, the `X-Sendfile `_ (apache) or `X-Accel `_ (nginx) extensions must be enabled and configured on the static web server. Once it is set up, start Odoo with the :option:`--x-sendfile ` CLI flag (this unique flag is used for both X-Sendfile and X-Accel)." msgstr "" -#: ../../content/administration/install/deploy.rst:526 +#: ../../content/administration/install/deploy.rst:527 msgid "The X-Sendfile extension for apache (and compatible web servers) does not require any supplementary configuration." msgstr "" -#: ../../content/administration/install/deploy.rst:528 +#: ../../content/administration/install/deploy.rst:529 msgid "The X-Accel extension for NGINX **does** require the following additionnal configuration:" msgstr "" -#: ../../content/administration/install/deploy.rst:537 +#: ../../content/administration/install/deploy.rst:538 msgid "In case you don't know what is the path to your filestore, start Odoo with the :option:`--x-sendfile ` option and navigate to the ``/web/filestore`` URL directly via Odoo (don't navigate to the URL via NGINX). This logs a warnings, the message contains the configuration you need." msgstr "" -#: ../../content/administration/install/deploy.rst:546 +#: ../../content/administration/install/deploy.rst:547 msgid "Security" msgstr "" -#: ../../content/administration/install/deploy.rst:548 +#: ../../content/administration/install/deploy.rst:549 msgid "For starters, keep in mind that securing an information system is a continuous process, not a one-shot operation. At any moment, you will only be as secure as the weakest link in your environment." msgstr "" -#: ../../content/administration/install/deploy.rst:552 +#: ../../content/administration/install/deploy.rst:553 msgid "So please do not take this section as the ultimate list of measures that will prevent all security problems. It's only intended as a summary of the first important things you should be sure to include in your security action plan. The rest will come from best security practices for your operating system and distribution, best practices in terms of users, passwords, and access control management, etc." msgstr "" -#: ../../content/administration/install/deploy.rst:558 +#: ../../content/administration/install/deploy.rst:559 msgid "When deploying an internet-facing server, please be sure to consider the following security-related topics:" msgstr "" -#: ../../content/administration/install/deploy.rst:561 +#: ../../content/administration/install/deploy.rst:562 msgid "Always set a strong super-admin admin password, and restrict access to the database management pages as soon as the system is set up. See :ref:`db_manager_security`." msgstr "" -#: ../../content/administration/install/deploy.rst:564 +#: ../../content/administration/install/deploy.rst:565 msgid "Choose unique logins and strong passwords for all administrator accounts on all databases. Do not use 'admin' as the login. Do not use those logins for day-to-day operations, only for controlling/managing the installation. *Never* use any default passwords like admin/admin, even for test/staging databases." msgstr "" -#: ../../content/administration/install/deploy.rst:569 +#: ../../content/administration/install/deploy.rst:570 msgid "Do **not** install demo data on internet-facing servers. Databases with demo data contain default logins and passwords that can be used to get into your systems and cause significant trouble, even on staging/dev systems." msgstr "" -#: ../../content/administration/install/deploy.rst:573 +#: ../../content/administration/install/deploy.rst:574 msgid "Use appropriate database filters ( :option:`--db-filter `) to restrict the visibility of your databases according to the hostname. See :ref:`db_filter`. You may also use :option:`-d ` to provide your own (comma-separated) list of available databases to filter from, instead of letting the system fetch them all from the database backend." msgstr "" -#: ../../content/administration/install/deploy.rst:580 +#: ../../content/administration/install/deploy.rst:581 msgid "Once your ``db_name`` and ``db_filter`` are configured and only match a single database per hostname, you should set ``list_db`` configuration option to ``False``, to prevent listing databases entirely, and to block access to the database management screens (this is also exposed as the :option:`--no-database-list ` command-line option)" msgstr "" -#: ../../content/administration/install/deploy.rst:586 +#: ../../content/administration/install/deploy.rst:587 msgid "Make sure the PostgreSQL user (:option:`--db_user `) is *not* a super-user, and that your databases are owned by a different user. For example they could be owned by the ``postgres`` super-user if you are using a dedicated non-privileged ``db_user``. See also :ref:`setup/deploy/odoo`." msgstr "" -#: ../../content/administration/install/deploy.rst:591 +#: ../../content/administration/install/deploy.rst:592 msgid "Keep installations updated by regularly installing the latest builds, either via GitHub or by downloading the latest version from https://www.odoo.com/page/download or http://nightly.odoo.com" msgstr "" -#: ../../content/administration/install/deploy.rst:595 +#: ../../content/administration/install/deploy.rst:596 msgid "Configure your server in multi-process mode with proper limits matching your typical usage (memory/CPU/timeouts). See also :ref:`builtin_server`." msgstr "" -#: ../../content/administration/install/deploy.rst:598 +#: ../../content/administration/install/deploy.rst:599 msgid "Run Odoo behind a web server providing HTTPS termination with a valid SSL certificate, in order to prevent eavesdropping on cleartext communications. SSL certificates are cheap, and many free options exist. Configure the web proxy to limit the size of requests, set appropriate timeouts, and then enable the :option:`proxy mode ` option. See also :ref:`https_proxy`." msgstr "" -#: ../../content/administration/install/deploy.rst:605 +#: ../../content/administration/install/deploy.rst:606 msgid "If you need to allow remote SSH access to your servers, make sure to set a strong password for **all** accounts, not just `root`. It is strongly recommended to entirely disable password-based authentication, and only allow public key authentication. Also consider restricting access via a VPN, allowing only trusted IPs in the firewall, and/or running a brute-force detection system such as `fail2ban` or equivalent." msgstr "" -#: ../../content/administration/install/deploy.rst:611 +#: ../../content/administration/install/deploy.rst:612 msgid "Consider installing appropriate rate-limiting on your proxy or firewall, to prevent brute-force attacks and denial of service attacks. See also :ref:`login_brute_force` for specific measures." msgstr "" -#: ../../content/administration/install/deploy.rst:615 +#: ../../content/administration/install/deploy.rst:616 msgid "Many network providers provide automatic mitigation for Distributed Denial of Service attacks (DDOS), but this is often an optional service, so you should consult with them." msgstr "" -#: ../../content/administration/install/deploy.rst:619 +#: ../../content/administration/install/deploy.rst:620 msgid "Whenever possible, host your public-facing demo/test/staging instances on different machines than the production ones. And apply the same security precautions as for production." msgstr "" -#: ../../content/administration/install/deploy.rst:623 +#: ../../content/administration/install/deploy.rst:624 msgid "If your public-facing Odoo server has access to sensitive internal network resources or services (e.g. via a private VLAN), implement appropriate firewall rules to protect those internal resources. This will ensure that the Odoo server cannot be used accidentally (or as a result of malicious user actions) to access or disrupt those internal resources. Typically this can be done by applying an outbound default DENY rule on the firewall, then only explicitly authorizing access to internal resources that the Odoo server needs to access. `Systemd IP traffic access control `_ may also be useful to implement per-process network access control." msgstr "" -#: ../../content/administration/install/deploy.rst:634 +#: ../../content/administration/install/deploy.rst:635 msgid "If your public-facing Odoo server is behind a Web Application Firewall, a load-balancer, a transparent DDoS protection service (like CloudFlare) or a similar network-level device, you may wish to avoid direct access to the Odoo system. It is generally difficult to keep the endpoint IP addresses of your Odoo servers secret. For example they can appear in web server logs when querying public systems, or in the headers of emails posted from Odoo. In such a situation you may want to configure your firewall so that the endpoints are not accessible publicly except from the specific IP addresses of your WAF, load-balancer or proxy service. Service providers like CloudFlare usually maintain a public list of their IP address ranges for this purpose." msgstr "" -#: ../../content/administration/install/deploy.rst:645 +#: ../../content/administration/install/deploy.rst:646 msgid "If you are hosting multiple customers, isolate customer data and files from each other using containers or appropriate \"jail\" techniques." msgstr "" -#: ../../content/administration/install/deploy.rst:648 +#: ../../content/administration/install/deploy.rst:649 msgid "Setup daily backups of your databases and filestore data, and copy them to a remote archiving server that is not accessible from the server itself." msgstr "" -#: ../../content/administration/install/deploy.rst:651 +#: ../../content/administration/install/deploy.rst:652 msgid "Deploying Odoo on Linux is strongly recommended over Windows. Should you choose nevertheless to deploy on a Windows platform, a thorough security hardening review of the server should be conducted and is outside of the scope of this guide." msgstr "" -#: ../../content/administration/install/deploy.rst:659 +#: ../../content/administration/install/deploy.rst:660 msgid "Blocking Brute Force Attacks" msgstr "" -#: ../../content/administration/install/deploy.rst:661 +#: ../../content/administration/install/deploy.rst:662 msgid "For internet-facing deployments, brute force attacks on user passwords are very common, and this threat should not be neglected for Odoo servers. Odoo emits a log entry whenever a login attempt is performed, and reports the result: success or failure, along with the target login and source IP." msgstr "" -#: ../../content/administration/install/deploy.rst:665 +#: ../../content/administration/install/deploy.rst:666 msgid "The log entries will have the following form." msgstr "" -#: ../../content/administration/install/deploy.rst:667 +#: ../../content/administration/install/deploy.rst:668 msgid "Failed login::" msgstr "" -#: ../../content/administration/install/deploy.rst:671 +#: ../../content/administration/install/deploy.rst:672 msgid "Successful login::" msgstr "" -#: ../../content/administration/install/deploy.rst:676 +#: ../../content/administration/install/deploy.rst:677 msgid "These logs can be easily analyzed by an intrusion prevention system such as `fail2ban`." msgstr "" -#: ../../content/administration/install/deploy.rst:678 +#: ../../content/administration/install/deploy.rst:679 msgid "For example, the following fail2ban filter definition should match a failed login::" msgstr "" -#: ../../content/administration/install/deploy.rst:685 +#: ../../content/administration/install/deploy.rst:686 msgid "This could be used with a jail definition to block the attacking IP on HTTP(S)." msgstr "" -#: ../../content/administration/install/deploy.rst:687 +#: ../../content/administration/install/deploy.rst:688 msgid "Here is what it could look like for blocking the IP for 15 minutes when 10 failed login attempts are detected from the same IP within 1 minute::" msgstr "" -#: ../../content/administration/install/deploy.rst:701 +#: ../../content/administration/install/deploy.rst:702 msgid "Database Manager Security" msgstr "" -#: ../../content/administration/install/deploy.rst:703 +#: ../../content/administration/install/deploy.rst:704 msgid ":ref:`setup/deploy/odoo` mentioned ``admin_passwd`` in passing." msgstr "" -#: ../../content/administration/install/deploy.rst:705 +#: ../../content/administration/install/deploy.rst:706 msgid "This setting is used on all database management screens (to create, delete, dump or restore databases)." msgstr "" -#: ../../content/administration/install/deploy.rst:708 +#: ../../content/administration/install/deploy.rst:709 msgid "If the management screens must not be accessible at all, you should set ``list_db`` configuration option to ``False``, to block access to all the database selection and management screens." msgstr "" -#: ../../content/administration/install/deploy.rst:714 +#: ../../content/administration/install/deploy.rst:715 msgid "It is strongly recommended to disable the Database Manager for any internet-facing system! It is meant as a development/demo tool, to make it easy to quickly create and manage databases. It is not designed for use in production, and may even expose dangerous features to attackers. It is also not designed to handle large databases, and may trigger memory limits." msgstr "" -#: ../../content/administration/install/deploy.rst:720 +#: ../../content/administration/install/deploy.rst:721 msgid "On production systems, database management operations should always be performed by the system administrator, including provisioning of new databases and automated backups." msgstr "" -#: ../../content/administration/install/deploy.rst:723 +#: ../../content/administration/install/deploy.rst:724 msgid "Be sure to setup an appropriate ``db_name`` parameter (and optionally, ``db_filter`` too) so that the system can determine the target database for each request, otherwise users will be blocked as they won't be allowed to choose the database themselves." msgstr "" -#: ../../content/administration/install/deploy.rst:728 +#: ../../content/administration/install/deploy.rst:729 msgid "If the management screens must only be accessible from a selected set of machines, use the proxy server's features to block access to all routes starting with ``/web/database`` except (maybe) ``/web/database/selector`` which displays the database-selection screen." msgstr "" -#: ../../content/administration/install/deploy.rst:732 +#: ../../content/administration/install/deploy.rst:733 msgid "If the database-management screen should be left accessible, the ``admin_passwd`` setting must be changed from its ``admin`` default: this password is checked before allowing database-alteration operations." msgstr "" -#: ../../content/administration/install/deploy.rst:736 +#: ../../content/administration/install/deploy.rst:737 msgid "It should be stored securely, and should be generated randomly e.g." msgstr "" -#: ../../content/administration/install/deploy.rst:742 +#: ../../content/administration/install/deploy.rst:743 msgid "which will generate a 32 characters pseudorandom printable string." msgstr "" -#: ../../content/administration/install/deploy.rst:745 +#: ../../content/administration/install/deploy.rst:746 msgid "Supported Browsers" msgstr "" -#: ../../content/administration/install/deploy.rst:747 +#: ../../content/administration/install/deploy.rst:748 msgid "Odoo supports all the major desktop and mobile browsers available on the market, as long as they are supported by their publishers." msgstr "" -#: ../../content/administration/install/deploy.rst:750 +#: ../../content/administration/install/deploy.rst:751 msgid "Here are the supported browsers:" msgstr "" -#: ../../content/administration/install/deploy.rst:752 +#: ../../content/administration/install/deploy.rst:753 msgid "Google Chrome" msgstr "" -#: ../../content/administration/install/deploy.rst:753 +#: ../../content/administration/install/deploy.rst:754 msgid "Mozilla Firefox" msgstr "" -#: ../../content/administration/install/deploy.rst:754 +#: ../../content/administration/install/deploy.rst:755 msgid "Microsoft Edge" msgstr "" -#: ../../content/administration/install/deploy.rst:755 +#: ../../content/administration/install/deploy.rst:756 msgid "Apple Safari" msgstr "" -#: ../../content/administration/install/deploy.rst:757 +#: ../../content/administration/install/deploy.rst:758 msgid "Please make sure your browser is up-to-date and still supported by its publisher before filing a bug report." msgstr "" -#: ../../content/administration/install/deploy.rst:762 +#: ../../content/administration/install/deploy.rst:763 msgid "Since Odoo 13.0, ES6 is supported. Therefore, IE support is dropped." msgstr "" -#: ../../content/administration/install/deploy.rst:765 +#: ../../content/administration/install/deploy.rst:766 msgid "to have multiple Odoo installations use the same PostgreSQL database, or to provide more computing resources to both software." msgstr "" -#: ../../content/administration/install/deploy.rst:768 +#: ../../content/administration/install/deploy.rst:769 msgid "technically a tool like socat_ can be used to proxy UNIX sockets across networks, but that is mostly for software which can only be used over UNIX sockets" msgstr "" -#: ../../content/administration/install/deploy.rst:772 +#: ../../content/administration/install/deploy.rst:773 msgid "or be accessible only over an internal packet-switched network, but that requires secured switches, protections against `ARP spoofing`_ and precludes usage of WiFi. Even over secure packet-switched networks, deployment over HTTPS is recommended, and possible costs are lowered as \"self-signed\" certificates are easier to deploy on a controlled environment than over the internet." msgstr "" @@ -983,8 +983,8 @@ msgid "To quickly try out Odoo, shared `demo `_ instances msgstr "" #: ../../content/administration/install/online.rst:14 -#: ../../content/administration/maintain/domain_names.rst:166 -#: ../../content/administration/maintain/domain_names.rst:236 +#: ../../content/administration/maintain/domain_names.rst:156 +#: ../../content/administration/maintain/domain_names.rst:210 #: ../../content/administration/maintain/supported_versions.rst:29 #: ../../content/administration/upgrade.rst:90 #: ../../content/administration/upgrade.rst:307 @@ -1020,7 +1020,7 @@ msgid "Official **Community** and **Enterprise** packages can be downloaded from msgstr "" #: ../../content/administration/install/packages.rst:19 -msgid "It is required to be logged in as a paying customer or partner to download the Enterprise packages." +msgid "It is required to be logged in as a paying on-premise customer or partner to download the Enterprise packages." msgstr "" #: ../../content/administration/install/packages.rst:25 @@ -1359,7 +1359,7 @@ msgid "Using **distribution packages** is the preferred way of installing depend msgstr "" #: ../../content/administration/install/source.rst:276 -msgid "For Debian-based systems, the packages are listed in the `debian/control `_ file of the Odoo sources." +msgid "For Debian-based systems, the packages are listed in the `debian/control `_ file of the Odoo sources." msgstr "" #: ../../content/administration/install/source.rst:279 @@ -1569,7 +1569,7 @@ msgid "The :guilabel:`API permissions` should be set next. Odoo will need specif msgstr "" #: ../../content/administration/maintain/azure_oauth.rst:55 -msgid "In the search bar, search for the following :guilabel:`Deregulated permissions` and click :guilabel:`Add permissions` for each one:" +msgid "In the search bar, search for the following :guilabel:`Delegated permissions` and click :guilabel:`Add permissions` for each one:" msgstr "" #: ../../content/administration/maintain/azure_oauth.rst:58 @@ -1878,203 +1878,191 @@ msgid "Domain names" msgstr "" #: ../../content/administration/maintain/domain_names.rst:5 -msgid "A **domain name** works as an address for your website. It makes the Internet much more accessible as it allows users to type a meaningful web address, such as ``www.odoo.com``, rather than its server's IP address with a series of numbers." +msgid "Domain names are text-based addresses identifying online locations, such as websites. They provide a more memorable and recognizable way for people to navigate the internet than numerical IP addresses." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:9 -msgid "You can use a custom domain name to access your Odoo database and websites:" +#: ../../content/administration/maintain/domain_names.rst:8 +msgid "**Odoo Online** and **Odoo.sh** databases use a **subdomain** of the `odoo.com` **domain** by default (e.g., `mycompany.odoo.com`)." msgstr "" #: ../../content/administration/maintain/domain_names.rst:11 -msgid "By :ref:`registering a free domain name with Odoo ` (for Odoo Online databases)" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:13 -msgid "By :ref:`configuring a custom domain that you already own `." +msgid "However, you can use a custom domain name instead by :ref:`registering a free domain name ` (only available for Odoo Online databases) or by :ref:`configuring a domain name you already own `." msgstr "" #: ../../content/administration/maintain/domain_names.rst:16 -msgid "Odoo Online and Odoo.sh databases, including their websites, use by default a subdomain of ``odoo.com`` for both the URL and the emails (e.g., ``https://example.odoo.com``)." +msgid "`Odoo Tutorials: Register a free domain name [video] `_" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:20 -msgid "Odoo offers a :ref:`free custom domain name ` to all Odoo Online databases for one year. Visitors can then access your website with an address such as ``www.example.com`` rather than the default ``example.odoo.com``." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:25 -msgid "`Odoo Tutorials: Register a Free Domain Name `_" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:27 -msgid "`Odoo Quick Tips: Get a free domain name! `_" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:32 -msgid "About domain names" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:34 -msgid "Having a **good domain name** is as important to your branding as the name of your business or organization as it is the first thing your visitors will notice. We recommend you keep them *simple, short, easy to remember and spell*." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:38 -msgid "A **subdomain** is a domain that is a part of another domain. It often refers to the additional part that comes before the main domain name. Traditionally, most websites use the ``www.`` subdomain, but any string of letters can be used as well. You can use subdomains to direct your visitors to other websites than your main website or to specific pages (e.g., ``experience.odoo.com`` points to a specific page.)" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:44 -msgid "All domain names are referenced in the **Domain Name System**, or **DNS**, which works as a giant directory for the Internet. There are many DNS servers, so any modification to the DNS can take up to 72 hours to propagate worldwide on all servers." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:51 -msgid "Indexing of domain names by search engines" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:53 -msgid "Search engines, such as Google and Bing, rely on web crawlers (:dfn:`robots that explore and analyze the web`) to index all websites and their related domain names. These crawlers discover new URLs thanks to links on known web pages. As a result, search engines should index domain names automatically after a while, as long as their URLs are mentioned elsewhere on the Internet." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:58 -msgid "Improving the appearance and positioning of web pages on search engines is a practice named \"Search Engine Optimization\" (SEO)." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:62 -msgid "Adding relevant content, optimizing metadata, and building high-quality backlinks can all help improve a website's search engine visibility." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:65 -msgid "Some search engines provide tools for web admins, such as `Google Search Console `_ and `Bing Webmaster Tools `_, to help you analyze and improve your page ranking. To use these services, you must prove that you are the owner of your domain name. One way to verify the ownership of your domain name is by adding a DNS record. You can do this for :ref:`domain names registered with Odoo ` and for domain names managed by other providers." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:74 -msgid ":doc:`/applications/websites/website/pages/seo`" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:75 -msgid "`Google Search Console Help - Verify your site ownership `_" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:76 -msgid "`Bing Webmaster Tools - Add and Verify site `_" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:81 +#: ../../content/administration/maintain/domain_names.rst:22 msgid "Register a free domain name with Odoo" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:83 -msgid "You can register a domain name for your Odoo Online database directly from Odoo Website or your database manager." +#: ../../content/administration/maintain/domain_names.rst:24 +msgid "To register a one-year free domain name for your Odoo Online database, sign in to your account and go to the `database manager `_. Click the gear icon (:guilabel:`⚙️`) next to the database name and select :guilabel:`Domain Names`." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:87 -msgid "Your domain name is **free for one year** if you register it with Odoo!" +#: ../../content/administration/maintain/domain_names.rst:-1 +msgid "Accessing a database's domain names configuration" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:88 -msgid "The domain name is registered with `Gandi `_, the domain name registrar." +#: ../../content/administration/maintain/domain_names.rst:31 +msgid "Search for the desired domain name and check its availability." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:90 -msgid "You are the owner of the domain name and can use it for other purposes." +#: ../../content/administration/maintain/domain_names.rst:-1 +msgid "Searching for an available domain name" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:91 -msgid "Odoo manages payment and technical support for you." +#: ../../content/administration/maintain/domain_names.rst:37 +msgid "Ensure the Website app is installed if the domain name registration option does not appear." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:92 -msgid "This offer doesn't include any mailbox. However, you can :ref:`configure your MX records ` to use your own email server or solution such as Google Workspace." +#: ../../content/administration/maintain/domain_names.rst:39 +msgid "Select the desired domain name, fill in the :guilabel:`Domain Owner` form, and click :guilabel:`Register`. The chosen domain name is directly linked to the database, but you still need to :ref:`map your domain name to your Odoo website `." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:-1 +msgid "Filling in the domain owner information" +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:47 +msgid "A verification email from `noreply@domainnameverification.net` will be sent to the email address provided in the :guilabel:`Domain Owner` form. It is essential to verify your email address to keep the domain active and receive the renewal quote before expiration." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:51 +msgid "The domain name registration is free for the first year. After this period, Odoo will continue to manage the domain in partnership with **Gandi.net**, the domain name registrar, and you will be charged `Gandi.net's renewal rate `_. Odoo sends a renewal quotation every year to the email address mentioned in the :guilabel:`Domain Owner` form several weeks before the expiration date of the domain. The domain is renewed automatically when the quotation is confirmed." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:59 +msgid "The offer is only available for **Odoo Online** databases." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:60 +msgid "The offer is limited to **one** domain name per client." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:61 +msgid "The offer is limited to the registration of a **new** domain name." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:62 +msgid "The offer is available to *One App Free* plans. Ensure that your website contains enough original content for Odoo to verify that your request is legitimate and respects `Odoo's Acceptable Use Policy `_. Given the high number of requests, it can take Odoo several days to review them." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:70 +msgid "DNS records" +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:72 +msgid "To manage your free domain name :abbr:`DNS (domain name system)` records, open the `database manager `_, click the gear icon (:guilabel:`⚙️`) next to the database name, select :guilabel:`Domain Names`, and click :guilabel:`DNS`." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:76 +msgid ":guilabel:`A`: the A record holds the IP address of the domain. It is automatically created and **cannot** be edited or deleted." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:78 +msgid ":guilabel:`CNAME`: CNAME records forward one domain or subdomain to another domain. One is automatically created to map the `www.` subdomain to the database. If the database is renamed, the CNAME record **must** also be renamed." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:81 +msgid ":guilabel:`MX`: MX records instruct servers on where to deliver emails." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:82 +msgid ":guilabel:`TXT`: TXT records can be used for different purposes (e.g., to verify domain name ownership)." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:85 +msgid "Any modification to the DNS records can take up to **72 hours** to propagate worldwide on all servers." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:89 +msgid "`Submit a support ticket `_ if you need assistance to manage your domain name." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:93 +msgid "Mailbox" msgstr "" #: ../../content/administration/maintain/domain_names.rst:95 -msgid "To do so, go to :menuselection:`Website --> Domain Name`. Alternatively, open your `database manager `_, click on the :guilabel:`settings` button next to your database, then on :guilabel:`Domain names`." +msgid "The one-year free domain name offer does **not** include a mailbox. There are two options to link your domain name with a mailbox." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:-1 -msgid "Clicking on Domain Names from an Odoo website" +#: ../../content/administration/maintain/domain_names.rst:99 +msgid "Use a subdomain" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:103 -msgid "Search for the domain name of your choice to check its availability, then select the one you want to register for your website." +#: ../../content/administration/maintain/domain_names.rst:101 +msgid "You can create a subdomain (e.g., `subdomain.yourdomain.com`) to use as an alias domain for the database. It allows users to create records in the database from emails received on their `email@subdomain.yourdomain.com` alias." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:-1 -msgid "The search of the domain name example.com shows which associated domains are available." +#: ../../content/administration/maintain/domain_names.rst:105 +msgid "To do so, open the `database manager `_, click the gear icon (:guilabel:`⚙️`) next to the database name, and go to :menuselection:`Domain Names --> DNS --> Add DNS record --> CNAME`. Next, enter the desired subdomain in the :guilabel:`Name` field (e.g., `subdomain`), the original database domain with a period at the end (e.g., `mycompany.odoo.com.`) in the :guilabel:`Content` field, and click :guilabel:`Add record`." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:110 -msgid "Next, fill in the form with your information to become the domain name owner." +#: ../../content/administration/maintain/domain_names.rst:111 +msgid "Then, add the alias domain as your *own domain* by clicking :guilabel:`Use my own domain`, entering the alias domain (e.g., `subdomain.yourdomain.com`), clicking :guilabel:`Verify`, and then :guilabel:`I confirm, it's done`." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:112 -msgid "Your domain name is directly linked to your database, but you still have to :ref:`map your domain name with your website `." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:116 -msgid "Free domain names are also available for free Odoo Online databases (if you installed one app only, for example). In this case, Odoo reviews your request and your website to avoid abuse. This process can take several days due to the success of the offer." +#: ../../content/administration/maintain/domain_names.rst:115 +msgid "Finally, go to your database and open the :guilabel:`Settings`. Under the :guilabel:`Alias Domain` field, enter the alias domain (e.g., `subdomain.yourdomain.com`) and click :guilabel:`Save`." msgstr "" #: ../../content/administration/maintain/domain_names.rst:119 -msgid "This is not available for Odoo.sh databases yet." +msgid "Use an external email provider" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:124 -msgid "Manage your domain name registered with Odoo" +#: ../../content/administration/maintain/domain_names.rst:121 +msgid "To use an external email provider, you should configure an MX record. To do so, open the `database manager `_, click the gear icon (:guilabel:`⚙️`) next to the database name, click :menuselection:`Domain Names --> DNS --> Add DNS record --> MX`. The values you should enter for the :guilabel:`Name`, :guilabel:`Content`, and :guilabel:`Priority` fields depend on the external email provider." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:126 -msgid "To manage the DNS records of your domain name registered with Odoo or to visualize the contacts associated with it, open your `database manager `_, click on the :guilabel:`settings` button next to your database, on :guilabel:`Domain names`, and then on :guilabel:`Contacts` or :guilabel:`DNS`." +#: ../../content/administration/maintain/domain_names.rst:128 +msgid "`Google Workspace: MX record values `_" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:-1 -msgid "Management of the domain names linked to an Odoo database" +#: ../../content/administration/maintain/domain_names.rst:129 +msgid "`Outlook and Exchange Online: Add an MX record for email `_" +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:134 +msgid "Configure an existing domain name" msgstr "" #: ../../content/administration/maintain/domain_names.rst:136 -msgid "Please `submit a support ticket `_ if you need further assistance to manage your domain name." +msgid "If you already have a domain name, you can use it for your Odoo website." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:139 +msgid "It is strongly recommended to follow **in order** these three steps to avoid any :ref:`SSL certificate validation ` issues:" msgstr "" #: ../../content/administration/maintain/domain_names.rst:142 -msgid "Configure your existing domain name" +msgid ":ref:`Add a CNAME record `" +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:143 +msgid ":ref:`Map your domain name to your Odoo database `" msgstr "" #: ../../content/administration/maintain/domain_names.rst:144 -msgid "If you already own a domain name, you can use it to point to your website." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:146 -msgid "To avoid any issue with the :ref:`SSL certificate validation `, we highly recommend that you proceed with the following actions in this order:" +msgid ":ref:`Map your domain name to your Odoo website `" msgstr "" #: ../../content/administration/maintain/domain_names.rst:149 -msgid ":ref:`Add a CNAME record ` on your domain name's DNS zone." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:150 -msgid ":ref:`Map your domain name with your Odoo database `." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:151 -msgid ":ref:`Map your domain name with your Odoo website `." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:156 msgid "Add a CNAME record" msgstr "" +#: ../../content/administration/maintain/domain_names.rst:151 +msgid "Creating a CNAME record to forward your domain name to the address of your Odoo database is required." +msgstr "" + #: ../../content/administration/maintain/domain_names.rst:158 -msgid "A **CNAME record** is a type of DNS record that points to the domain of another website rather than directly to an IP address." +msgid "The CNAME record's target address should be your database's address as defined at its creation (e.g., `mycompany.odoo.com`)." msgstr "" #: ../../content/administration/maintain/domain_names.rst:161 -msgid "You need a CNAME record that points to your Odoo database. The requirements are detailed in your database manager." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:168 -msgid "The target address is the current address of your database, as defined at its creation (e.g., ``example.odoo.com``)" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:171 -#: ../../content/administration/maintain/domain_names.rst:250 +#: ../../content/administration/maintain/domain_names.rst:220 #: ../../content/administration/maintain/supported_versions.rst:30 #: ../../content/administration/odoo_sh.rst:5 #: ../../content/administration/upgrade.rst:120 @@ -2082,245 +2070,164 @@ msgstr "" msgid "Odoo.sh" msgstr "" +#: ../../content/administration/maintain/domain_names.rst:163 +msgid "The CNAME record's target address can be the project's main address, which can be found on Odoo.sh by going to :menuselection:`Settings --> Project Name`, or a specific branch (production, staging or development) by going to :menuselection:`Branches --> select the branch --> Settings --> Custom domains`, and clicking :guilabel:`How to set up my domain?`. A message indicates which address your CNAME record should target." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:169 +msgid "The specific instructions depend on your DNS hosting service." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:172 +msgid "`GoDaddy: Add a CNAME record `_" +msgstr "" + #: ../../content/administration/maintain/domain_names.rst:173 -msgid "Your project's main address is defined in :menuselection:`Settings --> Project Name`." +msgid "`Namecheap: How to create a CNAME record for your domain `_" +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:174 +msgid "`OVHcloud: Add a new DNS record `_" msgstr "" #: ../../content/administration/maintain/domain_names.rst:175 -msgid "If you want to target a specific branch (production, staging or development), go to :menuselection:`Branches --> select your branch --> Settings --> Custom domains`, and click on :guilabel:`How to set up my domain?`. A message indicates which address your CNAME record should target." +msgid "`Cloudflare: Manage DNS records `_" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:180 -#: ../../content/administration/maintain/domain_names.rst:222 -msgid "Open your domain name's manager dashboard." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:181 -msgid "Open the **DNS zone** management page for the domain name you want to configure." +#: ../../content/administration/maintain/domain_names.rst:178 +msgid "Creating a CNAME record to map the `www` subdomain (`www.yourdomain.com`) as some visitors are used to typing `www.` before entering a domain name." msgstr "" #: ../../content/administration/maintain/domain_names.rst:182 -msgid "Create a **CNAME record** pointing to the address of your database." +msgid "You own the domain name `yourdomain.com`, and your Odoo Online database's address is `mycompany.odoo.com`. You want to access your Odoo database primarily with the domain `www.yourdomain.com` but also with the naked domain :dfn:`(a domain name without any subdomains or prefixes)` `yourdomain.com`." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:184 -msgid "While Odoo suggests creating a CNAME record for your ``www.`` subdomain (``www.example.com``), you can of course use any domain name of your choice, with any subdomain (e.g., ``anything.example.com``)." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:189 -msgid "You own the domain name ``example.com``, and you have an Odoo Online database at the address ``example.odoo.com``. You want to access your Odoo database primarily with the domain ``www.example.com`` but also with the :ref:`naked domain ` ``example.com``." +#: ../../content/administration/maintain/domain_names.rst:187 +msgid "To do so, create a CNAME record for the `www` subdomain, with `mycompany.odoo.com` as the target. Next, create a redirect (301 permanent or visible redirect) to redirect visitors from `yourdomain.com` to `wwww.yourdomain.com`." msgstr "" #: ../../content/administration/maintain/domain_names.rst:194 -msgid "To do so, you create a CNAME record for the ``www`` subdomain, with ``example.odoo.com`` as the target. The DNS zone manager generates the following rule and adds it to your DNS zone: ``www IN CNAME example.odoo.com.``" +msgid "Map a domain name to an Odoo database" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:198 -msgid "You also create a redirection from ``example.com`` to ``wwww.example.com``." +#: ../../content/administration/maintain/domain_names.rst:197 +msgid "Ensure you have :ref:`added a CNAME record ` to your domain name's DNS **before** mapping your domain name to your Odoo database." msgstr "" #: ../../content/administration/maintain/domain_names.rst:200 -msgid "Your new DNS records are propagated to all DNS servers." +msgid "Failing to do so may prevent the validation of the :ref:`SSL certificate ` and could result in a *certificate name mismatch* error. Web browsers often display this as a warning, such as *\"Your connection is not private\"*." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:203 -msgid "Here are some specific guidelines to create a CNAME record:" +#: ../../content/administration/maintain/domain_names.rst:204 +msgid "If you encounter this error after mapping the domain name to your database, wait up to five days, as the validation may still happen. If not, you can `submit a support ticket `_, including screenshots of your CNAME records." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:205 -msgid "`GoDaddy `_" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:206 -msgid "`Namecheap `_" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:207 -msgid "`OVH `_" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:208 -msgid "`CloudFlare `_" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:209 -msgid "`Google Domains `_" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:214 -msgid "Naked domain" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:216 -msgid "A **naked domain** is a domain name that doesn't have any subdomain at the beginning of the address (e.g., ``odoo.com`` instead of ``www.odoo.com``)." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:219 -msgid "You may want your naked domain to redirect to your website as some visitors may not type the full domain name to access your website." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:223 -msgid "Create a **redirection** from the naked domain (``example.com``) to your main domain name (``www.example.com``)." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:227 -msgid "Depending on your domain name registrar, this redirection may be already pre-configured." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:232 -msgid "Map your domain name with your Odoo database" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:238 -msgid "Open your `database manager `_, click on the :guilabel:`settings` button next to your database, on :guilabel:`Domain names`, and then on :guilabel:`Use my own domain` at the bottom of the right column." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:242 -msgid "Type the domain name you want to add to this database, then click on :guilabel:`Verify` to check if the CNAME record is correctly configured. Once done, click on :guilabel:`I confirm, it's done`." +#: ../../content/administration/maintain/domain_names.rst:212 +msgid "Open the `database manager `_, click the gear icon (:guilabel:`⚙️`) next to the database name, and go to :menuselection:`Domain Names --> Use my own domain`. Then, enter the domain name (e.g., `yourdomain.com`), click :guilabel:`Verify` and :guilabel:`I confirm, it's done`." msgstr "" #: ../../content/administration/maintain/domain_names.rst:0 -msgid "Verification of the CNAME records of a domain name before mapping it with a database" +msgid "Mapping a domain name to an Odoo Online database" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:252 -msgid "Go to :menuselection:`Branches --> select your branch --> Settings --> Custom domains`, type the domain name you want to add to this database, then click on :guilabel:`Add domain`." +#: ../../content/administration/maintain/domain_names.rst:222 +msgid "On Odoo.sh, go to :menuselection:`Branches --> select your branch --> Settings --> Custom domains`, type the domain name to add, then click :guilabel:`Add domain`." msgstr "" #: ../../content/administration/maintain/domain_names.rst:0 -msgid "Mapping a domain name with an Odoo.sh branch" +msgid "Mapping a domain name to an Odoo.sh branch" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:260 +#: ../../content/administration/maintain/domain_names.rst:229 msgid ":ref:`Odoo.sh branches: settings tab `" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:263 -msgid "Make sure to :ref:`add a CNAME record ` to your domain name's DNS **before** mapping your domain name with your Odoo database." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:266 -msgid "Failing to do so may impede the validation of the :ref:`SSL certificate ` and would result in a *certificate name mismatch* error. This is often displayed by web browsers as a warning such as *\"Your connection is not private\"*." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:270 -msgid "If this is the case and you have added the domain name to your database's settings less than five days ago, wait 24 hours as the validation may still happen. Otherwise, please `submit a support ticket `_ including screenshots of your CNAME records." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:277 +#: ../../content/administration/maintain/domain_names.rst:234 msgid "SSL encryption (HTTPS protocol)" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:279 -msgid "**SSL encryption** is an encryption-based Internet security protocol. It allows your visitors to navigate your website through a secure connection, which appears as an ``https://`` protocol at the beginning of your web address, rather than a non-secure ``http://`` protocol." +#: ../../content/administration/maintain/domain_names.rst:236 +msgid "**SSL encryption** allows visitors to navigate a website through a secure connection, which appears as the *https://* protocol at the beginning of a web address rather than the non-secure *http://* protocol." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:283 -msgid "Odoo generates a separate SSL certificate for each domain :ref:`mapped in the database manager `, using integration with `Let's Encrypt Certificate Authority and ACME protocol `_." +#: ../../content/administration/maintain/domain_names.rst:240 +msgid "Odoo generates a separate SSL certificate for each domain :ref:`mapped to a database ` using `Let's Encrypt's certificate authority and ACME protocol `_." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:288 -msgid "The certificate generation may take up to 24h." +#: ../../content/administration/maintain/domain_names.rst:245 +msgid "Certificate generation may take up to 24 hours." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:289 -msgid "Several attempts to validate your certificate are made during the five days following the moment you add your domain name in your database's settings." +#: ../../content/administration/maintain/domain_names.rst:246 +msgid "Several attempts to validate your certificate are made for five days after you map your domain name to your database." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:291 -msgid "If you already use another service, you can keep using it or simply change for Odoo." +#: ../../content/administration/maintain/domain_names.rst:248 +msgid "If you use another service, you can keep using it or change to Odoo's." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:296 +#: ../../content/administration/maintain/domain_names.rst:251 +msgid "No SSL certificate is generated for naked domains :dfn:`(domain names without any subdomains or prefixes)`." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:257 msgid "Web base URL of a database" msgstr "" -#: ../../content/administration/maintain/domain_names.rst:299 -msgid "If you have Odoo Website, you can disregard this part and directly :ref:`map your domain name with your website `." +#: ../../content/administration/maintain/domain_names.rst:260 +msgid "If the Website app is installed on your database, skip this section and continue from the :ref:`Map a domain name to a website ` section." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:263 +msgid "The *web base URL* or root URL of a database affects your main website address and all the links sent to your customers (e.g., quotations, portal links, etc.)." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:266 +msgid "To make your custom domain name the *web base URL* of your database, access your database using your custom domain name and log in as an administrator :dfn:`(a user part of the Settings access right group under Administration)`." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:271 +msgid "If you access your database with the original Odoo address (e.g., `mycompany.odoo.com`), the *web base URL* of your database will be updated accordingly. To prevent the automatic update of the *web base URL* when an administrator logs in to the database, activate the :ref:`developer mode `, go to :menuselection:`Settings --> Technical --> System Parameters --> New`, and enter `web.base.url.freeze` as the :guilabel:`Key` and `True` as the :guilabel:`Value`." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:278 +msgid "You can also set the web base URL manually. To do so, activate the :ref:`developer mode `, go to :menuselection:`Settings --> Technical --> System Parameters`, and search for the `web.base.url` key (create it if necessary) and enter the full address of your website as the value (e.g., `https://www.yourdomain.com`). The URL must include the protocol `https://` (or `http://`) and *not* end with a slash (`/`)." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:287 +msgid "Map a domain name to an Odoo website" +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:289 +msgid "Mapping your domain name to your website is different than mapping it to your database:" +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:291 +msgid "It defines your domain name as the main one for your website, helping search engines to index your website correctly." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:293 +msgid "It defines your domain name as the base URL for your database, including portal links sent by email to your customers." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:295 +msgid "If you have multiple websites, it maps your domain name to the appropriate website." +msgstr "" + +#: ../../content/administration/maintain/domain_names.rst:297 +msgid "Go to :menuselection:`Website --> Configuration --> Settings`. If you have multiple websites, select the one you want to configure. In the :guilabel:`Domain` field, enter the address of your website (e.g., `https://www.yourdomain.com`) and :guilabel:`Save`." msgstr "" #: ../../content/administration/maintain/domain_names.rst:302 -msgid "The **web base URL** of a database, or **root URL** affects your main website address and all the links sent to your customers (e.g., quotations, portal links, etc.)." +msgid "Mapping your domain name to your Odoo website prevents Google Search from indexing your original database address (e.g., `mycompany.odoo.com`)." msgstr "" #: ../../content/administration/maintain/domain_names.rst:305 -msgid "To configure it, access your Odoo database with your custom address, then log in as an administrator of your database (any user in the *Settings* group) from the login screen." +msgid "If both addresses are already indexed, it may take some time before the indexation of the second address is removed from Google Search. You can use the `Google Search Console `_ to fix the issue." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:309 -msgid "Connecting to your database with the original Odoo subdomain address (e.g., ``example.odoo.com`` also updates the web base URL of your database. See below to prevent these automatic updates." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:312 -msgid "Alternatively, you can do it manually. To do so, activate the :ref:`developer mode `, then go to :menuselection:`Settings --> Technical --> System Parameters`." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:315 -msgid "Find the key called ``web.base.url`` (or create it if it does not exist) and enter the full address of your website as value, such as ``https://www.example.com``." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:319 -msgid "The URL must include the protocol ``https://`` (or ``http://``) and must not end with a slash (``/``)." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:322 -msgid "To prevent the automatic update of the web base URL when an administrator logs in the database, you can create the following System Parameter:" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:325 -msgid "key: ``web.base.url.freeze``" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:326 -msgid "value: ``True``" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:331 -msgid "Map your domain name with your website" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:333 -msgid "Mapping your domain name to your website isn't the same as mapping it with your database:" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:335 -msgid "It defines your domain name as the main one for your website, helping search engines to index your website properly." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:337 -msgid "It defines your domain name as the base URL for your database, including the portal links sent by email to your customers." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:339 -msgid "If you have multiple websites, it maps your domain name with the appropriate website." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:341 -msgid "Go to :menuselection:`Website --> Configuration --> Settings --> Website Info`. If you have multiple websites, select the one you want to configure." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:344 -msgid "In the :guilabel:`Domain` field, fill in the web address of your website (e.g., ``https://www.example.com``) and click on :guilabel:`Save`." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:-1 -msgid "Configuring https://www.example.com as the Domain of the website" -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:352 -msgid "Mapping your domain name with your Odoo website prevents Google from indexing both your custom domain name ``www.example.com`` and your original odoo database address ``example.odoo.com``." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:355 -msgid "If both addresses are already indexed, it may take some time before Google removes the indexation of the second address. You may also try using the `Google Search Console `_ to fix this." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:360 -msgid "If you have multiple websites and companies on your database, make sure that you select the right :guilabel:`Company` in the website settings, next to the :guilabel:`Domain` settings. Doing so indicates Odoo which URL to use as the :ref:`base URL ` according to the company in use." -msgstr "" - -#: ../../content/administration/maintain/domain_names.rst:366 -msgid ":doc:`/applications/general/email_communication/email_servers`" +#: ../../content/administration/maintain/domain_names.rst:310 +msgid "If you have multiple websites and companies on your database, make sure to select the right :guilabel:`Company` under :menuselection:`Website --> Configuration --> Settings`. Doing so indicates Odoo which URL to use as the :ref:`base URL ` according to the company in use." msgstr "" #: ../../content/administration/maintain/enterprise.rst:6 @@ -3042,6 +2949,70 @@ msgstr "" msgid "Once the setup is complete, the Odoo database is ready to use the Mailjet email server for mass mailing or transactional emails!" msgstr "" +#: ../../content/administration/maintain/neutralized_database.rst:3 +msgid "Neutralized database" +msgstr "" + +#: ../../content/administration/maintain/neutralized_database.rst:5 +msgid "A neutralized database is a non-production database on which several parameters are deactivated. This enables one to carry out tests without the risk of launching specific automated processes that could impact production data (e.g., sending emails to customers). Live access is removed and turned into a testing environment." +msgstr "" + +#: ../../content/administration/maintain/neutralized_database.rst:11 +msgid "**Any testing database created is a neutralized database:**" +msgstr "" + +#: ../../content/administration/maintain/neutralized_database.rst:13 +msgid "testing backup databases" +msgstr "" + +#: ../../content/administration/maintain/neutralized_database.rst:14 +msgid "duplicate databases" +msgstr "" + +#: ../../content/administration/maintain/neutralized_database.rst:15 +msgid "for Odoo.sh: staging and development databases" +msgstr "" + +#: ../../content/administration/maintain/neutralized_database.rst:18 +msgid "A database can also be neutralized when upgrading, as it is vital to do some tests before switching to a new version." +msgstr "" + +#: ../../content/administration/maintain/neutralized_database.rst:22 +msgid "Deactivated features" +msgstr "" + +#: ../../content/administration/maintain/neutralized_database.rst:24 +msgid "Here is a non-exhaustive list of the deactivated parameters:" +msgstr "" + +#: ../../content/administration/maintain/neutralized_database.rst:26 +msgid "all planned actions (e.g., automatic invoicing of subscriptions, mass mailing, etc.)" +msgstr "" + +#: ../../content/administration/maintain/neutralized_database.rst:27 +msgid "outgoing emails" +msgstr "" + +#: ../../content/administration/maintain/neutralized_database.rst:28 +msgid "bank synchronization" +msgstr "" + +#: ../../content/administration/maintain/neutralized_database.rst:29 +msgid "payment providers" +msgstr "" + +#: ../../content/administration/maintain/neutralized_database.rst:30 +msgid "delivery methods" +msgstr "" + +#: ../../content/administration/maintain/neutralized_database.rst:31 +msgid ":abbr:`IAP (In-App Purchase)` tokens" +msgstr "" + +#: ../../content/administration/maintain/neutralized_database.rst:34 +msgid "**A red banner at the top of the screen is displayed on the neutralized database so that it can be seen immediately.**" +msgstr "" + #: ../../content/administration/maintain/odoo_online.rst:3 msgid "Odoo Online database management" msgstr "" @@ -3151,7 +3122,7 @@ msgid "Use a custom :doc:`domain name ` to access the database via msgstr "" #: ../../content/administration/maintain/odoo_online.rst:75 -msgid "You can :ref:`register a domain name for free `." +msgid "You can :ref:`register a domain name for free `." msgstr "" #: ../../content/administration/maintain/odoo_online.rst:80 @@ -3448,19 +3419,20 @@ msgid "End of support" msgstr "" #: ../../content/administration/maintain/supported_versions.rst:34 -msgid "**Odoo 17.0**" +msgid "Odoo saas~17.1" msgstr "" #: ../../content/administration/maintain/supported_versions.rst:35 -#: ../../content/administration/maintain/supported_versions.rst:36 -#: ../../content/administration/maintain/supported_versions.rst:37 #: ../../content/administration/maintain/supported_versions.rst:41 -#: ../../content/administration/maintain/supported_versions.rst:65 -#: ../../content/administration/maintain/supported_versions.rst:66 -#: ../../content/administration/maintain/supported_versions.rst:67 -#: ../../content/administration/maintain/supported_versions.rst:83 -#: ../../content/administration/maintain/supported_versions.rst:84 -#: ../../content/administration/maintain/supported_versions.rst:85 +#: ../../content/administration/maintain/supported_versions.rst:42 +#: ../../content/administration/maintain/supported_versions.rst:43 +#: ../../content/administration/maintain/supported_versions.rst:47 +#: ../../content/administration/maintain/supported_versions.rst:71 +#: ../../content/administration/maintain/supported_versions.rst:72 +#: ../../content/administration/maintain/supported_versions.rst:73 +#: ../../content/administration/maintain/supported_versions.rst:89 +#: ../../content/administration/maintain/supported_versions.rst:90 +#: ../../content/administration/maintain/supported_versions.rst:91 #: ../../content/administration/odoo_sh/getting_started/settings.rst:58 #: ../../content/administration/odoo_sh/getting_started/settings.rst:59 #: ../../content/administration/odoo_sh/getting_started/settings.rst:62 @@ -3491,173 +3463,183 @@ msgstr "" msgid "|green|" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:38 -#: ../../content/administration/maintain/supported_versions.rst:93 -msgid "November 2023" -msgstr "" - -#: ../../content/administration/maintain/supported_versions.rst:39 -msgid "November 2026 (planned)" -msgstr "" - -#: ../../content/administration/maintain/supported_versions.rst:40 -msgid "Odoo saas~16.4" -msgstr "" - -#: ../../content/administration/maintain/supported_versions.rst:42 -#: ../../content/administration/maintain/supported_versions.rst:43 +#: ../../content/administration/maintain/supported_versions.rst:36 +#: ../../content/administration/maintain/supported_versions.rst:37 #: ../../content/administration/maintain/supported_versions.rst:48 #: ../../content/administration/maintain/supported_versions.rst:49 #: ../../content/administration/maintain/supported_versions.rst:54 #: ../../content/administration/maintain/supported_versions.rst:55 #: ../../content/administration/maintain/supported_versions.rst:60 #: ../../content/administration/maintain/supported_versions.rst:61 -#: ../../content/administration/maintain/supported_versions.rst:72 -#: ../../content/administration/maintain/supported_versions.rst:73 +#: ../../content/administration/maintain/supported_versions.rst:66 +#: ../../content/administration/maintain/supported_versions.rst:67 #: ../../content/administration/maintain/supported_versions.rst:78 #: ../../content/administration/maintain/supported_versions.rst:79 +#: ../../content/administration/maintain/supported_versions.rst:84 +#: ../../content/administration/maintain/supported_versions.rst:85 msgid "N/A" msgstr "" +#: ../../content/administration/maintain/supported_versions.rst:38 +msgid "January 2024" +msgstr "" + +#: ../../content/administration/maintain/supported_versions.rst:40 +msgid "**Odoo 17.0**" +msgstr "" + #: ../../content/administration/maintain/supported_versions.rst:44 -msgid "August 2023" +#: ../../content/administration/maintain/supported_versions.rst:99 +msgid "November 2023" +msgstr "" + +#: ../../content/administration/maintain/supported_versions.rst:45 +msgid "October 2026 (planned)" msgstr "" #: ../../content/administration/maintain/supported_versions.rst:46 +msgid "Odoo saas~16.4" +msgstr "" + +#: ../../content/administration/maintain/supported_versions.rst:50 +msgid "August 2023" +msgstr "" + +#: ../../content/administration/maintain/supported_versions.rst:52 msgid "Odoo saas~16.3" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:47 #: ../../content/administration/maintain/supported_versions.rst:53 #: ../../content/administration/maintain/supported_versions.rst:59 -#: ../../content/administration/maintain/supported_versions.rst:71 +#: ../../content/administration/maintain/supported_versions.rst:65 #: ../../content/administration/maintain/supported_versions.rst:77 -#: ../../content/administration/maintain/supported_versions.rst:89 -#: ../../content/administration/maintain/supported_versions.rst:90 -#: ../../content/administration/maintain/supported_versions.rst:91 +#: ../../content/administration/maintain/supported_versions.rst:83 #: ../../content/administration/maintain/supported_versions.rst:95 #: ../../content/administration/maintain/supported_versions.rst:96 #: ../../content/administration/maintain/supported_versions.rst:97 #: ../../content/administration/maintain/supported_versions.rst:101 #: ../../content/administration/maintain/supported_versions.rst:102 #: ../../content/administration/maintain/supported_versions.rst:103 +#: ../../content/administration/maintain/supported_versions.rst:107 +#: ../../content/administration/maintain/supported_versions.rst:108 +#: ../../content/administration/maintain/supported_versions.rst:109 msgid "|red|" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:50 +#: ../../content/administration/maintain/supported_versions.rst:56 msgid "June 2023" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:52 +#: ../../content/administration/maintain/supported_versions.rst:58 msgid "Odoo saas~16.2" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:56 +#: ../../content/administration/maintain/supported_versions.rst:62 msgid "March 2023" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:58 +#: ../../content/administration/maintain/supported_versions.rst:64 msgid "Odoo saas~16.1" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:62 +#: ../../content/administration/maintain/supported_versions.rst:68 msgid "February 2023" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:64 +#: ../../content/administration/maintain/supported_versions.rst:70 msgid "**Odoo 16.0**" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:68 -#: ../../content/administration/maintain/supported_versions.rst:99 +#: ../../content/administration/maintain/supported_versions.rst:74 +#: ../../content/administration/maintain/supported_versions.rst:105 msgid "October 2022" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:69 +#: ../../content/administration/maintain/supported_versions.rst:75 msgid "November 2025 (planned)" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:70 +#: ../../content/administration/maintain/supported_versions.rst:76 msgid "Odoo saas~15.2" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:74 +#: ../../content/administration/maintain/supported_versions.rst:80 msgid "March 2022" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:75 +#: ../../content/administration/maintain/supported_versions.rst:81 msgid "January 2023" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:76 +#: ../../content/administration/maintain/supported_versions.rst:82 msgid "Odoo saas~15.1" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:80 +#: ../../content/administration/maintain/supported_versions.rst:86 msgid "February 2022" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:81 +#: ../../content/administration/maintain/supported_versions.rst:87 msgid "July 2022" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:82 +#: ../../content/administration/maintain/supported_versions.rst:88 msgid "**Odoo 15.0**" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:86 +#: ../../content/administration/maintain/supported_versions.rst:92 msgid "October 2021" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:87 +#: ../../content/administration/maintain/supported_versions.rst:93 msgid "November 2024 (planned)" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:88 +#: ../../content/administration/maintain/supported_versions.rst:94 msgid "**Odoo 14.0**" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:92 +#: ../../content/administration/maintain/supported_versions.rst:98 msgid "October 2020" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:94 +#: ../../content/administration/maintain/supported_versions.rst:100 msgid "**Odoo 13.0**" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:98 +#: ../../content/administration/maintain/supported_versions.rst:104 msgid "October 2019" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:100 +#: ../../content/administration/maintain/supported_versions.rst:106 msgid "Older versions" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:104 +#: ../../content/administration/maintain/supported_versions.rst:110 msgid "Before 2019" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:105 +#: ../../content/administration/maintain/supported_versions.rst:111 msgid "Before 2022" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:107 +#: ../../content/administration/maintain/supported_versions.rst:113 msgid "Legend" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:109 +#: ../../content/administration/maintain/supported_versions.rst:115 msgid "|green| Supported version" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:111 +#: ../../content/administration/maintain/supported_versions.rst:117 msgid "|red| End-of-support" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:113 +#: ../../content/administration/maintain/supported_versions.rst:119 msgid "N/A Never released for this platform" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:116 +#: ../../content/administration/maintain/supported_versions.rst:122 msgid "Even though we don't support older versions, you can always `upgrade from any version `_." msgstr "" @@ -3838,7 +3820,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 diff --git a/locale/sources/contributing.pot b/locale/sources/contributing.pot index 9c47e9936..0fe81457d 100644 --- a/locale/sources/contributing.pot +++ b/locale/sources/contributing.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Odoo saas-16.1\n" +"Project-Id-Version: Odoo saas-16.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-19 13:26+0000\n" +"POT-Creation-Date: 2024-03-08 07:55+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -286,16 +286,16 @@ msgid "Now that your environment is set up, you can start contributing to the co msgstr "" #: ../../content/contributing/development.rst:95 -msgid "Choose the version of Odoo to which you want to make changes. Keep in mind that contributions targeting an :doc:`unsupported version of Odoo ` are not accepted. This guide assumes that the changes target Odoo 16.1, which corresponds to branch `saas-16.1`." +msgid "Choose the version of Odoo to which you want to make changes. Keep in mind that contributions targeting an :doc:`unsupported version of Odoo ` are not accepted. This guide assumes that the changes target Odoo 16.3, which corresponds to branch `saas-16.3`." msgstr "" #: ../../content/contributing/development.rst:99 #: ../../content/contributing/documentation.rst:216 -msgid "Create a new branch starting from branch saas-16.1. Prefix the branch name with the base branch: `saas-16.1-...`. If you work at Odoo, suffix the branch name with your Odoo handle: `saas-16.1-...-xyz`." +msgid "Create a new branch starting from branch saas-16.3. Prefix the branch name with the base branch: `saas-16.3-...`. If you work at Odoo, suffix the branch name with your Odoo handle: `saas-16.3-...-xyz`." msgstr "" #: ../../content/contributing/development.rst:113 -msgid "`Sign the Odoo CLA `_ if not already done. Skip this step if you work at Odoo." +msgid "`Sign the Odoo CLA `_ if not already done. Skip this step if you work at Odoo." msgstr "" #: ../../content/contributing/development.rst:115 @@ -339,7 +339,7 @@ msgstr "" #: ../../content/contributing/development.rst:149 #: ../../content/contributing/documentation.rst:278 -msgid "Select **saas-16.1** for the base." +msgid "Select **saas-16.3** for the base." msgstr "" #: ../../content/contributing/development.rst:150 @@ -1611,7 +1611,7 @@ msgid "Now that your environment is set up, you can start contributing to the do msgstr "" #: ../../content/contributing/documentation.rst:211 -msgid "Choose the version of the documentation to which you want to make changes. Keep in mind that contributions targeting an :doc:`unsupported version of Odoo ` are not accepted. This guide assumes that the changes target the documentation of Odoo 16.1, which corresponds to branch `saas-16.1`." +msgid "Choose the version of the documentation to which you want to make changes. Keep in mind that contributions targeting an :doc:`unsupported version of Odoo ` are not accepted. This guide assumes that the changes target the documentation of Odoo 16.3, which corresponds to branch `saas-16.3`." msgstr "" #: ../../content/contributing/documentation.rst:233 @@ -1619,7 +1619,7 @@ msgid "Compress all PNG images that you added or modified." msgstr "" #: ../../content/contributing/documentation.rst:240 -msgid "Write a `redirect rule `_ for every RST file that your renamed." +msgid "Write a `redirect rule `_ for every RST file that your renamed." msgstr "" #: ../../content/contributing/documentation.rst:243 @@ -2882,11 +2882,11 @@ msgid "Absolute:" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:39 -msgid "``https://odoo.com/documentation/saas-16.1/applications/sales/sales/products_prices/prices.html``" +msgid "``https://odoo.com/documentation/saas-16.3/applications/sales/sales/products_prices/prices.html``" msgstr "" #: ../../content/contributing/documentation/rst_guidelines.rst:40 -msgid "``https://odoo.com/documentation/saas-16.1/applications/sales/sales/products_prices/products/variants.html``" +msgid "``https://odoo.com/documentation/saas-16.3/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 22d4fd3d7..5df353d93 100644 --- a/locale/sources/developer.pot +++ b/locale/sources/developer.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Odoo saas-16.1\n" +"Project-Id-Version: Odoo saas-16.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-19 10:30+0000\n" +"POT-Creation-Date: 2024-03-08 07:55+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -101,11 +101,11 @@ msgid "Installation procedure" msgstr "" #: ../../content/developer/howtos/accounting_localization.rst:15 -msgid "On installing the `account `_ module, the localization module corresponding to the country code of the company is installed automatically. In case of no country code set or no localization module found, the `l10n_generic_coa `_ (US) localization module is installed by default. Check `post init hook `_ for details." +msgid "On installing the `account `_ module, the localization module corresponding to the country code of the company is installed automatically. In case of no country code set or no localization module found, the `l10n_generic_coa `_ (US) localization module is installed by default. Check `post init hook `_ for details." msgstr "" #: ../../content/developer/howtos/accounting_localization.rst:19 -msgid "For example, `l10n_ch `_ will be installed if the company has ``Switzerland`` as country." +msgid "For example, `l10n_ch `_ will be installed if the company has ``Switzerland`` as country." msgstr "" #: ../../content/developer/howtos/accounting_localization.rst:22 @@ -116,279 +116,246 @@ msgstr "" msgid "The structure of a basic ``l10n_XX`` module may be described with the following :file:`__manifest__.py` file:" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:63 -msgid "In the first file :file:`data/account_chart_template_data.xml`, we set the name for the chart of accounts along with some basic fields." +#: ../../content/developer/howtos/accounting_localization.rst:45 +msgid "Your worktree should look like this" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:66 -msgid ":ref:`Chart Template References `" +#: ../../content/developer/howtos/accounting_localization.rst:67 +msgid "In the first file :file:`models/template_xx.py`, we set the name for the chart of accounts along with some basic fields." msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:69 -msgid "`addons/l10n_ch/data/l10n_ch_chart_data.xml `_" +#: ../../content/developer/howtos/accounting_localization.rst:70 +msgid ":doc:`Chart Template References `" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:80 -msgid "Recommended **xmlid** for the record is `chart_template`. If you need many chart of accounts, you can add some suffixes, i.e. `chart_template_XXX`." +#: ../../content/developer/howtos/accounting_localization.rst:73 +msgid "`addons/l10n_be/models/template_be.py `_" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:85 +#: ../../content/developer/howtos/accounting_localization.rst:83 msgid "Chart of Accounts" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:88 +#: ../../content/developer/howtos/accounting_localization.rst:86 msgid "Account tags" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:91 +#: ../../content/developer/howtos/accounting_localization.rst:89 msgid ":ref:`Account Tag References `" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:93 +#: ../../content/developer/howtos/accounting_localization.rst:91 msgid "Tags are a way to sort accounts. For example, imagine you want to create a financial report having multiple lines but you have no way to find a rule to dispatch the accounts according to their ``code``. The solution is the usage of tags, one for each report line, to filter accounts like you want." msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:97 +#: ../../content/developer/howtos/accounting_localization.rst:95 msgid "Put the tags in the :file:`data/account_account_tag_data.xml` file." msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:100 -msgid "`addons/l10n_lt/data/account.account.template.csv `_" +#: ../../content/developer/howtos/accounting_localization.rst:98 +msgid "`addons/l10n_lt/data/template/account.account-lt.csv `_" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:108 -#: ../../content/developer/howtos/accounting_localization.rst:138 -msgid "`addons/l10n_at/data/account_account_template.xml `_" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:119 +#: ../../content/developer/howtos/accounting_localization.rst:106 msgid "Accounts" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:122 +#: ../../content/developer/howtos/accounting_localization.rst:109 msgid ":ref:`Account References `" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:123 +#: ../../content/developer/howtos/accounting_localization.rst:110 msgid ":doc:`/applications/finance/accounting/get_started/chart_of_accounts`" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:125 +#: ../../content/developer/howtos/accounting_localization.rst:112 msgid "Obviously, :guilabel:`Chart of Accounts` cannot exist without :guilabel:`Accounts`. You need to specify them in :file:`data/account.account.template.csv`." msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:128 -msgid "`addons/l10n_ch/data/account.account.template.csv `_" +#: ../../content/developer/howtos/accounting_localization.rst:115 +msgid "`addons/l10n_ch/data/template/account.account-ch.csv `_" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:135 -msgid "CSV is prefered but you may use XML format instead." +#: ../../content/developer/howtos/accounting_localization.rst:124 +msgid "Avoid the usage of `asset_cash` ``account_type``! Indeed, the bank & cash accounts are created directly at the installation of the localization module and then, are linked to an ``account.journal``." msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:148 -msgid "Avoid the usage of liquidity ``account.account.type``! Indeed, the bank & cash accounts are created directly at the installation of the localization module and then, are linked to an ``account.journal``." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:150 +#: ../../content/developer/howtos/accounting_localization.rst:126 msgid "Only one account of type payable/receivable is enough for the generic case. We need to define a PoS receivable account as well however. (linked in the CoA)" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:151 +#: ../../content/developer/howtos/accounting_localization.rst:127 msgid "Don't create too many accounts: 200-300 is enough. But mostly, we try to find a good balance where the CoA needs minimal adapting for most companies afterwards." msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:153 -msgid "Next settings for the chart of accounts are set in a separate file, because we need to provide a :ref:`list of accounts ` first. In :file:`data/account_chart_post_data.xml`, we set some default accounts:" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:158 -msgid "`addons/l10n_ch/data/l10n_ch_chart_post_data.xml `_" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:168 +#: ../../content/developer/howtos/accounting_localization.rst:131 msgid "Account groups" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:171 +#: ../../content/developer/howtos/accounting_localization.rst:134 msgid ":ref:`Account Group References `" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:173 +#: ../../content/developer/howtos/accounting_localization.rst:136 msgid "Account groups allow describing the hierarchical structure of the chart of accounts. The filter needs to be activated in the report and then when you decollapse into journal entries it will show the parents of the account." msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:175 -msgid "It works with the prefix *start*/*end*, so every account where the code starts with something between *start* and *end* will have this account.group as the parent group. Furthermore, the account groups can have a parent account group as well to form the hierarchy." +#: ../../content/developer/howtos/accounting_localization.rst:138 +msgid "It works with the prefix *start*/*end*, so every account where the code starts with something between *start* and *end* will have this ``account.group`` as the parent group. Furthermore, the account groups can have a parent account group as well to form the hierarchy." msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:179 -msgid "`addons/l10n_il/data/account.group.template.csv `_" +#: ../../content/developer/howtos/accounting_localization.rst:142 +msgid "`addons/l10n_il/data/template/account.group-il.csv `_" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:188 +#: ../../content/developer/howtos/accounting_localization.rst:151 #: ../../content/developer/reference/standard_modules/account/account_tax.rst:5 msgid "Taxes" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:191 +#: ../../content/developer/howtos/accounting_localization.rst:154 msgid ":ref:`Tax References `" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:192 +#: ../../content/developer/howtos/accounting_localization.rst:155 msgid ":doc:`/applications/finance/accounting/taxes/`" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:194 -msgid "To add taxes you first need to specify tax groups. You normally need just one tax group for every tax rate, except for the 0% as you need to often distinguish between exempt, 0%, not subject, ... taxes. This model only has two required fields: *name* and *country*. Create the file :file:`data/account_tax_group_data.xml` and list the groups:" +#: ../../content/developer/howtos/accounting_localization.rst:157 +msgid "To add taxes you first need to specify tax groups. You normally need just one tax group for every tax rate, except for the 0% as you need to often distinguish between exempt, 0%, not subject, ... taxes. This model only has two required fields: `name` and `country`. Create the file :file:`data/template/account.tax.group-xx.csv` and list the groups." msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:211 -msgid "`addons/l10n_ch/data/account_tax_group_data.xml `_" +#: ../../content/developer/howtos/accounting_localization.rst:161 +msgid "`addons/l10n_uk/data/template/account.tax.group-uk.csv `_" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:220 -msgid "`addons/l10n_uk/data/account.tax.group.csv `_" +#: ../../content/developer/howtos/accounting_localization.rst:168 +msgid "Now you can add the taxes via :file:`data/template/account.tax-xx.csv` file. The first tax you define that is purchase/sale also becomes the default purchase/sale tax for your products." msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:227 -msgid "Now you can add the taxes via :file:`data/account_tax_template_data.xml` file. The first tax you define that is purchase/sale also becomes the default purchase/sale tax for your products." +#: ../../content/developer/howtos/accounting_localization.rst:172 +msgid "`addons/l10n_ae/data/template/account.tax-ae.csv `_" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:231 -msgid "`addons/l10n_ae/data/account_tax_template_data.xml `_" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:239 -msgid "If some accounts should use default taxes, you can set them up in :file:`data/account_account_template_post_data.xml`" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:242 +#: ../../content/developer/howtos/accounting_localization.rst:181 msgid "Tax Report" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:248 +#: ../../content/developer/howtos/accounting_localization.rst:187 msgid "The tax report is declared in the :guilabel:`Invoicing` (`account`) app, but the report is only accessible when :guilabel:`Accounting` (`account_accountant`) is installed." msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:251 -#: ../../content/developer/howtos/accounting_localization.rst:376 +#: ../../content/developer/howtos/accounting_localization.rst:190 +#: ../../content/developer/howtos/accounting_localization.rst:302 msgid ":doc:`/developer/reference/standard_modules/account/account_report_line`" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:252 +#: ../../content/developer/howtos/accounting_localization.rst:191 msgid ":doc:`/applications/finance/accounting/reporting/tax_returns`" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:254 +#: ../../content/developer/howtos/accounting_localization.rst:193 msgid "In the previous section, you noticed the fields `invoice_repartition_line_ids` or `refund_repartition_line_ids` and probably understood nothing about them. Good news: you are not alone on this incomprehension. Bad news: you have to figure it out a bit. The topic is complicated. Indeed:" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:259 +#: ../../content/developer/howtos/accounting_localization.rst:198 msgid "The simple version is that, in the tax template, you indicate in the invoice/refund repartition lines whether the base or a percentage of the tax needs to be reported in which report line (through the *minus/plus_report_line_ids* fields). It becomes clear also when you check the tax configuration in the Odoo interface (or check the docs :ref:`Tax References `, :ref:`Tax Repartition References `)." msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:262 +#: ../../content/developer/howtos/accounting_localization.rst:201 msgid "So, once you have properly configured taxes, you just need to add the :file:`data/account_tax_report_data.xml` file with a record for your `account.report`. For it to be considered as a tax report, you need to provide it with the right `root_report_id`." msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:276 +#: ../../content/developer/howtos/accounting_localization.rst:215 msgid "... followed by the declaration of its lines, as `account.report.line` records." msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:279 -msgid "`addons/l10n_au/data/account_tax_report_data.xml `_" +#: ../../content/developer/howtos/accounting_localization.rst:218 +msgid "`addons/l10n_au/data/account_tax_report_data.xml `_" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:290 +#: ../../content/developer/howtos/accounting_localization.rst:229 msgid "Fiscal positions" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:293 +#: ../../content/developer/howtos/accounting_localization.rst:232 msgid ":ref:`Fiscal Position References `" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:294 +#: ../../content/developer/howtos/accounting_localization.rst:233 msgid ":doc:`/applications/finance/accounting/taxes/fiscal_positions`" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:296 -msgid "Specify fiscal positions in the :file:`data/account_fiscal_position_template_data.xml` file." +#: ../../content/developer/howtos/accounting_localization.rst:235 +msgid "Specify fiscal positions in the :file:`data/template/account.fiscal.position-xx.csv` file." msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:299 -msgid "`addons/l10n_es/data/account_fiscal_position_template_data.xml `_" +#: ../../content/developer/howtos/accounting_localization.rst:238 +msgid "`addons/l10n_es/data/template/account.fiscal.position-es_common.csv `_" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:308 +#: ../../content/developer/howtos/accounting_localization.rst:246 msgid "Final steps" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:310 -msgid "The last step when installing a localization module is to try to apply its chart of accounts to the current company (if it does not already have one). The file :file:`data/account_chart_template_try_loading.xml` is responsible for that." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:314 -msgid "`addons/l10n_ch/data/account_chart_template_data.xml `_" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:322 +#: ../../content/developer/howtos/accounting_localization.rst:248 msgid "Finally, you may add a demo company, so the localization can easily be tested in demo mode." msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:325 -msgid "`addons/l10n_ch/demo/demo_company.xml `_" +#: ../../content/developer/howtos/accounting_localization.rst:251 +msgid "`addons/l10n_ch/demo/demo_company.xml `_" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:334 +#: ../../content/developer/howtos/accounting_localization.rst:260 msgid "Accounting reports" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:341 +#: ../../content/developer/howtos/accounting_localization.rst:267 msgid ":doc:`/applications/finance/accounting/reporting`" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:343 -msgid "Accounting reports should be added via a separate module `l10n_XX_reports` that should go to the `enterprise repository `_." +#: ../../content/developer/howtos/accounting_localization.rst:269 +msgid "Accounting reports should be added via a separate module `l10n_XX_reports` that should go to the `enterprise repository `_." msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:345 +#: ../../content/developer/howtos/accounting_localization.rst:271 msgid "Basic :file:`__manifest__.py` file for such a module looks as following:" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:366 +#: ../../content/developer/howtos/accounting_localization.rst:292 msgid "Functional overview of financial reports is here: :doc:`/applications/finance/accounting/reporting`." msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:368 +#: ../../content/developer/howtos/accounting_localization.rst:294 msgid "Some good examples:" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:370 -msgid "`l10n_ch_reports/data/account_financial_html_report_data.xml `_" +#: ../../content/developer/howtos/accounting_localization.rst:296 +msgid "`l10n_ch_reports/data/account_financial_html_report_data.xml `_" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:371 -msgid "`l10n_be_reports/data/account_financial_html_report_data.xml `_" +#: ../../content/developer/howtos/accounting_localization.rst:297 +msgid "`l10n_be_reports/data/account_financial_html_report_data.xml `_" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:373 +#: ../../content/developer/howtos/accounting_localization.rst:299 msgid "You can check the meaning of the fields here:" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:375 +#: ../../content/developer/howtos/accounting_localization.rst:301 msgid ":doc:`/developer/reference/standard_modules/account/account_report`" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:378 +#: ../../content/developer/howtos/accounting_localization.rst:304 msgid "If you gave a `root_report_id` to your report, it is now available in its variant selector. If not, you still need to add a menu item for it. A default menu item can be created from the form view of the report by clicking on :menuselection:`Actions --> 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:388 -msgid "`ir.ui.menu creation `_" +#: ../../content/developer/howtos/accounting_localization.rst:314 +msgid "`ir.ui.menu creation `_" msgstr "" -#: ../../content/developer/howtos/accounting_localization.rst:389 -msgid "`ir.actions.client and menu item creation `_" +#: ../../content/developer/howtos/accounting_localization.rst:315 +msgid "`ir.actions.client and menu item creation `_" msgstr "" #: ../../content/developer/howtos/company.rst:6 @@ -504,7 +471,7 @@ msgid "When the field `company_id` is made required on a model, a good practice msgstr "" #: ../../content/developer/howtos/company.rst:168 -#: ../../content/developer/howtos/upgrade_custom_db.rst:132 +#: ../../content/developer/howtos/upgrade_custom_db.rst:129 #: ../../content/developer/howtos/website_themes/setup.rst:75 #: ../../content/developer/howtos/website_themes/theming.rst:496 #: ../../content/developer/reference/backend/views.rst:6 @@ -537,28 +504,26 @@ msgstr "" #: ../../content/developer/howtos/website_themes/pages.rst:194 #: ../../content/developer/howtos/website_themes/shapes.rst:125 #: ../../content/developer/reference/backend/actions.rst:176 -#: ../../content/developer/reference/backend/orm.rst:633 -#: ../../content/developer/reference/backend/orm.rst:635 -#: ../../content/developer/reference/backend/orm.rst:824 -#: ../../content/developer/reference/backend/orm.rst:977 +#: ../../content/developer/reference/backend/orm.rst:639 +#: ../../content/developer/reference/backend/orm.rst:641 +#: ../../content/developer/reference/backend/orm.rst:830 +#: ../../content/developer/reference/backend/orm.rst:989 #: ../../content/developer/reference/backend/security.rst:28 #: ../../content/developer/reference/backend/security.rst:186 #: ../../content/developer/reference/backend/views.rst:13 #: ../../content/developer/reference/backend/views.rst:70 #: ../../content/developer/reference/backend/views.rst:81 #: ../../content/developer/reference/backend/views.rst:179 -#: ../../content/developer/reference/backend/views.rst:241 -#: ../../content/developer/reference/backend/views.rst:683 -#: ../../content/developer/reference/backend/views.rst:807 -#: ../../content/developer/reference/backend/views.rst:809 -#: ../../content/developer/reference/backend/views.rst:1500 -#: ../../content/developer/reference/backend/views.rst:1600 -#: ../../content/developer/reference/backend/views.rst:1618 -#: ../../content/developer/reference/backend/views.rst:1756 -#: ../../content/developer/reference/frontend/qweb.rst:412 -#: ../../content/developer/reference/frontend/qweb.rst:413 -#: ../../content/developer/reference/frontend/qweb.rst:475 -#: ../../content/developer/reference/frontend/qweb.rst:792 +#: ../../content/developer/reference/backend/views.rst:250 +#: ../../content/developer/reference/backend/views.rst:697 +#: ../../content/developer/reference/backend/views.rst:854 +#: ../../content/developer/reference/backend/views.rst:856 +#: ../../content/developer/reference/backend/views.rst:1508 +#: ../../content/developer/reference/backend/views.rst:1609 +#: ../../content/developer/reference/backend/views.rst:1627 +#: ../../content/developer/reference/backend/views.rst:1765 +#: ../../content/developer/reference/frontend/qweb.rst:423 +#: ../../content/developer/reference/frontend/qweb.rst:740 #: ../../content/developer/tutorials/master_odoo_web_framework/03_custom_kanban_view.rst:5 #: ../../content/developer/tutorials/web.rst:134 #: ../../content/developer/tutorials/web.rst:1872 @@ -782,7 +747,7 @@ msgid "`tools.drop_view_if_exists` ensures that a conflicting view is not create msgstr "" #: ../../content/developer/howtos/create_reports.rst:78 -msgid "`Example: a SQL view using an override of BaseModel.init() `_" +msgid "`Example: a SQL view using an override of BaseModel.init() `_" msgstr "" #: ../../content/developer/howtos/create_reports.rst:81 @@ -802,7 +767,7 @@ msgid "An example of when the property should be used instead of overriding `Bas msgstr "" #: ../../content/developer/howtos/create_reports.rst:99 -msgid "`Example: a SQL view using _table_query `_" +msgid "`Example: a SQL view using _table_query `_" msgstr "" #: ../../content/developer/howtos/create_reports.rst:103 @@ -1158,7 +1123,7 @@ msgstr "" #: ../../content/developer/howtos/scss_tips.rst:85 #: ../../content/developer/howtos/scss_tips.rst:86 -#: ../../content/developer/howtos/upgrade_custom_db.rst:114 +#: ../../content/developer/howtos/upgrade_custom_db.rst:111 #: ../../content/developer/howtos/website_themes/shapes.rst:139 msgid "..." msgstr "" @@ -1216,7 +1181,7 @@ msgid "`Bootstrap utility classes `_" +msgid "`Odoo custom utilities on github `_" msgstr "" #: ../../content/developer/howtos/scss_tips.rst:201 @@ -1495,280 +1460,330 @@ msgstr "" msgid ":ref:`Upgrade the production database `." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:40 +#: ../../content/developer/howtos/upgrade_custom_db.rst:39 msgid "Step 1: Stop the developments" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:42 +#: ../../content/developer/howtos/upgrade_custom_db.rst:41 msgid "Starting an upgrade requires commitment and development resources. If developments keep being made at the same time, those features will need to be re-upgraded and tested every time you change them. This is why we recommend a complete freeze of the codebase when starting the upgrade process. Needless to say, bug fixing is exempt from this recommendation." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:47 +#: ../../content/developer/howtos/upgrade_custom_db.rst:46 msgid "Once you have stopped development, it is a good practice to assess the developments made and compare them with the features introduced between your current version and the version you are targeting. Challenge the developments as much as possible and find functional workarounds. Removing redundancy between your developments and the standard version of Odoo will lead to an eased upgrade process and reduce technical debt." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:54 +#: ../../content/developer/howtos/upgrade_custom_db.rst:53 msgid "You can find information on the changes between versions in the `Release Notes `_." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:61 +#: ../../content/developer/howtos/upgrade_custom_db.rst:59 msgid "Step 2: Request an upgraded database" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:63 +#: ../../content/developer/howtos/upgrade_custom_db.rst:61 msgid "Once the developments have stopped for the custom modules and the implemented features have been challenged to remove redundancy and unnecessary code, the next step is to request an upgraded test database. To do so, follow the steps mentioned in :ref:`upgrade/request-test-database`, depending on the hosting type of your database." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:68 +#: ../../content/developer/howtos/upgrade_custom_db.rst:66 msgid "The purpose of this stage is not to start working with the custom modules in the upgraded database, but to make sure the standard upgrade process works seamlessly, and the test database is delivered properly. If that's not the case, and the upgrade request fails, request the assistance of Odoo via the `support page `_ by selecting the option related to testing the upgrade." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:78 +#: ../../content/developer/howtos/upgrade_custom_db.rst:75 msgid "Step 3: Empty database" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:80 +#: ../../content/developer/howtos/upgrade_custom_db.rst:77 msgid "Before working on an upgraded test database, we recommend to make the custom developments work on an empty database in the targeted version of your upgrade. This ensures that the customization is compatible with the new version of Odoo, allows to analyze how it behaves and interacts with the new features, and guarantees that they will not cause any issues when upgrading the database." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:85 -msgid "Making the custom modules work in an empty database also helps avoid changes and wrong configurations that might be present in the production database (like studio customization, customized website pages, email templates or translations). They are not intrinsically related to the custom modules and that can raise unwanted issues in this stage of the upgraded process." +#: ../../content/developer/howtos/upgrade_custom_db.rst:82 +msgid "Making the custom modules work in an empty database also helps avoid changes and wrong configurations that might be present in the production database (like studio customization, customized website pages, email templates or translations). They are not intrinsically related to the custom modules and that can raise unwanted issues in this stage of the upgrade process." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:90 +#: ../../content/developer/howtos/upgrade_custom_db.rst:87 msgid "To make custom modules work on an empty database we advise to follow these steps:" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:92 +#: ../../content/developer/howtos/upgrade_custom_db.rst:89 msgid ":ref:`upgrade_custom/empty_database/modules_installable`" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:93 +#: ../../content/developer/howtos/upgrade_custom_db.rst:90 msgid ":ref:`upgrade_custom/empty_database/test_fixes`" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:94 +#: ../../content/developer/howtos/upgrade_custom_db.rst:91 msgid ":ref:`upgrade_custom/empty_database/clean_code`" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:95 +#: ../../content/developer/howtos/upgrade_custom_db.rst:92 msgid ":ref:`Make standard tests run successfully `" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:100 +#: ../../content/developer/howtos/upgrade_custom_db.rst:97 msgid "Make custom modules installable" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:102 +#: ../../content/developer/howtos/upgrade_custom_db.rst:99 msgid "The first step is to make the custom modules installable in the new Odoo version. This means, starting by ensuring there are no tracebacks or warnings during their installation. For this, install the custom modules, one by one, in an empty database of the new Odoo version and fix the tracebacks and warnings that arise from that." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:107 +#: ../../content/developer/howtos/upgrade_custom_db.rst:104 msgid "This process will help detect issues during the installation of the modules. For example:" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:109 +#: ../../content/developer/howtos/upgrade_custom_db.rst:106 msgid "Invalid module dependencies." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:110 +#: ../../content/developer/howtos/upgrade_custom_db.rst:107 msgid "Syntax change: assets declaration, OWL updates, attrs." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:111 +#: ../../content/developer/howtos/upgrade_custom_db.rst:108 msgid "References to standard fields, models, views not existing anymore or renamed." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:112 +#: ../../content/developer/howtos/upgrade_custom_db.rst:109 msgid "Xpath that moved or were removed from views." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:113 +#: ../../content/developer/howtos/upgrade_custom_db.rst:110 msgid "Methods renamed or removed." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:119 +#: ../../content/developer/howtos/upgrade_custom_db.rst:116 msgid "Test and fixes" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:121 +#: ../../content/developer/howtos/upgrade_custom_db.rst:118 msgid "Once there are no more tracebacks when installing the modules, the next step is to test them. Even if the custom modules are installable on an empty database, this does not guarantee there are no errors during their execution. Because of this, we encourage to test thoroughly all the customization to make sure everything is working as expected." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:126 +#: ../../content/developer/howtos/upgrade_custom_db.rst:123 msgid "This process will help detect further issues that are not identified during the module installation and can only be detected in runtime. For example, deprecated calls to standard python or OWL functions, non-existing references to standard fields, etc." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:130 +#: ../../content/developer/howtos/upgrade_custom_db.rst:127 msgid "We recommend to test all the customization, especially the following elements:" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:133 +#: ../../content/developer/howtos/upgrade_custom_db.rst:130 msgid "Email templates" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:134 +#: ../../content/developer/howtos/upgrade_custom_db.rst:131 msgid "Reports" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:135 +#: ../../content/developer/howtos/upgrade_custom_db.rst:132 msgid "Server actions and automated actions" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:136 +#: ../../content/developer/howtos/upgrade_custom_db.rst:133 msgid "Changes in the standard workflows" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:137 +#: ../../content/developer/howtos/upgrade_custom_db.rst:134 #: ../../content/developer/tutorials/backend.rst:715 msgid "Computed fields" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:139 +#: ../../content/developer/howtos/upgrade_custom_db.rst:136 msgid "We also encourage to write automated tests to save time during the testing iterations, increase the test coverage, and ensure that the changes and fixes introduced do not break the existing flows. If there are tests already implemented in the customization, make sure they are upgraded to the new Odoo version and run successfully, fixing issues that might be present." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:147 +#: ../../content/developer/howtos/upgrade_custom_db.rst:144 msgid "Clean the code" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:149 +#: ../../content/developer/howtos/upgrade_custom_db.rst:146 msgid "At this stage of the upgrade process, we also suggest to clean the code as much as possible. This includes:" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:152 +#: ../../content/developer/howtos/upgrade_custom_db.rst:149 msgid "Remove redundant and unnecessary code." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:153 +#: ../../content/developer/howtos/upgrade_custom_db.rst:150 msgid "Remove features that are now part of Odoo standard, as described in :ref:`upgrade_custom/stop_developments`." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:155 +#: ../../content/developer/howtos/upgrade_custom_db.rst:152 msgid "Clean commented code if it is not needed anymore." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:156 +#: ../../content/developer/howtos/upgrade_custom_db.rst:153 msgid "Refactor the code (functions, fields, views, reports, etc.) if needed." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:161 +#: ../../content/developer/howtos/upgrade_custom_db.rst:158 msgid "Standard tests" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:163 +#: ../../content/developer/howtos/upgrade_custom_db.rst:160 msgid "Once the previous steps are completed, we advise to make sure all standard tests associated to the dependencies of the custom module pass. Standard tests ensure the validation of the code logic and prevent data corruption. They will help you identify bugs or unwanted behavior before you work on your database." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:168 +#: ../../content/developer/howtos/upgrade_custom_db.rst:165 msgid "In case there are standard test failing, we suggest to analyze the reason for their failure:" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:170 +#: ../../content/developer/howtos/upgrade_custom_db.rst:167 msgid "The customization changes the standard workflow: Adapt the standard test to your workflow." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:171 +#: ../../content/developer/howtos/upgrade_custom_db.rst:168 msgid "The customization did not take into account a special flow: Adapt your customization to ensure it works for all the standard workflows." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:178 +#: ../../content/developer/howtos/upgrade_custom_db.rst:175 msgid "Step 4: Upgraded database" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:180 +#: ../../content/developer/howtos/upgrade_custom_db.rst:177 msgid "Once the custom modules are installable and working properly in an empty database, it is time to make them work on an :ref:`upgraded database `." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:183 +#: ../../content/developer/howtos/upgrade_custom_db.rst:180 msgid "To make sure the custom code is working flawlessly in the new version, follow these steps:" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:185 +#: ../../content/developer/howtos/upgrade_custom_db.rst:182 msgid ":ref:`upgrade_custom/upgraded_database/migrate_data`" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:186 +#: ../../content/developer/howtos/upgrade_custom_db.rst:183 msgid ":ref:`upgrade_custom/upgraded_database/test_custom`" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:191 +#: ../../content/developer/howtos/upgrade_custom_db.rst:188 msgid "Migrate the data" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:193 -msgid "During the upgrade of the custom modules, you might have to use migration scripts to reflect changes from the source code to their corresponding data." +#: ../../content/developer/howtos/upgrade_custom_db.rst:190 +msgid "During the upgrade of the custom modules, you might have to use :doc:`upgrade scripts <../reference/upgrade_scripts>` to reflect changes from the source code to their corresponding data. Together with the upgrade scripts, you can also make use of the :doc:`../reference/upgrade_utils` and its helper functions." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:196 -msgid "Any technical data that was renamed during the upgrade of the custom code (models, fields, external identifiers) should be renamed using migration scripts to avoid data loss during the module upgrade." +#: ../../content/developer/howtos/upgrade_custom_db.rst:195 +msgid "Any technical data that was renamed during the upgrade of the custom code (models, fields, external identifiers) should be renamed using upgrade scripts to avoid data loss during the module upgrade. See also: :meth:`rename_field`, :meth:`rename_model`, :meth:`rename_xmlid`." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:199 +#: ../../content/developer/howtos/upgrade_custom_db.rst:198 msgid "Data from standard models removed from the source code of the newer Odoo version and from the database during the standard upgrade process might need to be recovered from the old model table if it is still present." msgstr "" #: ../../content/developer/howtos/upgrade_custom_db.rst:203 -msgid "Migration scripts can also be used to:" +msgid "Custom fields for model ``sale.subscription`` are not automatically migrated from Odoo 15 to Odoo 16 (when the model was merged into ``sale.order``). In this case, a SQL query can be executed on an upgrade script to move the data from one table to the other. Take into account that all columns/fields must already exist, so consider doing this in a ``post-`` script (See :ref:`upgrade-scripts/phases`)." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:205 +#: ../../content/developer/howtos/upgrade_custom_db.rst:223 +msgid "Check the documentation for more information on :doc:`../reference/upgrade_scripts`." +msgstr "" + +#: ../../content/developer/howtos/upgrade_custom_db.rst:225 +msgid "Upgrade scripts can also be used to:" +msgstr "" + +#: ../../content/developer/howtos/upgrade_custom_db.rst:227 msgid "Ease the processing time of an upgrade. For example, to store the value of computed stored fields on models with an excessive number of records by using SQL queries." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:207 -msgid "Recompute fields in case the computation of their value has changed." +#: ../../content/developer/howtos/upgrade_custom_db.rst:229 +msgid "Recompute fields in case the computation of their value has changed. See also :meth:`recompute_fields`." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:208 -msgid "Uninstall unwanted custom modules." +#: ../../content/developer/howtos/upgrade_custom_db.rst:231 +msgid "Uninstall unwanted custom modules. See also :meth:`remove_module`." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:209 +#: ../../content/developer/howtos/upgrade_custom_db.rst:232 msgid "Correct faulty data or wrong configurations." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:214 -msgid "Test the custom modules" -msgstr "" - -#: ../../content/developer/howtos/upgrade_custom_db.rst:216 -msgid "To make sure the custom modules work properly with your data in the upgraded database, they need to be tested as well. This helps ensure both the standard and the custom data stored in the database are consistent and that nothing was lost during the upgrade process." -msgstr "" - -#: ../../content/developer/howtos/upgrade_custom_db.rst:220 -msgid "Things to pay attention to:" -msgstr "" - -#: ../../content/developer/howtos/upgrade_custom_db.rst:222 -msgid "Views not working: During the upgrade, if a view causes issues because of its content, it gets disabled. You can find the information on disabled views on the :ref:`Upgrade report `. This view needs to be activated again. To achieve this, we recommend the use of migration scripts." -msgstr "" - -#: ../../content/developer/howtos/upgrade_custom_db.rst:226 -msgid ":doc:`Module data <../tutorials/define_module_data>` not updated: Custom records that have the ``noupdate`` flag are not updated when upgrading the module in the new database. For the custom data that needs to be updated due to changes in the new version, we recommend to use migration scripts to do so." -msgstr "" - #: ../../content/developer/howtos/upgrade_custom_db.rst:235 -msgid "Step 5: Testing and rehearsal" +msgid "Running and testing upgrade scripts" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:237 -msgid "When the custom modules are working properly in the upgraded database, it is crucial to do another round of testing to assess the database usability and detect any issues that might have gone unnoticed in previous tests. For further information about testing the upgraded database, check :ref:`upgrade/test_your_db`." +#: ../../content/developer/howtos/upgrade_custom_db.rst:239 +msgid "Odoo Online" msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:242 -msgid "As mentioned in :ref:`upgrade/upgrade-prod`, both standard upgrade scripts and your database are constantly evolving. Therefore it is highly recommended to frequently request new upgraded test databases and ensure that the upgrade process is still successful." +#: ../../content/developer/howtos/upgrade_custom_db.rst:241 +msgid "As the instalation of custom modules containing Python files is not allowed on Odoo Online databases, it is not possible to run upgrade scripts on this platform." +msgstr "" + +#: ../../content/developer/howtos/upgrade_custom_db.rst:244 +#: ../../content/developer/howtos/website_themes/going_live.rst:34 +#: ../../content/developer/howtos/website_themes/setup.rst:121 +msgid "Odoo.sh" msgstr "" #: ../../content/developer/howtos/upgrade_custom_db.rst:246 -msgid "In addition to that, make a full rehearsal of the upgrade process the day before upgrading the production database to avoid undesired behavior during the upgrade and to detect any issue that might have occurred with the migrated data." +msgid "As explained on the `Odoo.sh` tab of :ref:`upgrade/request-test-database`, Odoo.sh is integrated with the upgrade platform." msgstr "" -#: ../../content/developer/howtos/upgrade_custom_db.rst:254 -msgid "Step 6: Production upgrade" +#: ../../content/developer/howtos/upgrade_custom_db.rst:249 +msgid "Once the upgrade of a staging branch is on \"Update on commit\" mode, each time a commit is pushed on the branch, the upgraded backup is restored and all the custom modules are updated. This update includes the execution of the upgrade scripts." +msgstr "" + +#: ../../content/developer/howtos/upgrade_custom_db.rst:253 +msgid "When upgrading the production database, the execution of the upgrade scripts is also part of the update of the custom modules done by the platform when the upgraded database is restored." msgstr "" #: ../../content/developer/howtos/upgrade_custom_db.rst:256 +msgid "On-premise" +msgstr "" + +#: ../../content/developer/howtos/upgrade_custom_db.rst:258 +msgid "Once you receive the upgraded dump of the database from the `Upgrade platform `_, deploy the database and update all the custom modules by invoking the command :doc:`odoo-bin ` in the shell. To update the custom modules, use the option: `-u , --update `." +msgstr "" + +#: ../../content/developer/howtos/upgrade_custom_db.rst:265 +msgid "As mentioned in the :doc:`CLI documentation `, the command used to call the CLI depends on how you installed Odoo." +msgstr "" + +#: ../../content/developer/howtos/upgrade_custom_db.rst:271 +msgid "Test the custom modules" +msgstr "" + +#: ../../content/developer/howtos/upgrade_custom_db.rst:273 +msgid "To make sure the custom modules work properly with your data in the upgraded database, they need to be tested as well. This helps ensure both the standard and the custom data stored in the database are consistent and that nothing was lost during the upgrade process." +msgstr "" + +#: ../../content/developer/howtos/upgrade_custom_db.rst:277 +msgid "Things to pay attention to:" +msgstr "" + +#: ../../content/developer/howtos/upgrade_custom_db.rst:279 +msgid "Views not working: During the upgrade, if a view causes issues because of its content, it gets disabled. You can find the information on disabled views on the :ref:`Upgrade report `. This view needs to be activated again (or removed if not useful anymore). To achieve this, we recommend the use of upgrade scripts." +msgstr "" + +#: ../../content/developer/howtos/upgrade_custom_db.rst:283 +msgid ":doc:`Module data <../tutorials/define_module_data>` not updated: Custom records that have the ``noupdate`` flag are not updated when upgrading the module in the new database. For the custom data that needs to be updated due to changes in the new version, we recommend to use upgrade scripts to do so. See also: :meth:`update_record_from_xml`." +msgstr "" + +#: ../../content/developer/howtos/upgrade_custom_db.rst:291 +msgid "Step 5: Testing and rehearsal" +msgstr "" + +#: ../../content/developer/howtos/upgrade_custom_db.rst:293 +msgid "When the custom modules are working properly in the upgraded database, it is crucial to do another round of testing to assess the database usability and detect any issues that might have gone unnoticed in previous tests. For further information about testing the upgraded database, check :ref:`upgrade/test_your_db`." +msgstr "" + +#: ../../content/developer/howtos/upgrade_custom_db.rst:298 +msgid "As mentioned in :ref:`upgrade/upgrade-prod`, both standard upgrade scripts and your database are constantly evolving. Therefore it is highly recommended to frequently request new upgraded test databases and ensure that the upgrade process is still successful." +msgstr "" + +#: ../../content/developer/howtos/upgrade_custom_db.rst:302 +msgid "In addition to that, make a full rehearsal of the upgrade process the day before upgrading the production database to avoid undesired behavior during the upgrade and to detect any issue that might have occurred with the migrated data." +msgstr "" + +#: ../../content/developer/howtos/upgrade_custom_db.rst:309 +msgid "Step 6: Production upgrade" +msgstr "" + +#: ../../content/developer/howtos/upgrade_custom_db.rst:311 msgid "Once you are confident about upgrading your production database, follow the process described on :ref:`upgrade/upgrade-prod`, depending on the hosting type of your database." msgstr "" @@ -1990,7 +2005,7 @@ msgstr "" #: ../../content/developer/howtos/website_themes/building_blocks.rst:44 #: ../../content/developer/howtos/website_themes/building_blocks.rst:373 -msgid "`XML templates of the different snippets `_" +msgid "`XML templates of the different snippets `_" msgstr "" #: ../../content/developer/howtos/website_themes/building_blocks.rst:47 @@ -2042,7 +2057,6 @@ msgstr "" #: ../../content/developer/howtos/website_themes/pages.rst:251 #: ../../content/developer/howtos/website_themes/pages.rst:274 #: ../../content/developer/howtos/website_themes/shapes.rst:224 -#: ../../content/developer/reference/frontend/javascript_reference.rst:1810 #: ../../content/developer/tutorials/getting_started/04_basicmodel.rst:260 msgid "Attribute" msgstr "" @@ -2086,21 +2100,23 @@ msgstr "" #: ../../content/developer/reference/frontend/odoo_editor.rst:148 #: ../../content/developer/reference/frontend/odoo_editor.rst:174 #: ../../content/developer/reference/frontend/odoo_editor.rst:218 -#: ../../content/developer/reference/frontend/owl_components.rst:179 -#: ../../content/developer/reference/frontend/owl_components.rst:242 -#: ../../content/developer/reference/frontend/owl_components.rst:310 -#: ../../content/developer/reference/frontend/owl_components.rst:330 -#: ../../content/developer/reference/frontend/owl_components.rst:349 -#: ../../content/developer/reference/frontend/owl_components.rst:365 -#: ../../content/developer/reference/frontend/owl_components.rst:428 -#: ../../content/developer/reference/frontend/owl_components.rst:476 -#: ../../content/developer/reference/frontend/owl_components.rst:520 -#: ../../content/developer/reference/frontend/owl_components.rst:704 -#: ../../content/developer/reference/frontend/owl_components.rst:721 -#: ../../content/developer/reference/frontend/owl_components.rst:817 -#: ../../content/developer/reference/frontend/owl_components.rst:837 -#: ../../content/developer/reference/frontend/owl_components.rst:868 -#: ../../content/developer/reference/frontend/owl_components.rst:886 +#: ../../content/developer/reference/frontend/owl_components.rst:181 +#: ../../content/developer/reference/frontend/owl_components.rst:244 +#: ../../content/developer/reference/frontend/owl_components.rst:312 +#: ../../content/developer/reference/frontend/owl_components.rst:332 +#: ../../content/developer/reference/frontend/owl_components.rst:351 +#: ../../content/developer/reference/frontend/owl_components.rst:367 +#: ../../content/developer/reference/frontend/owl_components.rst:430 +#: ../../content/developer/reference/frontend/owl_components.rst:478 +#: ../../content/developer/reference/frontend/owl_components.rst:525 +#: ../../content/developer/reference/frontend/owl_components.rst:709 +#: ../../content/developer/reference/frontend/owl_components.rst:730 +#: ../../content/developer/reference/frontend/owl_components.rst:829 +#: ../../content/developer/reference/frontend/owl_components.rst:849 +#: ../../content/developer/reference/frontend/owl_components.rst:880 +#: ../../content/developer/reference/frontend/owl_components.rst:898 +#: ../../content/developer/reference/frontend/owl_components.rst:1058 +#: ../../content/developer/reference/frontend/owl_components.rst:1073 #: ../../content/developer/reference/frontend/patching_code.rst:17 #: ../../content/developer/reference/frontend/services.rst:247 #: ../../content/developer/reference/frontend/services.rst:439 @@ -2681,11 +2697,6 @@ msgstr "" msgid "`Odoo eLearning: Register a Free Domain Name `_" msgstr "" -#: ../../content/developer/howtos/website_themes/going_live.rst:34 -#: ../../content/developer/howtos/website_themes/setup.rst:121 -msgid "Odoo.sh" -msgstr "" - #: ../../content/developer/howtos/website_themes/going_live.rst:36 msgid "Go to :guilabel:`Apps` and click on :guilabel:`Update Apps List` in the menu. Search for your module in the list and install it." msgstr "" @@ -2987,7 +2998,7 @@ msgid "You can find more information about XPath in this `cheat sheet `_" +msgid "`Bootstrap overridden SCSS `_" msgstr "" #: ../../content/developer/howtos/website_themes/theming.rst:493 @@ -4910,7 +4924,7 @@ msgstr "" #: ../../content/developer/reference/backend/actions.rst:15 #: ../../content/developer/reference/backend/data.rst:135 -#: ../../content/developer/reference/backend/views.rst:1725 +#: ../../content/developer/reference/backend/views.rst:1734 msgid "``type``" msgstr "" @@ -4921,14 +4935,14 @@ msgstr "" #: ../../content/developer/reference/backend/actions.rst:19 #: ../../content/developer/reference/backend/actions.rst:416 #: ../../content/developer/reference/backend/data.rst:221 -#: ../../content/developer/reference/backend/views.rst:840 -#: ../../content/developer/reference/backend/views.rst:1303 -#: ../../content/developer/reference/backend/views.rst:1727 -#: ../../content/developer/reference/backend/views.rst:1765 -#: ../../content/developer/reference/backend/views.rst:1853 -#: ../../content/developer/reference/backend/views.rst:2005 -#: ../../content/developer/reference/backend/views.rst:2174 -#: ../../content/developer/reference/backend/views.rst:2315 +#: ../../content/developer/reference/backend/views.rst:887 +#: ../../content/developer/reference/backend/views.rst:1311 +#: ../../content/developer/reference/backend/views.rst:1736 +#: ../../content/developer/reference/backend/views.rst:1774 +#: ../../content/developer/reference/backend/views.rst:1861 +#: ../../content/developer/reference/backend/views.rst:1990 +#: ../../content/developer/reference/backend/views.rst:2159 +#: ../../content/developer/reference/backend/views.rst:2300 #: ../../content/developer/reference/external_api.rst:1104 #: ../../content/developer/reference/external_api.rst:1268 #: ../../content/developer/reference/extract_api.rst:511 @@ -5095,7 +5109,7 @@ msgid "additional context data to pass to the views" msgstr "" #: ../../content/developer/reference/backend/actions.rst:99 -#: ../../content/developer/reference/backend/views.rst:2226 +#: ../../content/developer/reference/backend/views.rst:2211 msgid "``domain`` (optional)" msgstr "" @@ -5238,7 +5252,7 @@ msgstr "" #: ../../content/developer/reference/backend/data.rst:155 #: ../../content/developer/reference/backend/data.rst:232 #: ../../content/developer/reference/backend/data.rst:242 -#: ../../content/developer/reference/backend/views.rst:675 +#: ../../content/developer/reference/backend/views.rst:689 #: ../../content/developer/reference/extract_api.rst:168 #: ../../content/developer/reference/extract_api.rst:264 msgid "``id``" @@ -5345,8 +5359,8 @@ msgid "``ir.model.fields`` to set in the concerned model (``crud_model_id`` for msgstr "" #: ../../content/developer/reference/backend/actions.rst:304 -#: ../../content/developer/reference/backend/orm.rst:925 -#: ../../content/developer/reference/backend/views.rst:1351 +#: ../../content/developer/reference/backend/orm.rst:937 +#: ../../content/developer/reference/backend/views.rst:1359 msgid "``value``" msgstr "" @@ -5416,11 +5430,11 @@ msgstr "" #: ../../content/developer/reference/backend/actions.rst:347 #: ../../content/developer/reference/backend/reports.rst:196 -#: ../../content/developer/reference/backend/views.rst:570 -#: ../../content/developer/reference/backend/views.rst:672 -#: ../../content/developer/reference/backend/views.rst:1153 -#: ../../content/developer/reference/backend/views.rst:2048 -#: ../../content/developer/reference/backend/views.rst:2376 +#: ../../content/developer/reference/backend/views.rst:584 +#: ../../content/developer/reference/backend/views.rst:686 +#: ../../content/developer/reference/backend/views.rst:1161 +#: ../../content/developer/reference/backend/views.rst:2033 +#: ../../content/developer/reference/backend/views.rst:2361 msgid "``name`` (mandatory)" msgstr "" @@ -5633,8 +5647,8 @@ msgid "Core operations" msgstr "" #: ../../content/developer/reference/backend/data.rst:58 -#: ../../content/developer/reference/backend/views.rst:418 -#: ../../content/developer/reference/backend/views.rst:1568 +#: ../../content/developer/reference/backend/views.rst:427 +#: ../../content/developer/reference/backend/views.rst:1577 msgid "``record``" msgstr "" @@ -5664,13 +5678,13 @@ msgid "for record modification, the record to modify" msgstr "" #: ../../content/developer/reference/backend/data.rst:72 -#: ../../content/developer/reference/backend/views.rst:719 -#: ../../content/developer/reference/backend/views.rst:1571 -#: ../../content/developer/reference/backend/views.rst:1754 -#: ../../content/developer/reference/backend/views.rst:1920 -#: ../../content/developer/reference/backend/views.rst:2132 -#: ../../content/developer/reference/backend/views.rst:2204 -#: ../../content/developer/reference/backend/views.rst:2311 +#: ../../content/developer/reference/backend/views.rst:733 +#: ../../content/developer/reference/backend/views.rst:1580 +#: ../../content/developer/reference/backend/views.rst:1763 +#: ../../content/developer/reference/backend/views.rst:1905 +#: ../../content/developer/reference/backend/views.rst:2117 +#: ../../content/developer/reference/backend/views.rst:2189 +#: ../../content/developer/reference/backend/views.rst:2296 #: ../../content/developer/reference/frontend/services.rst:853 #: ../../content/developer/tutorials/backend.rst:935 #: ../../content/developer/tutorials/web.rst:1704 @@ -5694,11 +5708,11 @@ msgid "Requires an :term:`external id`, defaults to ``True``." msgstr "" #: ../../content/developer/reference/backend/data.rst:80 -#: ../../content/developer/reference/backend/views.rst:398 -#: ../../content/developer/reference/backend/views.rst:748 -#: ../../content/developer/reference/backend/views.rst:1521 -#: ../../content/developer/reference/backend/views.rst:1841 -#: ../../content/developer/reference/backend/views.rst:2211 +#: ../../content/developer/reference/backend/views.rst:407 +#: ../../content/developer/reference/backend/views.rst:762 +#: ../../content/developer/reference/backend/views.rst:1523 +#: ../../content/developer/reference/backend/views.rst:1849 +#: ../../content/developer/reference/backend/views.rst:2196 msgid "``field``" msgstr "" @@ -5823,7 +5837,7 @@ msgid "The evaluation context contains various modules (``time``, ``datetime``, msgstr "" #: ../../content/developer/reference/backend/data.rst:148 -#: ../../content/developer/reference/backend/views.rst:1616 +#: ../../content/developer/reference/backend/views.rst:1625 msgid "``delete``" msgstr "" @@ -5898,12 +5912,12 @@ msgstr "" #: ../../content/developer/reference/backend/data.rst:226 #: ../../content/developer/reference/backend/data.rst:250 -#: ../../content/developer/reference/backend/views.rst:704 -#: ../../content/developer/reference/backend/views.rst:1729 -#: ../../content/developer/reference/backend/views.rst:1774 -#: ../../content/developer/reference/backend/views.rst:2206 -#: ../../content/developer/reference/backend/views.rst:2321 -#: ../../content/developer/reference/backend/views.rst:2388 +#: ../../content/developer/reference/backend/views.rst:718 +#: ../../content/developer/reference/backend/views.rst:1738 +#: ../../content/developer/reference/backend/views.rst:1783 +#: ../../content/developer/reference/backend/views.rst:2191 +#: ../../content/developer/reference/backend/views.rst:2306 +#: ../../content/developer/reference/backend/views.rst:2373 #: ../../content/developer/reference/external_api.rst:1280 msgid "``groups``" msgstr "" @@ -5913,7 +5927,7 @@ msgid "A ``groups`` attribute is interpreted as a comma-separated sequence of :t msgstr "" #: ../../content/developer/reference/backend/data.rst:229 -#: ../../content/developer/reference/backend/views.rst:1725 +#: ../../content/developer/reference/backend/views.rst:1734 msgid "``action``" msgstr "" @@ -5967,7 +5981,7 @@ msgid "if set to ``\"True\"``, the template is a website page (linkable to, dele msgstr "" #: ../../content/developer/reference/backend/data.rst:258 -#: ../../content/developer/reference/backend/views.rst:1817 +#: ../../content/developer/reference/backend/views.rst:1825 msgid "``optional``" msgstr "" @@ -6249,13 +6263,13 @@ msgstr "" #: ../../content/developer/reference/backend/http.rst:52 #: ../../content/developer/reference/backend/orm.rst:54 -#: ../../content/developer/reference/backend/views.rst:1968 +#: ../../content/developer/reference/backend/views.rst:1953 #: ../../content/developer/reference/frontend/hooks.rst:87 #: ../../content/developer/reference/frontend/hooks.rst:122 #: ../../content/developer/reference/frontend/hooks.rst:170 #: ../../content/developer/reference/frontend/hooks.rst:213 #: ../../content/developer/reference/frontend/hooks.rst:341 -#: ../../content/developer/reference/frontend/qweb.rst:967 +#: ../../content/developer/reference/frontend/qweb.rst:915 #: ../../content/developer/reference/frontend/registries.rst:170 #: ../../content/developer/reference/frontend/services.rst:156 #: ../../content/developer/reference/frontend/services.rst:211 @@ -6340,11 +6354,13 @@ msgstr "" #: ../../content/developer/reference/backend/mixins.rst:0 #: ../../content/developer/reference/frontend/framework_overview.rst:0 #: ../../content/developer/reference/frontend/qweb.rst:0 +#: ../../content/developer/reference/upgrade_scripts.rst:0 +#: ../../content/developer/reference/upgrade_utils.rst:0 msgid "Parameters" msgstr "" #: ../../content/developer/reference/backend/mixins.rst:84 -msgid "body of the message, usually raw HTML that will be sanitized" +msgid "body of the message. Will be escaped if `str`. Use a :class:`~markupsafe.Markup` object for HTML content." msgstr "" #: ../../content/developer/reference/backend/mixins.rst:86 @@ -6360,6 +6376,10 @@ msgid "list of attachment tuples in the form ``(name,content)``, where content i msgstr "" #: ../../content/developer/reference/backend/mixins.rst:91 +msgid "indicates whether `body` should be treated as HTML, even if `str`." +msgstr "" + +#: ../../content/developer/reference/backend/mixins.rst:92 msgid "extra keyword arguments will be used as default column values for the new mail.message record" msgstr "" @@ -6372,895 +6392,897 @@ msgstr "" #: ../../content/developer/reference/frontend/qweb.rst:0 #: ../../content/developer/reference/frontend/registries.rst:0 #: ../../content/developer/reference/frontend/services.rst:0 +#: ../../content/developer/reference/upgrade_utils.rst:0 msgid "Returns" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:93 +#: ../../content/developer/reference/backend/mixins.rst:94 msgid "ID of newly created mail.message" msgstr "" #: ../../content/developer/reference/backend/mixins.rst:0 +#: ../../content/developer/reference/upgrade_utils.rst:0 msgid "Return type" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:98 +#: ../../content/developer/reference/backend/mixins.rst:99 msgid "Helper method to send a mail / post a message using a view_id to render using the ir.qweb engine. This method is stand alone, because there is nothing in template and composer that allows to handle views in batch. This method will probably disappear when templates handle ir ui views." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:104 +#: ../../content/developer/reference/backend/mixins.rst:105 msgid "external id or record of the view that should be sent" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:109 +#: ../../content/developer/reference/backend/mixins.rst:110 msgid "Helper method to send a mail with a template" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:111 +#: ../../content/developer/reference/backend/mixins.rst:112 msgid "the id of the template to render to create the body of the message" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:112 +#: ../../content/developer/reference/backend/mixins.rst:113 msgid "parameter to create a mail.compose.message wizard (which inherit from mail.message)" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:115 +#: ../../content/developer/reference/backend/mixins.rst:116 msgid "Receiving messages" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:116 +#: ../../content/developer/reference/backend/mixins.rst:117 msgid "These methods are called when a new e-mail is processed by the mail gateway. These e-mails can either be new thread (if they arrive via an :ref:`alias `) or simply replies from an existing thread. Overriding them allows you to set values on the thread's record depending on some values from the email itself (i.e. update a date or an e-mail address, add CC's addresses as followers, etc.)." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:124 +#: ../../content/developer/reference/backend/mixins.rst:125 msgid "Called by ``message_process`` when a new message is received for a given thread model, if the message did not belong to an existing thread." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:128 +#: ../../content/developer/reference/backend/mixins.rst:129 msgid "The default behavior is to create a new record of the corresponding model (based on some very basic info extracted from the message). Additional behavior may be implemented by overriding this method." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:132 +#: ../../content/developer/reference/backend/mixins.rst:133 msgid "a map containing the email details and attachments. See ``message_process`` and ``mail.message.parse`` for details" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:134 +#: ../../content/developer/reference/backend/mixins.rst:135 msgid "optional dictionary of additional field values to pass to create() when creating the new thread record; be careful, these values may override any other values coming from the message" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:139 +#: ../../content/developer/reference/backend/mixins.rst:140 msgid "the id of the newly created thread object" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:143 +#: ../../content/developer/reference/backend/mixins.rst:144 msgid "Called by ``message_process`` when a new message is received for an existing thread. The default behavior is to update the record with ``update_vals`` taken from the incoming email." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:147 +#: ../../content/developer/reference/backend/mixins.rst:148 msgid "Additional behavior may be implemented by overriding this method." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:150 +#: ../../content/developer/reference/backend/mixins.rst:151 msgid "a map containing the email details and attachments; see ``message_process`` and ``mail.message.parse()`` for details." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:152 +#: ../../content/developer/reference/backend/mixins.rst:153 msgid "a dict containing values to update records given their ids; if the dict is None or is void, no write operation is performed." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:154 -#: ../../content/developer/reference/backend/mixins.rst:182 -#: ../../content/developer/reference/backend/mixins.rst:192 +#: ../../content/developer/reference/backend/mixins.rst:155 +#: ../../content/developer/reference/backend/mixins.rst:183 +#: ../../content/developer/reference/backend/mixins.rst:193 #: ../../content/developer/tutorials/define_module_data.rst:186 #: ../../content/developer/tutorials/define_module_data.rst:187 msgid "True" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:157 +#: ../../content/developer/reference/backend/mixins.rst:158 msgid "Followers management" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:160 +#: ../../content/developer/reference/backend/mixins.rst:161 msgid "Add partners to the records followers." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:162 -#: ../../content/developer/reference/backend/mixins.rst:178 +#: ../../content/developer/reference/backend/mixins.rst:163 +#: ../../content/developer/reference/backend/mixins.rst:179 msgid "IDs of the partners that will be subscribed to the record" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:164 -#: ../../content/developer/reference/backend/mixins.rst:180 +#: ../../content/developer/reference/backend/mixins.rst:165 +#: ../../content/developer/reference/backend/mixins.rst:181 msgid "IDs of the channels that will be subscribed to the record" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:166 +#: ../../content/developer/reference/backend/mixins.rst:167 msgid "IDs of the subtypes that the channels/partners will be subscribed to (defaults to the default subtypes if ``None``)" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:168 +#: ../../content/developer/reference/backend/mixins.rst:169 msgid "if True, delete existing followers before creating new one using the subtypes given in the parameters" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:170 +#: ../../content/developer/reference/backend/mixins.rst:171 msgid "Success/Failure" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:176 +#: ../../content/developer/reference/backend/mixins.rst:177 msgid "Remove partners from the record's followers." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:188 +#: ../../content/developer/reference/backend/mixins.rst:189 msgid "Wrapper on message_subscribe, using users." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:190 +#: ../../content/developer/reference/backend/mixins.rst:191 msgid "IDs of the users that will be unsubscribed to the record; if None, unsubscribe the current user instead." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:196 +#: ../../content/developer/reference/backend/mixins.rst:197 msgid "Logging changes" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:198 +#: ../../content/developer/reference/backend/mixins.rst:199 msgid "The ``mail`` module adds a powerful tracking system on fields, allowing you to log changes to specific fields in the record's chatter. To add tracking to a field, simple set the tracking attribute to True." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:204 +#: ../../content/developer/reference/backend/mixins.rst:205 msgid "Let's track changes on the name and responsible of our business trips:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:218 +#: ../../content/developer/reference/backend/mixins.rst:219 msgid "From now on, every change to a trip's name or responsible will log a note on the record. The ``name`` field will be displayed in the notification as well to give more context about the notification (even if the name did not change)." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:224 +#: ../../content/developer/reference/backend/mixins.rst:225 msgid "Subtypes" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:226 +#: ../../content/developer/reference/backend/mixins.rst:227 msgid "Subtypes give you more granular control over messages. Subtypes act as a classification system for notifications, allowing subscribers to a document to customize the subtype of notifications they wish to receive." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:230 +#: ../../content/developer/reference/backend/mixins.rst:231 msgid "Subtypes are created as data in your module; the model has the following fields:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:233 +#: ../../content/developer/reference/backend/mixins.rst:234 msgid "``name`` (mandatory) - :class:`~odoo.fields.Char`" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:233 +#: ../../content/developer/reference/backend/mixins.rst:234 msgid "name of the subtype, will be displayed in the notification customization popup" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:236 +#: ../../content/developer/reference/backend/mixins.rst:237 msgid "``description`` - :class:`~odoo.fields.Char`" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:236 +#: ../../content/developer/reference/backend/mixins.rst:237 msgid "description that will be added in the message posted for this subtype. If void, the name will be added instead" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:239 +#: ../../content/developer/reference/backend/mixins.rst:240 msgid "``internal`` - :class:`~odoo.fields.Boolean`" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:239 +#: ../../content/developer/reference/backend/mixins.rst:240 msgid "messages with internal subtypes will be visible only by employees, aka members of the ``base.group_user`` group" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:244 +#: ../../content/developer/reference/backend/mixins.rst:245 msgid "``parent_id`` - :class:`~odoo.fields.Many2one`" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:242 +#: ../../content/developer/reference/backend/mixins.rst:243 msgid "link subtypes for automatic subscription; for example project subtypes are linked to task subtypes through this link. When someone is subscribed to a project, he will be subscribed to all tasks of this project with subtypes found using the parent subtype" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:247 +#: ../../content/developer/reference/backend/mixins.rst:248 msgid "``relation_field`` - :class:`~odoo.fields.Char`" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:247 +#: ../../content/developer/reference/backend/mixins.rst:248 msgid "as an example, when linking project and tasks subtypes, the relation field is the project_id field of tasks" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:249 +#: ../../content/developer/reference/backend/mixins.rst:250 msgid "``res_model`` - :class:`~odoo.fields.Char`" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:250 +#: ../../content/developer/reference/backend/mixins.rst:251 msgid "model the subtype applies to; if False, this subtype applies to all models" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:251 +#: ../../content/developer/reference/backend/mixins.rst:252 msgid "``default`` - :class:`~odoo.fields.Boolean`" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:252 +#: ../../content/developer/reference/backend/mixins.rst:253 msgid "whether the subtype is activated by default when subscribing" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:253 +#: ../../content/developer/reference/backend/mixins.rst:254 msgid "``sequence`` - :class:`~odoo.fields.Integer`" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:254 +#: ../../content/developer/reference/backend/mixins.rst:255 msgid "used to order subtypes in the notification customization popup" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:257 +#: ../../content/developer/reference/backend/mixins.rst:258 msgid "``hidden`` - :class:`~odoo.fields.Boolean`" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:256 +#: ../../content/developer/reference/backend/mixins.rst:257 msgid "whether the subtype is hidden in the notification customization popup" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:259 +#: ../../content/developer/reference/backend/mixins.rst:260 msgid "Interfacing subtypes with field tracking allows to subscribe to different kind of notifications depending on what might interest users. To do this, you can override the ``_track_subtype()`` function:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:265 -#: ../../content/developer/reference/backend/mixins.rst:346 +#: ../../content/developer/reference/backend/mixins.rst:266 +#: ../../content/developer/reference/backend/mixins.rst:347 msgid "Give the subtype triggered by the changes on the record according to values that have been updated." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:268 +#: ../../content/developer/reference/backend/mixins.rst:269 msgid "the original values of the record; only modified fields are present in the dict" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:270 -#: ../../content/developer/reference/backend/mixins.rst:388 +#: ../../content/developer/reference/backend/mixins.rst:271 +#: ../../content/developer/reference/backend/mixins.rst:389 msgid "a subtype's full external id or False if no subtype is triggered" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:275 +#: ../../content/developer/reference/backend/mixins.rst:276 msgid "Let's add a ``state`` field on our example class and trigger a notification with a specific subtype when this field change values." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:278 +#: ../../content/developer/reference/backend/mixins.rst:279 msgid "First, let's define our subtype:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:290 +#: ../../content/developer/reference/backend/mixins.rst:291 msgid "Then, we need to override the ``track_subtype()`` function. This function is called by the tracking system to know which subtype should be used depending on the change currently being applied. In our case, we want to use our shiny new subtype when the ``state`` field changes from *draft* to *confirmed*:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:320 +#: ../../content/developer/reference/backend/mixins.rst:321 msgid "Customizing notifications" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:322 +#: ../../content/developer/reference/backend/mixins.rst:323 msgid "When sending notifications to followers, it can be quite useful to add buttons in the template to allow quick actions directly from the e-mail. Even a simple button to link directly to the record's form view can be useful; however in most cases you don't want to display these buttons to portal users." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:327 +#: ../../content/developer/reference/backend/mixins.rst:328 msgid "The notification system allows customizing notification templates in the following ways:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:330 +#: ../../content/developer/reference/backend/mixins.rst:331 msgid "Display *Access Buttons*: these buttons are visible at the top of the notification e-mail and allow the recipient to directly access the form view of the record" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:332 +#: ../../content/developer/reference/backend/mixins.rst:333 msgid "Display *Follow Buttons*: these buttons allow the recipient to directly quickly subscribe from the record" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:334 +#: ../../content/developer/reference/backend/mixins.rst:335 msgid "Display *Unfollow Buttons*: these buttons allow the recipient to directly quickly unsubscribe from the record" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:336 +#: ../../content/developer/reference/backend/mixins.rst:337 msgid "Display *Custom Action Buttons*: these buttons are calls to specific routes and allow you to make some useful actions directly available from the e-mail (i.e. converting a lead to an opportunity, validating an expense sheet for an Expense Manager, etc.)" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:341 +#: ../../content/developer/reference/backend/mixins.rst:342 msgid "These buttons settings can be applied to different groups that you can define yourself by overriding the function ``_notify_get_groups``." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:349 +#: ../../content/developer/reference/backend/mixins.rst:350 msgid "``mail.message`` record currently being sent" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:350 +#: ../../content/developer/reference/backend/mixins.rst:351 msgid "list of tuple of the form (group_name, group_func,group_data) where: group_name is an identifier used only to be able to override and manipulate groups. Default groups are ``user`` (recipients linked to an employee user), ``portal`` (recipients linked to a portal user) and ``customer`` (recipients not linked to any user). An example of override use would be to add a group linked to a res.groups like Hr Officers to set specific action buttons to them. group_func is a function pointer taking a partner record as parameter. This method will be applied on recipients to know whether they belong to a given group or not. Only first matching group is kept. Evaluation order is the list order. group_data is a dict containing parameters for the notification email with the following possible keys - values: - has_button_access whether to display Access in email. True by default for new groups, False for portal / customer. - button_access dict with url and title of the button - has_button_follow whether to display Follow in email (if recipient is not currently following the thread). True by default for new groups, False for portal / customer. - button_follow dict with url and title of the button - has_button_unfollow whether to display Unfollow in email (if recipient is currently following the thread). True by default for new groups, False for portal / customer. - button_unfollow dict with url and title of the button - actions list of action buttons to display in the notification email. Each action is a dict containing url and title of the button." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:350 +#: ../../content/developer/reference/backend/mixins.rst:351 msgid "list of tuple of the form (group_name, group_func,group_data) where:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:357 +#: ../../content/developer/reference/backend/mixins.rst:358 msgid "group_name" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:353 +#: ../../content/developer/reference/backend/mixins.rst:354 msgid "is an identifier used only to be able to override and manipulate groups. Default groups are ``user`` (recipients linked to an employee user), ``portal`` (recipients linked to a portal user) and ``customer`` (recipients not linked to any user). An example of override use would be to add a group linked to a res.groups like Hr Officers to set specific action buttons to them." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:362 +#: ../../content/developer/reference/backend/mixins.rst:363 msgid "group_func" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:360 +#: ../../content/developer/reference/backend/mixins.rst:361 msgid "is a function pointer taking a partner record as parameter. This method will be applied on recipients to know whether they belong to a given group or not. Only first matching group is kept. Evaluation order is the list order." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:386 +#: ../../content/developer/reference/backend/mixins.rst:387 msgid "group_data" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:365 +#: ../../content/developer/reference/backend/mixins.rst:366 msgid "is a dict containing parameters for the notification email with the following possible keys - values:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:369 +#: ../../content/developer/reference/backend/mixins.rst:370 msgid "has_button_access" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:369 +#: ../../content/developer/reference/backend/mixins.rst:370 msgid "whether to display Access in email. True by default for new groups, False for portal / customer." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:371 +#: ../../content/developer/reference/backend/mixins.rst:372 msgid "button_access" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:372 -#: ../../content/developer/reference/backend/mixins.rst:378 -#: ../../content/developer/reference/backend/mixins.rst:383 +#: ../../content/developer/reference/backend/mixins.rst:373 +#: ../../content/developer/reference/backend/mixins.rst:379 +#: ../../content/developer/reference/backend/mixins.rst:384 msgid "dict with url and title of the button" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:375 +#: ../../content/developer/reference/backend/mixins.rst:376 msgid "has_button_follow" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:374 +#: ../../content/developer/reference/backend/mixins.rst:375 msgid "whether to display Follow in email (if recipient is not currently following the thread). True by default for new groups, False for portal / customer." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:377 +#: ../../content/developer/reference/backend/mixins.rst:378 msgid "button_follow" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:380 +#: ../../content/developer/reference/backend/mixins.rst:381 msgid "has_button_unfollow" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:380 +#: ../../content/developer/reference/backend/mixins.rst:381 msgid "whether to display Unfollow in email (if recipient is currently following the thread). True by default for new groups, False for portal / customer." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:382 +#: ../../content/developer/reference/backend/mixins.rst:383 msgid "button_unfollow" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:386 +#: ../../content/developer/reference/backend/mixins.rst:387 msgid "actions" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:385 +#: ../../content/developer/reference/backend/mixins.rst:386 msgid "list of action buttons to display in the notification email. Each action is a dict containing url and title of the button." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:391 +#: ../../content/developer/reference/backend/mixins.rst:392 msgid "The urls in the actions list can be generated automatically by calling the ``_notify_get_action_link()`` function:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:397 +#: ../../content/developer/reference/backend/mixins.rst:398 msgid "Generate a link for the given type on the current record (or on a specific record if the kwargs ``model`` and ``res_id`` are set)." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:400 +#: ../../content/developer/reference/backend/mixins.rst:401 msgid "link type to be generated; can be any of these values: ``view`` link to form view of the record ``assign`` assign the logged user to the ``user_id`` field of the record (if it exists) ``follow`` self-explanatory ``unfollow`` self-explanatory ``method`` call a method on the record; the method's name should be provided as the kwarg ``method`` ``new`` open an empty form view for a new record; you can specify a specific action by providing its id (database id or fully resolved external id) in the kwarg ``action_id``" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:400 +#: ../../content/developer/reference/backend/mixins.rst:401 msgid "link type to be generated; can be any of these values:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:402 +#: ../../content/developer/reference/backend/mixins.rst:403 msgid "``view``" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:403 +#: ../../content/developer/reference/backend/mixins.rst:404 msgid "link to form view of the record" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:405 +#: ../../content/developer/reference/backend/mixins.rst:406 msgid "``assign``" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:405 +#: ../../content/developer/reference/backend/mixins.rst:406 msgid "assign the logged user to the ``user_id`` field of the record (if it exists)" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:407 +#: ../../content/developer/reference/backend/mixins.rst:408 msgid "``follow``" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:408 -#: ../../content/developer/reference/backend/mixins.rst:410 -#: ../../content/developer/reference/backend/views.rst:1574 -#: ../../content/developer/reference/backend/views.rst:1576 +#: ../../content/developer/reference/backend/mixins.rst:409 +#: ../../content/developer/reference/backend/mixins.rst:411 +#: ../../content/developer/reference/backend/views.rst:1583 +#: ../../content/developer/reference/backend/views.rst:1585 msgid "self-explanatory" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:409 +#: ../../content/developer/reference/backend/mixins.rst:410 msgid "``unfollow``" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:412 +#: ../../content/developer/reference/backend/mixins.rst:413 msgid "``method``" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:412 +#: ../../content/developer/reference/backend/mixins.rst:413 msgid "call a method on the record; the method's name should be provided as the kwarg ``method``" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:417 +#: ../../content/developer/reference/backend/mixins.rst:418 msgid "``new``" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:415 +#: ../../content/developer/reference/backend/mixins.rst:416 msgid "open an empty form view for a new record; you can specify a specific action by providing its id (database id or fully resolved external id) in the kwarg ``action_id``" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:419 +#: ../../content/developer/reference/backend/mixins.rst:420 msgid "link of the type selected for the record" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:424 +#: ../../content/developer/reference/backend/mixins.rst:425 msgid "Let's add a custom button to the Business Trip state change notification; this button will reset the state to Draft and will be only visible to a member of the (imaginary) group Travel Manager (``business.group_trip_manager``)" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:463 +#: ../../content/developer/reference/backend/mixins.rst:464 msgid "Note that that I could have defined my evaluation function outside of this method and define a global function to do it instead of a lambda, but for the sake of being more brief and less verbose in these documentation files that can sometimes be boring, I choose the former instead of the latter." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:469 +#: ../../content/developer/reference/backend/mixins.rst:470 msgid "Overriding defaults" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:471 +#: ../../content/developer/reference/backend/mixins.rst:472 msgid "There are several ways you can customize the behaviour of ``mail.thread`` models, including (but not limited to):" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:476 +#: ../../content/developer/reference/backend/mixins.rst:477 msgid "``_mail_post_access`` - :class:`~odoo.models.Model` attribute" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:475 +#: ../../content/developer/reference/backend/mixins.rst:476 msgid "the required access rights to be able to post a message on the model; by default a ``write`` access is needed, can be set to ``read`` as well" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:496 +#: ../../content/developer/reference/backend/mixins.rst:497 msgid "Context keys:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:479 +#: ../../content/developer/reference/backend/mixins.rst:480 msgid "These context keys can be used to somewhat control ``mail.thread`` features like auto-subscription or field tracking during calls to ``create()`` or ``write()`` (or any other method where it may be useful)." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:483 +#: ../../content/developer/reference/backend/mixins.rst:484 msgid "``mail_create_nosubscribe``: at create or message_post, do not subscribe the current user to the record thread" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:485 +#: ../../content/developer/reference/backend/mixins.rst:486 msgid "``mail_create_nolog``: at create, do not log the automatic ' created' message" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:487 +#: ../../content/developer/reference/backend/mixins.rst:488 msgid "``mail_notrack``: at create and write, do not perform the value tracking creating messages" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:489 +#: ../../content/developer/reference/backend/mixins.rst:490 msgid "``tracking_disable``: at create and write, perform no MailThread features (auto subscription, tracking, post, ...)" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:491 +#: ../../content/developer/reference/backend/mixins.rst:492 msgid "``mail_auto_delete``: auto delete mail notifications; True by default" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:492 +#: ../../content/developer/reference/backend/mixins.rst:493 msgid "``mail_notify_force_send``: if less than 50 email notifications to send, send them directly instead of using the queue; True by default" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:494 +#: ../../content/developer/reference/backend/mixins.rst:495 msgid "``mail_notify_user_signature``: add the current user signature in email notifications; True by default" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:501 +#: ../../content/developer/reference/backend/mixins.rst:502 msgid "Mail alias" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:503 +#: ../../content/developer/reference/backend/mixins.rst:504 msgid "Aliases are configurable email addresses that are linked to a specific record (which usually inherits the ``mail.alias.mixin`` model) that will create new records when contacted via e-mail. They are an easy way to make your system accessible from the outside, allowing users or customers to quickly create records in your database without needing to connect to Odoo directly." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:510 +#: ../../content/developer/reference/backend/mixins.rst:511 msgid "Aliases vs. Incoming Mail Gateway" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:512 +#: ../../content/developer/reference/backend/mixins.rst:513 msgid "Some people use the Incoming Mail Gateway for this same purpose. You still need a correctly configured mail gateway to use aliases, however a single catchall domain will be sufficient since all routing will be done inside Odoo. Aliases have several advantages over Mail Gateways:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:520 +#: ../../content/developer/reference/backend/mixins.rst:521 msgid "Easier to configure" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:518 +#: ../../content/developer/reference/backend/mixins.rst:519 msgid "A single incoming gateway can be used by many aliases; this avoids having to configure multiple emails on your domain name (all configuration is done inside Odoo)" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:521 +#: ../../content/developer/reference/backend/mixins.rst:522 msgid "No need for System access rights to configure aliases" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:522 +#: ../../content/developer/reference/backend/mixins.rst:523 msgid "More coherent" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:523 +#: ../../content/developer/reference/backend/mixins.rst:524 msgid "Configurable on the related record, not in a Settings submenu" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:528 +#: ../../content/developer/reference/backend/mixins.rst:529 msgid "Easier to override server-side" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:525 +#: ../../content/developer/reference/backend/mixins.rst:526 msgid "Mixin model is built to be extended from the start, allowing you to extract useful data from incoming e-mails more easily than with a mail gateway." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:531 +#: ../../content/developer/reference/backend/mixins.rst:532 msgid "Alias support integration" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:533 +#: ../../content/developer/reference/backend/mixins.rst:534 msgid "Aliases are usually configured on a parent model which will then create specific record when contacted by e-mail. For example, Project have aliases to create tasks or issues, Sales Team have aliases to generate Leads." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:537 +#: ../../content/developer/reference/backend/mixins.rst:538 msgid "The model that will be created by the alias **must** inherit the ``mail_thread`` model." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:540 +#: ../../content/developer/reference/backend/mixins.rst:541 msgid "Alias support is added by inheriting ``mail.alias.mixin``; this mixin will generate a new ``mail.alias`` record for each record of the parent class that gets created (for example, every ``project.project`` record having its ``mail.alias`` record initialized on creation)." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:545 +#: ../../content/developer/reference/backend/mixins.rst:546 msgid "Aliases can also be created manually and supported by a simple :class:`~odoo.fields.Many2one` field. This guide assumes you wish a more complete integration with automatic creation of the alias, record-specific default values, etc." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:550 +#: ../../content/developer/reference/backend/mixins.rst:551 msgid "Unlike ``mail.thread`` inheritance, the ``mail.alias.mixin`` **requires** some specific overrides to work correctly. These overrides will specify the values of the created alias, like the kind of record it must create and possibly some default values these records may have depending on the parent object:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:557 +#: ../../content/developer/reference/backend/mixins.rst:558 msgid "Return the model name for the alias. Incoming emails that are not replies to existing records will cause the creation of a new record of this alias model. The value may depend on ``vals``, the dict of values passed to ``create`` when a record of this model is created." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:562 +#: ../../content/developer/reference/backend/mixins.rst:563 msgid "values of the newly created record that will holding the alias" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:564 +#: ../../content/developer/reference/backend/mixins.rst:565 msgid "model name" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:569 +#: ../../content/developer/reference/backend/mixins.rst:570 msgid "Return values to create an alias, or to write on the alias after its creation. While not completely mandatory, it is usually required to make sure that newly created records will be linked to the alias' parent (i.e. tasks getting created in the right project) by setting a dictionary of default values in the alias' ``alias_defaults`` field." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:575 +#: ../../content/developer/reference/backend/mixins.rst:576 msgid "dictionary of values that will be written to the new alias" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:578 +#: ../../content/developer/reference/backend/mixins.rst:579 msgid "The ``_get_alias_values()`` override is particularly interesting as it allows you to modify the behaviour of your aliases easily. Among the fields that can be set on the alias, the following are of particular interest:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:583 +#: ../../content/developer/reference/backend/mixins.rst:584 msgid "``alias_name`` - :class:`~odoo.fields.Char`" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:583 +#: ../../content/developer/reference/backend/mixins.rst:584 msgid "name of the email alias, e.g. 'jobs' if you want to catch emails for " msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:588 +#: ../../content/developer/reference/backend/mixins.rst:589 msgid "``alias_user_id`` - :class:`~odoo.fields.Many2one` (``res.users``)" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:586 +#: ../../content/developer/reference/backend/mixins.rst:587 msgid "owner of records created upon receiving emails on this alias; if this field is not set the system will attempt to find the right owner based on the sender (From) address, or will use the Administrator account if no system user is found for that address" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:591 +#: ../../content/developer/reference/backend/mixins.rst:592 msgid "``alias_defaults`` - :class:`~odoo.fields.Text`" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:591 +#: ../../content/developer/reference/backend/mixins.rst:592 msgid "Python dictionary that will be evaluated to provide default values when creating new records for this alias" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:595 +#: ../../content/developer/reference/backend/mixins.rst:596 msgid "``alias_force_thread_id`` - :class:`~odoo.fields.Integer`" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:594 +#: ../../content/developer/reference/backend/mixins.rst:595 msgid "optional ID of a thread (record) to which all incoming messages will be attached, even if they did not reply to it; if set, this will disable the creation of new records completely" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:602 +#: ../../content/developer/reference/backend/mixins.rst:603 msgid "``alias_contact`` - :class:`~odoo.fields.Selection`" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:598 +#: ../../content/developer/reference/backend/mixins.rst:599 msgid "Policy to post a message on the document using the mailgateway" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:600 +#: ../../content/developer/reference/backend/mixins.rst:601 msgid "*everyone*: everyone can post" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:601 +#: ../../content/developer/reference/backend/mixins.rst:602 msgid "*partners*: only authenticated partners" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:602 +#: ../../content/developer/reference/backend/mixins.rst:603 msgid "*followers*: only followers of the related document or members of following channels" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:604 +#: ../../content/developer/reference/backend/mixins.rst:605 msgid "Note that aliases make use of :ref:`delegation inheritance `, which means that while the alias is stored in another table, you have access to all these fields directly from your parent object. This allows you to make your alias easily configurable from the record's form view." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:611 +#: ../../content/developer/reference/backend/mixins.rst:612 msgid "Let's add aliases on our business trip class to create expenses on the fly via e-mail." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:659 +#: ../../content/developer/reference/backend/mixins.rst:660 msgid "We would like our alias to be easily configurable from the form view of our business trips, so let's add the following to our form view:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:684 +#: ../../content/developer/reference/backend/mixins.rst:685 msgid "Now we can change the alias address directly from the form view and change who can send e-mails to the alias." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:687 +#: ../../content/developer/reference/backend/mixins.rst:688 msgid "We can then override ``message_new()`` on our expense model to fetch the values from our email when the expense will be created:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:724 +#: ../../content/developer/reference/backend/mixins.rst:725 msgid "Activities tracking" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:726 +#: ../../content/developer/reference/backend/mixins.rst:727 msgid "Activities are actions users have to take on a document like making a phone call or organizing a meeting. Activities come with the mail module as they are integrated in the Chatter but are *not bundled with mail.thread*. Activities are records of the ``mail.activity`` class, which have a type (``mail.activity.type``), name, description, scheduled time (among others). Pending activities are visible above the message history in the chatter widget." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:733 +#: ../../content/developer/reference/backend/mixins.rst:734 msgid "You can integrate activities using the ``mail.activity.mixin`` class on your object and the specific widgets to display them (via the field ``activity_ids``) in the form view and kanban view of your records (``mail_activity`` and ``kanban_activity`` widgets, respectively)." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:740 +#: ../../content/developer/reference/backend/mixins.rst:741 msgid "Organizing a business trip is a tedious process and tracking needed activities like ordering plane tickets or a cab for the airport could be useful. To do so, we will add the activities mixin on our model and display the next planned activities in the message history of our trip." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:755 +#: ../../content/developer/reference/backend/mixins.rst:756 msgid "We modify the form view of our trips to display their next activities:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:774 -#: ../../content/developer/reference/backend/mixins.rst:850 -#: ../../content/developer/reference/backend/mixins.rst:1069 +#: ../../content/developer/reference/backend/mixins.rst:775 +#: ../../content/developer/reference/backend/mixins.rst:851 +#: ../../content/developer/reference/backend/mixins.rst:1070 msgid "You can find concrete examples of integration in the following models:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:776 -#: ../../content/developer/reference/backend/mixins.rst:852 +#: ../../content/developer/reference/backend/mixins.rst:777 +#: ../../content/developer/reference/backend/mixins.rst:853 msgid "``crm.lead`` in the CRM (*crm*) Application" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:777 +#: ../../content/developer/reference/backend/mixins.rst:778 msgid "``sale.order`` in the Sales (*sale*) Application" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:778 +#: ../../content/developer/reference/backend/mixins.rst:779 msgid "``project.task`` in the Project (*project*) Application" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:784 +#: ../../content/developer/reference/backend/mixins.rst:785 msgid "Website features" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:789 +#: ../../content/developer/reference/backend/mixins.rst:790 msgid "Visitor tracking" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:791 +#: ../../content/developer/reference/backend/mixins.rst:792 msgid "The ``utm.mixin`` class can be used to track online marketing/communication campaigns through arguments in links to specified resources. The mixin adds 3 fields to your model:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:795 +#: ../../content/developer/reference/backend/mixins.rst:796 msgid "``campaign_id``: :class:`~odoo.fields.Many2one` field to a ``utm.campaign`` object (i.e. Christmas_Special, Fall_Collection, etc.)" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:797 +#: ../../content/developer/reference/backend/mixins.rst:798 msgid "``source_id``: :class:`~odoo.fields.Many2one` field to a ``utm.source`` object (i.e. Search Engine, mailing list, etc.)" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:799 +#: ../../content/developer/reference/backend/mixins.rst:800 msgid "``medium_id``: :class:`~odoo.fields.Many2one` field to a ``utm.medium`` object (i.e. Snail Mail, e-Mail, social network update, etc.)" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:802 +#: ../../content/developer/reference/backend/mixins.rst:803 msgid "These models have a single field ``name`` (i.e. they are simply there to distinguish campaigns but don't have any specific behaviour)." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:805 +#: ../../content/developer/reference/backend/mixins.rst:806 msgid "Once a customer visits your website with these parameters set in the url (i.e. https://www.odoo.com/?campaign_id=mixin_talk&source_id=www.odoo.com&medium_id=website), three cookies are set in the visitor's website for these parameters. Once a object that inherits the utm.mixin is created from the website (i.e. lead form, job application, etc.), the utm.mixin code kicks in and fetches the values from the cookies to set them in the new record. Once this is done, you can then use the campaign/source/medium fields as any other field when defining reports and views (group by, etc.)." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:814 +#: ../../content/developer/reference/backend/mixins.rst:815 msgid "To extend this behaviour, simply add a relational field to a simple model (the model should support the *quick create* (i.e. call to ``create()`` with a single ``name`` value) and extend the function ``tracking_fields()``:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:843 +#: ../../content/developer/reference/backend/mixins.rst:844 msgid "This will tell the system to create a cookie named *odoo_utm_my_field* with the value found in the url parameter ``my_field``; once a new record of this model is created by a call from a website form, the generic override of the ``create()`` method of ``utm.mixin`` will fetch the default values for this field from the cookie (and the ``my_module.my_track`` record will be creatwed on the fly if it does not exist yet)." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:853 +#: ../../content/developer/reference/backend/mixins.rst:854 msgid "``hr.applicant`` in the Recruitment Process (*hr_recruitment*) Application" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:854 -#: ../../content/developer/reference/backend/mixins.rst:1072 +#: ../../content/developer/reference/backend/mixins.rst:855 +#: ../../content/developer/reference/backend/mixins.rst:1073 msgid "``helpdesk.ticket`` in the Helpdesk (*helpdesk* - Odoo Enterprise only) Application" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:859 +#: ../../content/developer/reference/backend/mixins.rst:860 msgid "Website visibility" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:861 +#: ../../content/developer/reference/backend/mixins.rst:862 msgid "You can quite easily add a website visibility toggle on any of your record. While this mixin is quite easy to implement manually, it is the most often-used after the ``mail.thread`` inheritance; a testament to its usefulness. The typical use case for this mixin is any object that has a frontend-page; being able to control the visibility of the page allows you to take your time while editing the page and only publish it when you're satisfied." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:868 +#: ../../content/developer/reference/backend/mixins.rst:869 msgid "To include the functionality, you only need to inherit ``website.published.mixin``:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:877 +#: ../../content/developer/reference/backend/mixins.rst:878 msgid "This mixin adds 2 fields on your model:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:879 +#: ../../content/developer/reference/backend/mixins.rst:880 msgid "``website_published``: :class:`~odoo.fields.Boolean` field which represents the status of the publication" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:881 +#: ../../content/developer/reference/backend/mixins.rst:882 msgid "``website_url``: :class:`~odoo.fields.Char` field which represents the URL through which the object is accessed" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:884 +#: ../../content/developer/reference/backend/mixins.rst:885 msgid "Note that this last field is a computed field and must be implemented for your class:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:892 +#: ../../content/developer/reference/backend/mixins.rst:893 msgid "Once the mechanism is in place, you just have to adapt your frontend and backend views to make it accessible. In the backend, adding a button in the button box is usually the way to go:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:903 +#: ../../content/developer/reference/backend/mixins.rst:904 msgid "In the frontend, some security checks are needed to avoid showing 'Editing' buttons to website visitors:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:917 +#: ../../content/developer/reference/backend/mixins.rst:918 msgid "Note that you must pass your object as the variable ``object`` to the template; in this example, the ``blog.post`` record was passed as the ``blog_post`` variable to the ``qweb`` rendering engine, it is necessary to specify this to the publish management template. The ``publish_edit`` variable allow the frontend button to link to the backend (allowing you to switch from frontend to backend and vice-versa easily); if set, you must specify the full external id of the action you want to call in the backend in the ``action`` variable (note that a Form View must exist for the model)." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:926 +#: ../../content/developer/reference/backend/mixins.rst:927 msgid "The action ``website_publish_button`` is defined in the mixin and adapts its behaviour to your object: if the class has a valid ``website_url`` compute function, the user is redirected to the frontend when he clicks on the button; the user can then publish the page directly from the frontend. This ensures that no online publication can happen by accident. If there is not compute function, the boolean ``website_published`` is simply triggered." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:936 +#: ../../content/developer/reference/backend/mixins.rst:937 msgid "Website metadata" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:938 +#: ../../content/developer/reference/backend/mixins.rst:939 msgid "This simple mixin simply allows you to easily inject metadata in your frontend pages." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:948 +#: ../../content/developer/reference/backend/mixins.rst:949 msgid "This mixin adds 3 fields on your model:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:950 +#: ../../content/developer/reference/backend/mixins.rst:951 msgid "``website_meta_title``: :class:`~odoo.fields.Char` field that allow you to set an additional title to your page" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:952 +#: ../../content/developer/reference/backend/mixins.rst:953 msgid "``website_meta_description``: :class:`~odoo.fields.Char` field that contains a short description of the page (sometimes used in search engines results)" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:954 +#: ../../content/developer/reference/backend/mixins.rst:955 msgid "``website_meta_keywords``: :class:`~odoo.fields.Char` field that contains some keywords to help your page to be classified more precisely by search engines; the \"Promote\" tool will help you select lexically-related keywords easily" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:958 +#: ../../content/developer/reference/backend/mixins.rst:959 msgid "These fields are editable in the frontend using the \"Promote\" tool from the Editor toolbar. Setting these fields can help search engines to better index your pages. Note that search engines do not base their results only on these metadata; the best SEO practice should still be to get referenced by reliable sources." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:966 +#: ../../content/developer/reference/backend/mixins.rst:967 msgid "Others" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:971 +#: ../../content/developer/reference/backend/mixins.rst:972 msgid "Customer Rating" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:973 +#: ../../content/developer/reference/backend/mixins.rst:974 msgid "The rating mixin allows sending email to ask for customer rating, automatic transitioning in a kanban processes and aggregating statistics on your ratings." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:977 +#: ../../content/developer/reference/backend/mixins.rst:978 msgid "Adding rating on your model" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:979 +#: ../../content/developer/reference/backend/mixins.rst:980 msgid "To add rating support, simply inherit the ``rating.mixin`` model:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:990 +#: ../../content/developer/reference/backend/mixins.rst:991 msgid "The behaviour of the mixin adapts to your model:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:992 +#: ../../content/developer/reference/backend/mixins.rst:993 msgid "The ``rating.rating`` record will be linked to the ``partner_id`` field of your model (if the field is present)." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:995 +#: ../../content/developer/reference/backend/mixins.rst:996 msgid "this behaviour can be overridden with the function ``rating_get_partner_id()`` if you use another field than ``partner_id``" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:998 +#: ../../content/developer/reference/backend/mixins.rst:999 msgid "The ``rating.rating`` record will be linked to the partner of the ``user_id`` field of your model (if the field is present) (i.e. the partner who is rated)" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:1001 +#: ../../content/developer/reference/backend/mixins.rst:1002 msgid "this behaviour can be overridden with the function ``rating_get_rated_partner_id()`` if you use another field than ``user_id`` (note that the function must return a ``res.partner``, for ``user_id`` the system automatically fetches the partner of the user)" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:1006 +#: ../../content/developer/reference/backend/mixins.rst:1007 msgid "The chatter history will display the rating event (if your model inherits from ``mail.thread``)" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:1010 +#: ../../content/developer/reference/backend/mixins.rst:1011 msgid "Send rating requests by e-mail" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:1012 +#: ../../content/developer/reference/backend/mixins.rst:1013 msgid "If you wish to send emails to request a rating, simply generate an e-mail with links to the rating object. A very basic email template could look like this:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:1036 +#: ../../content/developer/reference/backend/mixins.rst:1037 msgid "Your customer will then receive an e-mail with links to a simple webpage allowing them to provide a feedback on their interaction with your users (including a free-text feedback message)." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:1040 +#: ../../content/developer/reference/backend/mixins.rst:1041 msgid "You can then quite easily integrate your ratings with your form view by defining an action for the ratings:" msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:1066 +#: ../../content/developer/reference/backend/mixins.rst:1067 msgid "Note that there are default views (kanban,pivot,graph) for ratings which allow you a quick bird's eye view of your customer ratings." msgstr "" -#: ../../content/developer/reference/backend/mixins.rst:1071 +#: ../../content/developer/reference/backend/mixins.rst:1072 msgid "``project.task`` in the Project (*rating_project*) Application" msgstr "" @@ -7927,496 +7949,501 @@ msgstr "" msgid "The prefetching also works on *secondary records*: when relational fields are read, their values (which are records) are subscribed for future prefetching. Accessing one of those secondary records prefetches all secondary records from the same model. This makes the following example generate only two queries, one for partners and one for countries::" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:619 +#: ../../content/developer/reference/backend/orm.rst:616 +msgid "The methods :meth:`~odoo.models.Model.search_fetch` and :meth:`~odoo.models.Model.fetch` can be used to populate the cache of records, typically in cases where the prefetching mechanism does not work well." +msgstr "" + +#: ../../content/developer/reference/backend/orm.rst:625 msgid "Method decorators" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:633 +#: ../../content/developer/reference/backend/orm.rst:639 msgid "With sphinx 2.0 : autodecorator" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:635 +#: ../../content/developer/reference/backend/orm.rst:641 msgid "Add in Views reference * It is possible to suppress the trigger from a specific field by adding ``on_change=\"0\"`` in a view::" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:641 +#: ../../content/developer/reference/backend/orm.rst:647 msgid "will not trigger any interface update when the field is edited by the user, even if there are function fields or explicit onchange depending on that field." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:648 +#: ../../content/developer/reference/backend/orm.rst:654 #: ../../content/developer/reference/frontend/framework_overview.rst:96 msgid "Environment" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:665 +#: ../../content/developer/reference/backend/orm.rst:671 msgid "When creating a recordset from an other recordset, the environment is inherited. The environment can be used to get an empty recordset in an other model, and query that model:" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:676 +#: ../../content/developer/reference/backend/orm.rst:682 msgid "Some lazy properties are available to access the environment (contextual) data:" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:684 +#: ../../content/developer/reference/backend/orm.rst:690 msgid "Useful environment methods" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:692 +#: ../../content/developer/reference/backend/orm.rst:698 msgid "Altering the environment" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:709 +#: ../../content/developer/reference/backend/orm.rst:715 msgid "SQL Execution" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:711 +#: ../../content/developer/reference/backend/orm.rst:717 msgid "The :attr:`~odoo.api.Environment.cr` attribute on environments is the cursor for the current database transaction and allows executing SQL directly, either for queries which are difficult to express using the ORM (e.g. complex joins) or for performance reasons::" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:719 +#: ../../content/developer/reference/backend/orm.rst:725 msgid "Executing raw SQL bypasses the ORM and, by consequent, Odoo security rules. Please make sure your queries are sanitized when using user input and prefer using ORM utilities if you don't really need to use SQL queries." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:723 +#: ../../content/developer/reference/backend/orm.rst:729 msgid "One important thing to know about models is that they don't necessarily perform database updates right away. Indeed, for performance reasons, the framework delays the recomputation of fields after modifying records. And some database updates are delayed, too. Therefore, before querying the database, one has to make sure that it contains the relevant data for the query. This operation is called *flushing* and performs the expected database updates." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:740 +#: ../../content/developer/reference/backend/orm.rst:746 msgid "Before every SQL query, one has to flush the data needed for that query. There are three levels for flushing, each with its own API. One can flush either everything, all the records of a model, or some specific records. Because delaying updates improves performance in general, we recommend to be *specific* when flushing." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:752 +#: ../../content/developer/reference/backend/orm.rst:758 msgid "Because models use the same cursor and the :class:`~odoo.api.Environment` holds various caches, these caches must be invalidated when *altering* the database in raw SQL, or further uses of models may become incoherent. It is necessary to clear caches when using ``CREATE``, ``UPDATE`` or ``DELETE`` in SQL, but not ``SELECT`` (which simply reads the database)." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:770 +#: ../../content/developer/reference/backend/orm.rst:776 msgid "Just like flushing, one can invalidate either the whole cache, the cache of all the records of a model, or the cache of specific records. One can even invalidate specific fields on some records or all records of a model. As the cache improves performance in general, we recommend to be *specific* when invalidating." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:782 +#: ../../content/developer/reference/backend/orm.rst:788 msgid "The methods above keep the caches and the database consistent with each other. However, if computed field dependencies have been modified in the database, one has to inform the models for the computed fields to be recomputed. The only thing the framework needs to know is *what* fields have changed on *which* records." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:804 +#: ../../content/developer/reference/backend/orm.rst:810 msgid "One has to figure out which records have been modified. There are many ways to do this, possibly involving extra SQL queries. In the example above, we take advantage of the ``RETURNING`` clause of PostgreSQL to retrieve the information without an extra query. After making the cache consistent by invalidation, invoke the method ``modified`` on the modified records with the fields that have been updated." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:817 +#: ../../content/developer/reference/backend/orm.rst:823 msgid "Common ORM methods" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:822 +#: ../../content/developer/reference/backend/orm.rst:828 msgid "Create/update" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:824 +#: ../../content/developer/reference/backend/orm.rst:830 msgid "api.model_create_multi information" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:837 +#: ../../content/developer/reference/backend/orm.rst:843 msgid "Search/Read" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:859 +#: ../../content/developer/reference/backend/orm.rst:871 msgid "Search domains" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:861 +#: ../../content/developer/reference/backend/orm.rst:873 msgid "A domain is a list of criteria, each criterion being a triple (either a ``list`` or a ``tuple``) of ``(field_name, operator, value)`` where:" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:867 +#: ../../content/developer/reference/backend/orm.rst:879 msgid "``field_name`` (``str``)" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:865 +#: ../../content/developer/reference/backend/orm.rst:877 msgid "a field name of the current model, or a relationship traversal through a :class:`~odoo.fields.Many2one` using dot-notation e.g. ``'street'`` or ``'partner_id.country'``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:921 +#: ../../content/developer/reference/backend/orm.rst:933 msgid "``operator`` (``str``)" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:870 +#: ../../content/developer/reference/backend/orm.rst:882 msgid "an operator used to compare the ``field_name`` with the ``value``. Valid operators are:" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:873 +#: ../../content/developer/reference/backend/orm.rst:885 msgid "``=``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:874 +#: ../../content/developer/reference/backend/orm.rst:886 msgid "equals to" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:875 +#: ../../content/developer/reference/backend/orm.rst:887 msgid "``!=``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:876 +#: ../../content/developer/reference/backend/orm.rst:888 msgid "not equals to" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:877 +#: ../../content/developer/reference/backend/orm.rst:889 msgid "``>``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:878 +#: ../../content/developer/reference/backend/orm.rst:890 msgid "greater than" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:879 +#: ../../content/developer/reference/backend/orm.rst:891 msgid "``>=``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:880 +#: ../../content/developer/reference/backend/orm.rst:892 msgid "greater than or equal to" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:881 +#: ../../content/developer/reference/backend/orm.rst:893 msgid "``<``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:882 +#: ../../content/developer/reference/backend/orm.rst:894 msgid "less than" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:883 +#: ../../content/developer/reference/backend/orm.rst:895 msgid "``<=``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:884 +#: ../../content/developer/reference/backend/orm.rst:896 msgid "less than or equal to" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:886 +#: ../../content/developer/reference/backend/orm.rst:898 msgid "``=?``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:886 +#: ../../content/developer/reference/backend/orm.rst:898 msgid "unset or equals to (returns true if ``value`` is either ``None`` or ``False``, otherwise behaves like ``=``)" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:890 +#: ../../content/developer/reference/backend/orm.rst:902 msgid "``=like``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:889 +#: ../../content/developer/reference/backend/orm.rst:901 msgid "matches ``field_name`` against the ``value`` pattern. An underscore ``_`` in the pattern stands for (matches) any single character; a percent sign ``%`` matches any string of zero or more characters." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:893 +#: ../../content/developer/reference/backend/orm.rst:905 msgid "``like``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:893 +#: ../../content/developer/reference/backend/orm.rst:905 msgid "matches ``field_name`` against the ``%value%`` pattern. Similar to ``=like`` but wraps ``value`` with '%' before matching" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:895 +#: ../../content/developer/reference/backend/orm.rst:907 msgid "``not like``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:896 +#: ../../content/developer/reference/backend/orm.rst:908 msgid "doesn't match against the ``%value%`` pattern" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:897 +#: ../../content/developer/reference/backend/orm.rst:909 msgid "``ilike``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:898 +#: ../../content/developer/reference/backend/orm.rst:910 msgid "case insensitive ``like``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:899 +#: ../../content/developer/reference/backend/orm.rst:911 msgid "``not ilike``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:900 +#: ../../content/developer/reference/backend/orm.rst:912 msgid "case insensitive ``not like``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:901 +#: ../../content/developer/reference/backend/orm.rst:913 msgid "``=ilike``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:902 +#: ../../content/developer/reference/backend/orm.rst:914 msgid "case insensitive ``=like``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:904 +#: ../../content/developer/reference/backend/orm.rst:916 msgid "``in``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:904 +#: ../../content/developer/reference/backend/orm.rst:916 msgid "is equal to any of the items from ``value``, ``value`` should be a list of items" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:906 +#: ../../content/developer/reference/backend/orm.rst:918 msgid "``not in``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:907 +#: ../../content/developer/reference/backend/orm.rst:919 msgid "is unequal to all of the items from ``value``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:913 +#: ../../content/developer/reference/backend/orm.rst:925 msgid "``child_of``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:909 +#: ../../content/developer/reference/backend/orm.rst:921 msgid "is a child (descendant) of a ``value`` record (value can be either one item or a list of items)." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:912 -#: ../../content/developer/reference/backend/orm.rst:919 +#: ../../content/developer/reference/backend/orm.rst:924 +#: ../../content/developer/reference/backend/orm.rst:931 msgid "Takes the semantics of the model into account (i.e following the relationship field named by :attr:`~odoo.models.Model._parent_name`)." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:921 +#: ../../content/developer/reference/backend/orm.rst:933 msgid "``parent_of``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:916 +#: ../../content/developer/reference/backend/orm.rst:928 msgid "is a parent (ascendant) of a ``value`` record (value can be either one item or a list of items)." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:924 +#: ../../content/developer/reference/backend/orm.rst:936 msgid "variable type, must be comparable (through ``operator``) to the named field." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:927 +#: ../../content/developer/reference/backend/orm.rst:939 msgid "Domain criteria can be combined using logical operators in *prefix* form:" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:930 +#: ../../content/developer/reference/backend/orm.rst:942 msgid "``'&'``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:930 +#: ../../content/developer/reference/backend/orm.rst:942 msgid "logical *AND*, default operation to combine criteria following one another. Arity 2 (uses the next 2 criteria or combinations)." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:932 +#: ../../content/developer/reference/backend/orm.rst:944 msgid "``'|'``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:933 +#: ../../content/developer/reference/backend/orm.rst:945 msgid "logical *OR*, arity 2." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:939 +#: ../../content/developer/reference/backend/orm.rst:951 msgid "``'!'``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:935 +#: ../../content/developer/reference/backend/orm.rst:947 msgid "logical *NOT*, arity 1." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:937 +#: ../../content/developer/reference/backend/orm.rst:949 msgid "Mostly to negate combinations of criteria Individual criterion generally have a negative form (e.g. ``=`` -> ``!=``, ``<`` -> ``>=``) which is simpler than negating the positive." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:943 +#: ../../content/developer/reference/backend/orm.rst:955 msgid "To search for partners named *ABC*, from belgium or germany, whose language is not english::" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:951 +#: ../../content/developer/reference/backend/orm.rst:963 msgid "This domain is interpreted as:" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:960 +#: ../../content/developer/reference/backend/orm.rst:972 #: ../../content/developer/tutorials/getting_started/13_inheritance.rst:0 msgid "Unlink" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:967 +#: ../../content/developer/reference/backend/orm.rst:979 msgid "Record(set) information" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:973 +#: ../../content/developer/reference/backend/orm.rst:985 msgid "Returns the environment of the given recordset." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:975 +#: ../../content/developer/reference/backend/orm.rst:987 +#: ../../content/developer/reference/upgrade_utils.rst:192 msgid ":class:`~odoo.api.Environment`" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:977 +#: ../../content/developer/reference/backend/orm.rst:989 msgid "Environment documentation" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:990 +#: ../../content/developer/reference/backend/orm.rst:1002 #: ../../content/developer/reference/frontend/assets.rst:102 msgid "Operations" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:992 +#: ../../content/developer/reference/backend/orm.rst:1004 msgid "Recordsets are immutable, but sets of the same model can be combined using various set operations, returning new recordsets." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:997 +#: ../../content/developer/reference/backend/orm.rst:1009 msgid "``record in set`` returns whether ``record`` (which must be a 1-element recordset) is present in ``set``. ``record not in set`` is the inverse operation" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1000 +#: ../../content/developer/reference/backend/orm.rst:1012 msgid "``set1 <= set2`` and ``set1 < set2`` return whether ``set1`` is a subset of ``set2`` (resp. strict)" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1002 +#: ../../content/developer/reference/backend/orm.rst:1014 msgid "``set1 >= set2`` and ``set1 > set2`` return whether ``set1`` is a superset of ``set2`` (resp. strict)" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1004 +#: ../../content/developer/reference/backend/orm.rst:1016 msgid "``set1 | set2`` returns the union of the two recordsets, a new recordset containing all records present in either source" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1006 +#: ../../content/developer/reference/backend/orm.rst:1018 msgid "``set1 & set2`` returns the intersection of two recordsets, a new recordset containing only records present in both sources" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1008 +#: ../../content/developer/reference/backend/orm.rst:1020 msgid "``set1 - set2`` returns a new recordset containing only records of ``set1`` which are *not* in ``set2``" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1011 +#: ../../content/developer/reference/backend/orm.rst:1023 msgid "Recordsets are iterable so the usual Python tools are available for transformation (:func:`python:map`, :func:`python:sorted`, :func:`~python:itertools.ifilter`, ...) however these return either a :class:`python:list` or an :term:`python:iterator`, removing the ability to call methods on their result, or to use set operations." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1017 +#: ../../content/developer/reference/backend/orm.rst:1029 msgid "Recordsets therefore provide the following operations returning recordsets themselves (when possible):" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1021 +#: ../../content/developer/reference/backend/orm.rst:1033 #: ../../content/developer/tutorials/getting_started/07_basicviews.rst:0 msgid "Filter" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1028 -#: ../../content/developer/reference/backend/views.rst:1953 +#: ../../content/developer/reference/backend/orm.rst:1040 +#: ../../content/developer/reference/backend/views.rst:1938 msgid "Map" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1034 +#: ../../content/developer/reference/backend/orm.rst:1046 msgid "Since V13, multi-relational field access is supported and works like a mapped call:" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1043 +#: ../../content/developer/reference/backend/orm.rst:1055 msgid "Sort" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1048 +#: ../../content/developer/reference/backend/orm.rst:1060 msgid "Grouping" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1055 +#: ../../content/developer/reference/backend/orm.rst:1067 msgid "Inheritance and extension" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1057 +#: ../../content/developer/reference/backend/orm.rst:1069 msgid "Odoo provides three different mechanisms to extend models in a modular way:" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1059 +#: ../../content/developer/reference/backend/orm.rst:1071 msgid "creating a new model from an existing one, adding new information to the copy but leaving the original module as-is" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1061 +#: ../../content/developer/reference/backend/orm.rst:1073 msgid "extending models defined in other modules in-place, replacing the previous version" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1063 +#: ../../content/developer/reference/backend/orm.rst:1075 msgid "delegating some of the model's fields to records it contains" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1069 +#: ../../content/developer/reference/backend/orm.rst:1081 msgid "Classical inheritance" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1071 +#: ../../content/developer/reference/backend/orm.rst:1083 msgid "When using the :attr:`~odoo.models.Model._inherit` and :attr:`~odoo.models.Model._name` attributes together, Odoo creates a new model using the existing one (provided via :attr:`~odoo.models.Model._inherit`) as a base. The new model gets all the fields, methods and meta-information (defaults & al) from its base." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1099 +#: ../../content/developer/reference/backend/orm.rst:1111 msgid "and using them::" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1107 +#: ../../content/developer/reference/backend/orm.rst:1119 msgid "will yield:" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1109 +#: ../../content/developer/reference/backend/orm.rst:1121 msgid "\"This is model 0 record A\" \"This is model 1 record B\"" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1112 +#: ../../content/developer/reference/backend/orm.rst:1124 msgid "the second model has inherited from the first model's ``check`` method and its ``name`` field, but overridden the ``call`` method, as when using standard :ref:`Python inheritance `." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1117 +#: ../../content/developer/reference/backend/orm.rst:1129 msgid "Extension" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1119 +#: ../../content/developer/reference/backend/orm.rst:1131 msgid "When using :attr:`~odoo.models.Model._inherit` but leaving out :attr:`~odoo.models.Model._name`, the new model replaces the existing one, essentially extending it in-place. This is useful to add new fields or methods to existing models (created in other modules), or to customize or reconfigure them (e.g. to change their default sort order)::" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1141 +#: ../../content/developer/reference/backend/orm.rst:1153 msgid "will yield::" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1148 +#: ../../content/developer/reference/backend/orm.rst:1160 msgid "It will also yield the various :ref:`automatic fields ` unless they've been disabled" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1152 +#: ../../content/developer/reference/backend/orm.rst:1164 msgid "Delegation" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1154 +#: ../../content/developer/reference/backend/orm.rst:1166 msgid "The third inheritance mechanism provides more flexibility (it can be altered at runtime) but less power: using the :attr:`~odoo.models.Model._inherits` a model *delegates* the lookup of any field not found on the current model to \"children\" models. The delegation is performed via :class:`~odoo.fields.Reference` fields automatically set up on the parent model." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1161 +#: ../../content/developer/reference/backend/orm.rst:1173 msgid "The main difference is in the meaning. When using Delegation, the model **has one** instead of **is one**, turning the relationship in a composition instead of inheritance::" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1203 +#: ../../content/developer/reference/backend/orm.rst:1215 #: ../../content/developer/reference/frontend/qweb.rst:26 #: ../../content/developer/reference/frontend/qweb.rst:36 #: ../../content/developer/reference/frontend/qweb.rst:330 msgid "will result in::" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1208 +#: ../../content/developer/reference/backend/orm.rst:1220 msgid "and it's possible to write directly on the delegated field::" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1212 +#: ../../content/developer/reference/backend/orm.rst:1224 msgid "when using delegation inheritance, methods are *not* inherited, only fields" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1217 +#: ../../content/developer/reference/backend/orm.rst:1229 msgid "`_inherits` is more or less implemented, avoid it if you can;" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1218 +#: ../../content/developer/reference/backend/orm.rst:1230 msgid "chained `_inherits` is essentially not implemented, we cannot guarantee anything on the final behavior." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1222 +#: ../../content/developer/reference/backend/orm.rst:1234 msgid "Fields Incremental Definition" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1224 +#: ../../content/developer/reference/backend/orm.rst:1236 msgid "A field is defined as class attribute on a model class. If the model is extended, one can also extend the field definition by redefining a field with the same name and same type on the subclass. In that case, the attributes of the field are taken from the parent class and overridden by the ones given in subclasses." msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1230 +#: ../../content/developer/reference/backend/orm.rst:1242 msgid "For instance, the second class below only adds a tooltip on the field ``state``::" msgstr "" -#: ../../content/developer/reference/backend/orm.rst:1244 +#: ../../content/developer/reference/backend/orm.rst:1256 msgid "Error management" msgstr "" @@ -8425,70 +8452,86 @@ msgid "Changelog" msgstr "" #: ../../content/developer/reference/backend/orm/changelog.rst:8 -msgid "Odoo version 16.0" +msgid "Odoo Online version 16.3" msgstr "" #: ../../content/developer/reference/backend/orm/changelog.rst:10 +msgid "`odoo.models.Model._read_group` has a new signature with `#110737 `_" +msgstr "" + +#: ../../content/developer/reference/backend/orm/changelog.rst:14 +msgid "Odoo Online version 16.2" +msgstr "" + +#: ../../content/developer/reference/backend/orm/changelog.rst:16 +msgid "Refactor the implementation of searching and reading methods to be able to combine both in a minimal number of SQL queries. We introduce two new methods `odoo.models.Model.search_fetch` and `odoo.models.Model.fetch` that take advantage of the combination. More details can be found on the pull request `#112126 `_." +msgstr "" + +#: ../../content/developer/reference/backend/orm/changelog.rst:23 +msgid "Odoo version 16.0" +msgstr "" + +#: ../../content/developer/reference/backend/orm/changelog.rst:25 msgid "Translations for translated fields are stored as JSONB values with `#97692 `_ and `#101115 `_. Code translations are no longer stored into the database. They become static and are extracted from the PO files when needed." msgstr "" -#: ../../content/developer/reference/backend/orm/changelog.rst:15 +#: ../../content/developer/reference/backend/orm/changelog.rst:30 msgid ":meth:`~odoo.models.Model.search_count` takes the :attr:`limit` argument into account with `#95589 `_. It limits the number of records to count, improving performance when a partial result is acceptable." msgstr "" -#: ../../content/developer/reference/backend/orm/changelog.rst:19 +#: ../../content/developer/reference/backend/orm/changelog.rst:34 msgid "Odoo Online version 15.4" msgstr "" -#: ../../content/developer/reference/backend/orm/changelog.rst:21 +#: ../../content/developer/reference/backend/orm/changelog.rst:36 msgid "New API for flushing to the database and invalidating the cache with `#87527 `_. New methods have been added to `odoo.models.Model` and `odoo.api.Environment`, and are less confusing about what is actually done in each case. See the section :ref:`SQL Execution `." msgstr "" -#: ../../content/developer/reference/backend/orm/changelog.rst:28 +#: ../../content/developer/reference/backend/orm/changelog.rst:43 msgid "Odoo Online version 15.3" msgstr "" -#: ../../content/developer/reference/backend/orm/changelog.rst:30 +#: ../../content/developer/reference/backend/orm/changelog.rst:45 msgid "The argument `args` is renamed to `domain` for :meth:`~odoo.models.Model.search`, :meth:`~odoo.models.Model.search_count` and :meth:`~odoo.models.Model._search`. `#83687 `_" msgstr "" -#: ../../content/developer/reference/backend/orm/changelog.rst:32 +#: ../../content/developer/reference/backend/orm/changelog.rst:47 msgid ":meth:`~odoo.models.Model.filtered_domain` conserves the order of the current recordset. `#83687 `_" msgstr "" -#: ../../content/developer/reference/backend/orm/changelog.rst:33 +#: ../../content/developer/reference/backend/orm/changelog.rst:48 msgid ":meth:`~odoo.models.Model.browse` does not accept :class:`str` as `ids`. `#83687 `_" msgstr "" -#: ../../content/developer/reference/backend/orm/changelog.rst:34 +#: ../../content/developer/reference/backend/orm/changelog.rst:49 msgid "The methods :meth:`~odoo.models.Model.fields_get_keys` and :meth:`~odoo.models.Model.get_xml_id` on :class:`~odoo.models.Model` are deprecated. `#83687 `_" msgstr "" -#: ../../content/developer/reference/backend/orm/changelog.rst:35 +#: ../../content/developer/reference/backend/orm/changelog.rst:50 msgid "The method :meth:`~odoo.models.Model._mapped_cache` is removed. `#83687 `_" msgstr "" -#: ../../content/developer/reference/backend/orm/changelog.rst:36 +#: ../../content/developer/reference/backend/orm/changelog.rst:51 msgid "Remove the :attr:`limit` attribute of :class:`~odoo.fields.One2many` and :class:`~odoo.fields.Many2many`. `#83687 `_" msgstr "" -#: ../../content/developer/reference/backend/orm/changelog.rst:39 +#: ../../content/developer/reference/backend/orm/changelog.rst:54 msgid "Odoo Online version 15.2" msgstr "" -#: ../../content/developer/reference/backend/orm/changelog.rst:41 +#: ../../content/developer/reference/backend/orm/changelog.rst:56 msgid "Specific index types on fields: With `#83274 `_ and `#83015 `_, developers can now define what type of indexes can be used on fields by PostgreSQL. See the :ref:`index property ` of `odoo.fields.Field`." msgstr "" -#: ../../content/developer/reference/backend/orm/changelog.rst:45 +#: ../../content/developer/reference/backend/orm/changelog.rst:60 msgid "The :attr:`_sequence` attribute of :class:`~odoo.models.Model` is removed. Odoo lets PostgreSQL use the default sequence of the primary key. `#82727 `_" msgstr "" -#: ../../content/developer/reference/backend/orm/changelog.rst:46 +#: ../../content/developer/reference/backend/orm/changelog.rst:61 msgid "The method :meth:`~odoo.models.Model._write` does not raise an error for non-existing records. `#82727 `_" msgstr "" -#: ../../content/developer/reference/backend/orm/changelog.rst:47 +#: ../../content/developer/reference/backend/orm/changelog.rst:62 msgid "The :attr:`column_format` and :attr:`deprecated` attributes of :class:`~odoo.fields.Field` are removed. `#82727 `_" msgstr "" @@ -8642,12 +8685,13 @@ msgstr "" #: ../../content/developer/reference/frontend/odoo_editor.rst:146 #: ../../content/developer/reference/frontend/odoo_editor.rst:172 #: ../../content/developer/reference/frontend/odoo_editor.rst:216 -#: ../../content/developer/reference/frontend/owl_components.rst:240 -#: ../../content/developer/reference/frontend/owl_components.rst:328 -#: ../../content/developer/reference/frontend/owl_components.rst:363 -#: ../../content/developer/reference/frontend/owl_components.rst:719 -#: ../../content/developer/reference/frontend/owl_components.rst:835 -#: ../../content/developer/reference/frontend/owl_components.rst:884 +#: ../../content/developer/reference/frontend/owl_components.rst:242 +#: ../../content/developer/reference/frontend/owl_components.rst:330 +#: ../../content/developer/reference/frontend/owl_components.rst:365 +#: ../../content/developer/reference/frontend/owl_components.rst:728 +#: ../../content/developer/reference/frontend/owl_components.rst:847 +#: ../../content/developer/reference/frontend/owl_components.rst:896 +#: ../../content/developer/reference/frontend/owl_components.rst:1071 #: ../../content/developer/reference/frontend/services.rst:245 #: ../../content/developer/reference/frontend/services.rst:437 #: ../../content/developer/reference/frontend/services.rst:465 @@ -9147,7 +9191,7 @@ msgid "a small description of your format" msgstr "" #: ../../content/developer/reference/backend/reports.rst:202 -#: ../../content/developer/reference/backend/views.rst:1423 +#: ../../content/developer/reference/backend/views.rst:1431 msgid "``format``" msgstr "" @@ -9206,11 +9250,11 @@ msgstr "" #: ../../content/developer/reference/backend/reports.rst:217 #: ../../content/developer/reference/backend/reports.rst:285 #: ../../content/developer/reference/backend/reports.rst:295 -#: ../../content/developer/reference/frontend/qweb.rst:576 -#: ../../content/developer/reference/frontend/qweb.rst:598 -#: ../../content/developer/reference/frontend/qweb.rst:635 -#: ../../content/developer/reference/frontend/qweb.rst:666 -#: ../../content/developer/reference/frontend/qweb.rst:706 +#: ../../content/developer/reference/frontend/qweb.rst:524 +#: ../../content/developer/reference/frontend/qweb.rst:546 +#: ../../content/developer/reference/frontend/qweb.rst:583 +#: ../../content/developer/reference/frontend/qweb.rst:614 +#: ../../content/developer/reference/frontend/qweb.rst:654 msgid "Example::" msgstr "" @@ -9551,116 +9595,143 @@ msgid "While formatting the template differently would prevent such vulnerabilit msgstr "" #: ../../content/developer/reference/backend/security.rst:357 -msgid "Escaping vs Sanitizing" +msgid "Creating safe content using :class:`~markupsafe.Markup`" msgstr "" -#: ../../content/developer/reference/backend/security.rst:361 -msgid "Escaping is always 100% mandatory when you mix data and code, no matter how safe the data" +#: ../../content/developer/reference/backend/security.rst:359 +msgid "See the `official documentation `_ for explanations, but the big advantage of :class:`~markupsafe.Markup` is that it's a very rich type overrinding :class:`str` operations to *automatically escape parameters*." msgstr "" #: ../../content/developer/reference/backend/security.rst:364 -msgid "**Escaping** converts *TEXT* to *CODE*. It is absolutely mandatory to do it every time you mix *DATA/TEXT* with *CODE* (e.g. generating HTML or python code to be evaluated inside a `safe_eval`), because *CODE* always requires *TEXT* to be encoded. It is critical for security, but it's also a question of correctness. Even when there is no security risk (because the text is 100% guarantee to be safe or trusted), it is still required (e.g. to avoid breaking the layout in generated HTML)." +msgid "This means that it's easy to create *safe* html snippets by using :class:`~markupsafe.Markup` on a string literal and \"formatting in\" user-provided (and thus potentially unsafe) content:" msgstr "" -#: ../../content/developer/reference/backend/security.rst:372 -msgid "Escaping will never break any feature, as long as the developer identifies which variable contains *TEXT* and which contains *CODE*." +#: ../../content/developer/reference/backend/security.rst:375 +msgid "though it is a very good thing, note that the effects can be odd at times:" msgstr "" #: ../../content/developer/reference/backend/security.rst:388 -msgid "**Sanitizing** converts *CODE* to *SAFER CODE* (but not necessary *safe* code). It does not work on *TEXT*. Sanitizing is only necessary when *CODE* is untrusted, because it comes in full or in part from some user-provided data. If the user-provided data is in the form of *TEXT* (e.g. the content from a form filled by a user), and if that data was correctly escaped before putting it in *CODE*, then sanitizing is useless (but can still be done). If however, the user-provided data was **not escaped**, then sanitizing will **not** work as expected." +msgid "Most of the content-safe APIs actually return a :class:`~markupsafe.Markup` with all that implies." msgstr "" -#: ../../content/developer/reference/backend/security.rst:407 -msgid "Sanitizing can break features, depending on whether the *CODE* is expected to contain patterns that are not safe. That's why `fields.Html` and `tools.html_sanitize()` have options to fine-tune the level of sanitization for styles, etc. Those options have to be carefully considered depending on where the data comes from, and the desired features. The sanitization safety is balanced against sanitization breakages: the safer the sanitisation the more likely it is to break things." +#: ../../content/developer/reference/backend/security.rst:391 +msgid "The :class:`~markupsafe.escape` method (and its alias :class:`~odoo.tools.misc.html_escape`) turns a `str` into a :class:`~markupsafe.Markup` and escapes its content. It will not escape the content of a :class:`~markupsafe.Markup` object." msgstr "" -#: ../../content/developer/reference/backend/security.rst:424 -msgid "Evaluating content" +#: ../../content/developer/reference/backend/security.rst:410 +msgid "When generating HTML code, it is important to separate the structure (tags) from the content (text)." msgstr "" -#: ../../content/developer/reference/backend/security.rst:426 -msgid "Some may want to ``eval`` to parse user provided content. Using ``eval`` should be avoided at all cost. A safer, sandboxed, method :class:`~odoo.tools.safe_eval` can be used instead but still gives tremendous capabilities to the user running it and must be reserved for trusted privileged users only as it breaks the barrier between code and data." +#: ../../content/developer/reference/backend/security.rst:438 +msgid "Escaping vs Sanitizing" msgstr "" -#: ../../content/developer/reference/backend/security.rst:448 -msgid "Parsing content does not need ``eval``" +#: ../../content/developer/reference/backend/security.rst:442 +msgid "Escaping is always 100% mandatory when you mix data and code, no matter how safe the data" msgstr "" -#: ../../content/developer/reference/backend/security.rst:451 -msgid "Language" -msgstr "" - -#: ../../content/developer/reference/backend/security.rst:451 -msgid "Data type" -msgstr "" - -#: ../../content/developer/reference/backend/security.rst:451 -msgid "Suitable parser" +#: ../../content/developer/reference/backend/security.rst:445 +msgid "**Escaping** converts *TEXT* to *CODE*. It is absolutely mandatory to do it every time you mix *DATA/TEXT* with *CODE* (e.g. generating HTML or python code to be evaluated inside a `safe_eval`), because *CODE* always requires *TEXT* to be encoded. It is critical for security, but it's also a question of correctness. Even when there is no security risk (because the text is 100% guarantee to be safe or trusted), it is still required (e.g. to avoid breaking the layout in generated HTML)." msgstr "" #: ../../content/developer/reference/backend/security.rst:453 -#: ../../content/developer/reference/backend/security.rst:455 +msgid "Escaping will never break any feature, as long as the developer identifies which variable contains *TEXT* and which contains *CODE*." +msgstr "" + +#: ../../content/developer/reference/backend/security.rst:469 +msgid "**Sanitizing** converts *CODE* to *SAFER CODE* (but not necessary *safe* code). It does not work on *TEXT*. Sanitizing is only necessary when *CODE* is untrusted, because it comes in full or in part from some user-provided data. If the user-provided data is in the form of *TEXT* (e.g. the content from a form filled by a user), and if that data was correctly escaped before putting it in *CODE*, then sanitizing is useless (but can still be done). If however, the user-provided data was **not escaped**, then sanitizing will **not** work as expected." +msgstr "" + +#: ../../content/developer/reference/backend/security.rst:488 +msgid "Sanitizing can break features, depending on whether the *CODE* is expected to contain patterns that are not safe. That's why `fields.Html` and `tools.html_sanitize()` have options to fine-tune the level of sanitization for styles, etc. Those options have to be carefully considered depending on where the data comes from, and the desired features. The sanitization safety is balanced against sanitization breakages: the safer the sanitisation the more likely it is to break things." +msgstr "" + +#: ../../content/developer/reference/backend/security.rst:505 +msgid "Evaluating content" +msgstr "" + +#: ../../content/developer/reference/backend/security.rst:507 +msgid "Some may want to ``eval`` to parse user provided content. Using ``eval`` should be avoided at all cost. A safer, sandboxed, method :class:`~odoo.tools.safe_eval` can be used instead but still gives tremendous capabilities to the user running it and must be reserved for trusted privileged users only as it breaks the barrier between code and data." +msgstr "" + +#: ../../content/developer/reference/backend/security.rst:529 +msgid "Parsing content does not need ``eval``" +msgstr "" + +#: ../../content/developer/reference/backend/security.rst:532 +msgid "Language" +msgstr "" + +#: ../../content/developer/reference/backend/security.rst:532 +msgid "Data type" +msgstr "" + +#: ../../content/developer/reference/backend/security.rst:532 +msgid "Suitable parser" +msgstr "" + +#: ../../content/developer/reference/backend/security.rst:534 +#: ../../content/developer/reference/backend/security.rst:536 #: ../../content/developer/reference/backend/testing.rst:715 #: ../../content/developer/reference/frontend/qweb.rst:353 -#: ../../content/developer/reference/frontend/qweb.rst:467 +#: ../../content/developer/reference/frontend/qweb.rst:415 #: ../../content/developer/tutorials/getting_started/11_constraints.rst:69 msgid "Python" msgstr "" -#: ../../content/developer/reference/backend/security.rst:453 -#: ../../content/developer/reference/backend/security.rst:454 +#: ../../content/developer/reference/backend/security.rst:534 +#: ../../content/developer/reference/backend/security.rst:535 msgid "int, float, etc." msgstr "" -#: ../../content/developer/reference/backend/security.rst:453 +#: ../../content/developer/reference/backend/security.rst:534 msgid "int(), float()" msgstr "" -#: ../../content/developer/reference/backend/security.rst:454 -#: ../../content/developer/reference/backend/security.rst:456 +#: ../../content/developer/reference/backend/security.rst:535 +#: ../../content/developer/reference/backend/security.rst:537 #: ../../content/developer/reference/backend/testing.rst:582 -#: ../../content/developer/reference/frontend/qweb.rst:410 -#: ../../content/developer/reference/frontend/qweb.rst:804 +#: ../../content/developer/reference/frontend/qweb.rst:752 msgid "Javascript" msgstr "" -#: ../../content/developer/reference/backend/security.rst:454 +#: ../../content/developer/reference/backend/security.rst:535 msgid "parseInt(), parseFloat()" msgstr "" -#: ../../content/developer/reference/backend/security.rst:455 +#: ../../content/developer/reference/backend/security.rst:536 msgid "dict" msgstr "" -#: ../../content/developer/reference/backend/security.rst:455 +#: ../../content/developer/reference/backend/security.rst:536 msgid "json.loads(), ast.literal_eval()" msgstr "" -#: ../../content/developer/reference/backend/security.rst:456 +#: ../../content/developer/reference/backend/security.rst:537 msgid "object, list, etc." msgstr "" -#: ../../content/developer/reference/backend/security.rst:456 +#: ../../content/developer/reference/backend/security.rst:537 msgid "JSON.parse()" msgstr "" -#: ../../content/developer/reference/backend/security.rst:460 +#: ../../content/developer/reference/backend/security.rst:541 msgid "Accessing object attributes" msgstr "" -#: ../../content/developer/reference/backend/security.rst:462 +#: ../../content/developer/reference/backend/security.rst:543 msgid "If the values of a record needs to be retrieved or modified dynamically, one may want to use the ``getattr`` and ``setattr`` methods." msgstr "" -#: ../../content/developer/reference/backend/security.rst:472 +#: ../../content/developer/reference/backend/security.rst:553 msgid "This code is however not safe as it allows to access any property of the record, including private attributes or methods." msgstr "" -#: ../../content/developer/reference/backend/security.rst:475 +#: ../../content/developer/reference/backend/security.rst:556 msgid "The ``__getitem__`` of a recordset has been defined and accessing a dynamic field value can be easily achieved safely:" msgstr "" -#: ../../content/developer/reference/backend/security.rst:485 +#: ../../content/developer/reference/backend/security.rst:566 msgid "The above method is obviously still too optimistic and additional verifications on the record id and field value must be done." msgstr "" @@ -9713,7 +9784,7 @@ msgid "By default, tests are run once right after the corresponding module has b msgstr "" #: ../../content/developer/reference/backend/testing.rst:74 -msgid "The most common situation is to use :class:`~odoo.tests.common.TransactionCase` and test a property of a model in each method::" +msgid "The most common situation is to use :class:`~odoo.tests.TransactionCase` and test a property of a model in each method::" msgstr "" #: ../../content/developer/reference/backend/testing.rst:90 @@ -9737,7 +9808,7 @@ msgid "In Odoo, Python tests can be tagged to facilitate the test selection when msgstr "" #: ../../content/developer/reference/backend/testing.rst:118 -msgid "Subclasses of :class:`odoo.tests.common.BaseCase` (usually through :class:`~odoo.tests.common.TransactionCase` or :class:`~odoo.tests.common.HttpCase`) are automatically tagged with ``standard`` and ``at_install`` by default." +msgid "Subclasses of :class:`odoo.tests.BaseCase` (usually through :class:`~odoo.tests.TransactionCase` or :class:`~odoo.tests.HttpCase`) are automatically tagged with ``standard`` and ``at_install`` by default." msgstr "" #: ../../content/developer/reference/backend/testing.rst:124 @@ -9753,7 +9824,7 @@ msgid "This option defaults to ``+standard`` meaning tests tagged ``standard`` ( msgstr "" #: ../../content/developer/reference/backend/testing.rst:135 -msgid "When writing tests, the :func:`~odoo.tests.common.tagged` decorator can be used on **test classes** to add or remove tags." +msgid "When writing tests, the :func:`~odoo.tests.tagged` decorator can be used on **test classes** to add or remove tags." msgstr "" #: ../../content/developer/reference/backend/testing.rst:138 @@ -9761,7 +9832,7 @@ msgid "The decorator's arguments are tag names, as strings." msgstr "" #: ../../content/developer/reference/backend/testing.rst:140 -msgid ":func:`~odoo.tests.common.tagged` is a class decorator, it has no effect on functions or methods" +msgid ":func:`~odoo.tests.tagged` is a class decorator, it has no effect on functions or methods" msgstr "" #: ../../content/developer/reference/backend/testing.rst:143 @@ -9781,7 +9852,7 @@ msgid "The config switch parameter also accepts the ``+`` and ``-`` prefixes. Th msgstr "" #: ../../content/developer/reference/backend/testing.rst:182 -msgid "When you write a test that does not inherit from the :class:`~odoo.tests.common.BaseCase`, this test will not have the default tags, you have to add them explicitly to have the test included in the default test suite. This is a common issue when using a simple ``unittest.TestCase`` as they're not going to get run:" +msgid "When you write a test that does not inherit from the :class:`~odoo.tests.BaseCase`, this test will not have the default tags, you have to add them explicitly to have the test included in the default test suite. This is a common issue when using a simple ``unittest.TestCase`` as they're not going to get run:" msgstr "" #: ../../content/developer/reference/backend/testing.rst:197 @@ -9809,7 +9880,7 @@ msgid "Special tags" msgstr "" #: ../../content/developer/reference/backend/testing.rst:232 -msgid "``standard``: All Odoo tests that inherit from :class:`~odoo.tests.common.BaseCase` are implicitly tagged standard. :option:`--test-tags ` also defaults to ``standard``." +msgid "``standard``: All Odoo tests that inherit from :class:`~odoo.tests.BaseCase` are implicitly tagged standard. :option:`--test-tags ` also defaults to ``standard``." msgstr "" #: ../../content/developer/reference/backend/testing.rst:236 @@ -10243,7 +10314,7 @@ msgid "`jQuery documentation about find `_" msgstr "" #: ../../content/developer/reference/backend/testing.rst:717 -msgid "To start a tour from a python test, make the class inherit from :class:`~odoo.tests.common.HTTPCase`, and call `start_tour`:" +msgid "To start a tour from a python test, make the class inherit from :class:`~odoo.tests.HTTPCase`, and call `start_tour`:" msgstr "" #: ../../content/developer/reference/backend/testing.rst:728 @@ -10441,7 +10512,7 @@ msgid "Query counts" msgstr "" #: ../../content/developer/reference/backend/testing.rst:859 -msgid "One of the ways to test performance is to measure database queries. Manually, this can be tested with the `--log-sql` CLI parameter. If you want to establish the maximum number of queries for an operation, you can use the :meth:`~odoo.tests.common.BaseCase.assertQueryCount` method, integrated in Odoo test classes." +msgid "One of the ways to test performance is to measure database queries. Manually, this can be tested with the `--log-sql` CLI parameter. If you want to establish the maximum number of queries for an operation, you can use the :meth:`~odoo.tests.BaseCase.assertQueryCount` method, integrated in Odoo test classes." msgstr "" #: ../../content/developer/reference/backend/views.rst:8 @@ -10453,7 +10524,7 @@ msgid "Build doc of ir_ui_view.py ?" msgstr "" #: ../../content/developer/reference/backend/views.rst:18 -#: ../../content/developer/reference/backend/views.rst:775 +#: ../../content/developer/reference/backend/views.rst:822 msgid "Generic structure" msgstr "" @@ -10514,7 +10585,7 @@ msgid "The description of the view layout." msgstr "" #: ../../content/developer/reference/backend/views.rst:68 -#: ../../content/developer/reference/backend/views.rst:345 +#: ../../content/developer/reference/backend/views.rst:354 #: ../../content/developer/tutorials/getting_started/08_relations.rst:71 #: ../../content/developer/tutorials/getting_started/08_relations.rst:178 #: ../../content/developer/tutorials/getting_started/08_relations.rst:241 @@ -10538,7 +10609,7 @@ msgid "info on create/... in the context ?" msgstr "" #: ../../content/developer/reference/backend/views.rst:83 -#: ../../content/developer/reference/backend/views.rst:1920 +#: ../../content/developer/reference/backend/views.rst:1905 msgid "``create``" msgstr "" @@ -10579,25 +10650,25 @@ msgid "Define a conditional display of a record in the style of a row's text bas msgstr "" #: ../../content/developer/reference/backend/views.rst:104 -#: ../../content/developer/reference/backend/views.rst:966 +#: ../../content/developer/reference/backend/views.rst:987 #: ../../content/developer/tutorials/backend.rst:857 msgid "Values are Python expressions. For each record, the expression is evaluated with the record's attributes as context values and if ``true``, the corresponding style is applied to the row. Here are some of the other values available in the context:" msgstr "" #: ../../content/developer/reference/backend/views.rst:109 -#: ../../content/developer/reference/backend/views.rst:971 +#: ../../content/developer/reference/backend/views.rst:992 #: ../../content/developer/tutorials/backend.rst:862 msgid "``uid``: the id of the current user," msgstr "" #: ../../content/developer/reference/backend/views.rst:110 -#: ../../content/developer/reference/backend/views.rst:972 +#: ../../content/developer/reference/backend/views.rst:993 #: ../../content/developer/tutorials/backend.rst:863 msgid "``today``: the current local date as a string of the form ``YYYY-MM-DD``," msgstr "" #: ../../content/developer/reference/backend/views.rst:111 -#: ../../content/developer/reference/backend/views.rst:973 +#: ../../content/developer/reference/backend/views.rst:994 #: ../../content/developer/tutorials/backend.rst:864 msgid "``now``: same as ``today`` with the addition of the current time. This value is formatted as ``YYYY-MM-DD hh:mm:ss``." msgstr "" @@ -10643,8 +10714,8 @@ msgid "Only views extending AbstractView and AbstractController can use this att msgstr "" #: ../../content/developer/reference/backend/views.rst:159 -#: ../../content/developer/reference/backend/views.rst:2236 -#: ../../content/developer/reference/backend/views.rst:2302 +#: ../../content/developer/reference/backend/views.rst:2221 +#: ../../content/developer/reference/backend/views.rst:2287 #: ../../content/developer/reference/frontend/framework_overview.rst:331 #: ../../content/developer/reference/frontend/registries.rst:292 msgid "Example:" @@ -10654,907 +10725,934 @@ msgstr "" msgid "Views main content section, with field, group & separator ?" msgstr "" +#: ../../content/developer/reference/backend/views.rst:181 +msgid "``class`` optional string containing some classes to set on the root node of the view." +msgstr "" + #: ../../content/developer/reference/backend/views.rst:184 +msgid "``js_class`` optional component class to use to render the view. If set, the ``js_class`` attribute will also be used to apply a css class to the root node of the view. For example, if ``js_class`` is set to ``my-custom-kanban``, then the class ``o_my-custom-kanban_view`` will be applied on the root node." +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:193 #: ../../content/developer/reference/frontend/javascript_reference.rst:196 #: ../../content/developer/tutorials/backend.rst:520 msgid "Inheritance" msgstr "" -#: ../../content/developer/reference/backend/views.rst:187 +#: ../../content/developer/reference/backend/views.rst:196 msgid "Inheritance fields" msgstr "" -#: ../../content/developer/reference/backend/views.rst:189 +#: ../../content/developer/reference/backend/views.rst:198 msgid "The two following :class:`~odoo.addons.base.ir_ui_view.View` fields are used to specify inherited views." msgstr "" -#: ../../content/developer/reference/backend/views.rst:192 +#: ../../content/developer/reference/backend/views.rst:201 msgid "``inherit_id`` :class:`~odoo.fields.Many2one`" msgstr "" -#: ../../content/developer/reference/backend/views.rst:194 +#: ../../content/developer/reference/backend/views.rst:203 msgid "the current view's parent view, unset by default. Specify the parent using the `ref` attribute:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:201 +#: ../../content/developer/reference/backend/views.rst:210 msgid "``mode`` :class:`~odoo.fields.Selection`: `extension / primary`" msgstr "" -#: ../../content/developer/reference/backend/views.rst:203 +#: ../../content/developer/reference/backend/views.rst:212 msgid "inheritance mode, ``extension`` by default if ``inherit_id`` is set, ``primary`` otherwise." msgstr "" -#: ../../content/developer/reference/backend/views.rst:206 +#: ../../content/developer/reference/backend/views.rst:215 msgid "An example of where you would want to override ``mode`` while using ``inherit_id`` is delegation inheritance. In that case your derived model will be separate from its parent and views matching with one won't match with the other. Suppose you inherit from a view associated with the parent model and want to customize the derived view to show data from the derived model. The ``mode`` of the derived view needs to be set to ``primary``, because it's the base (and maybe only) view for that derived model. Otherwise the :ref:`view matching ` rules won't apply." msgstr "" -#: ../../content/developer/reference/backend/views.rst:219 +#: ../../content/developer/reference/backend/views.rst:228 msgid "View matching" msgstr "" -#: ../../content/developer/reference/backend/views.rst:221 +#: ../../content/developer/reference/backend/views.rst:230 msgid "if a view is requested by ``(model, type)``, the view with the right model and type, ``mode=primary`` and the lowest priority is matched." msgstr "" -#: ../../content/developer/reference/backend/views.rst:223 +#: ../../content/developer/reference/backend/views.rst:232 msgid "when a view is requested by ``id``, if its mode is not ``primary`` its *closest* parent with mode ``primary`` is matched." msgstr "" -#: ../../content/developer/reference/backend/views.rst:227 +#: ../../content/developer/reference/backend/views.rst:236 msgid "View resolution" msgstr "" -#: ../../content/developer/reference/backend/views.rst:229 +#: ../../content/developer/reference/backend/views.rst:238 msgid "Resolution generates the final ``arch`` for a requested/matched ``primary`` view:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:232 +#: ../../content/developer/reference/backend/views.rst:241 msgid "if the view has a parent, the parent is fully resolved then the current view's inheritance specs are applied" msgstr "" -#: ../../content/developer/reference/backend/views.rst:234 +#: ../../content/developer/reference/backend/views.rst:243 msgid "if the view has no parent, its ``arch`` is used as-is" msgstr "" -#: ../../content/developer/reference/backend/views.rst:235 +#: ../../content/developer/reference/backend/views.rst:244 msgid "the current view's children with mode ``extension`` are looked up and their inheritance specs are applied depth-first (a child view is applied, then its children, then its siblings)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:239 +#: ../../content/developer/reference/backend/views.rst:248 msgid "The result of applying children views yields the final ``arch``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:241 +#: ../../content/developer/reference/backend/views.rst:250 msgid "NOTE on fields_view_get and link to ORM ?" msgstr "" -#: ../../content/developer/reference/backend/views.rst:244 +#: ../../content/developer/reference/backend/views.rst:253 msgid "Inheritance specs" msgstr "" -#: ../../content/developer/reference/backend/views.rst:246 +#: ../../content/developer/reference/backend/views.rst:255 msgid "Inheritance specs are comprised of an element locator, to match the inherited element in the parent view, and children element that will be used to modify the inherited element." msgstr "" -#: ../../content/developer/reference/backend/views.rst:250 +#: ../../content/developer/reference/backend/views.rst:259 msgid "There are three types of element locators for matching a target element:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:252 +#: ../../content/developer/reference/backend/views.rst:261 msgid "An ``xpath`` element with an ``expr`` attribute. ``expr`` is an XPath_ expression\\ [#hasclass]_ applied to the current ``arch``, the first node it finds is the match" msgstr "" -#: ../../content/developer/reference/backend/views.rst:255 +#: ../../content/developer/reference/backend/views.rst:264 msgid "a ``field`` element with a ``name`` attribute, matches the first ``field`` with the same ``name``. All other attributes are ignored during matching" msgstr "" -#: ../../content/developer/reference/backend/views.rst:257 +#: ../../content/developer/reference/backend/views.rst:266 msgid "any other element: the first element with the same name and identical attributes (ignoring ``position`` and ``version`` attributes) is matched" msgstr "" -#: ../../content/developer/reference/backend/views.rst:274 +#: ../../content/developer/reference/backend/views.rst:283 msgid "The inheritance spec may have an optional ``position`` attribute specifying how the matched node should be altered:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:279 +#: ../../content/developer/reference/backend/views.rst:288 msgid "``inside`` (default)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:280 +#: ../../content/developer/reference/backend/views.rst:289 msgid "the content of the inheritance spec is appended to the matched node" msgstr "" -#: ../../content/developer/reference/backend/views.rst:284 -#: ../../content/developer/reference/frontend/qweb.rst:903 +#: ../../content/developer/reference/backend/views.rst:293 +#: ../../content/developer/reference/frontend/qweb.rst:851 #: ../../content/developer/tutorials/backend.rst:584 #: ../../content/developer/tutorials/getting_started/13_inheritance.rst:212 msgid "``replace``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:282 +#: ../../content/developer/reference/backend/views.rst:291 msgid "the content of the inheritance spec replaces the matched node. Any text node containing only ``$0`` within the contents of the spec will be replaced by a complete copy of the matched node, effectively wrapping the matched node." msgstr "" -#: ../../content/developer/reference/backend/views.rst:287 -#: ../../content/developer/reference/frontend/qweb.rst:899 +#: ../../content/developer/reference/backend/views.rst:296 +#: ../../content/developer/reference/frontend/qweb.rst:847 #: ../../content/developer/tutorials/backend.rst:588 #: ../../content/developer/tutorials/getting_started/13_inheritance.rst:216 msgid "``after``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:287 +#: ../../content/developer/reference/backend/views.rst:296 msgid "the content of the inheritance spec is added to the matched node's parent, after the matched node" msgstr "" -#: ../../content/developer/reference/backend/views.rst:290 -#: ../../content/developer/reference/frontend/qweb.rst:897 +#: ../../content/developer/reference/backend/views.rst:299 +#: ../../content/developer/reference/frontend/qweb.rst:845 #: ../../content/developer/tutorials/backend.rst:586 #: ../../content/developer/tutorials/getting_started/13_inheritance.rst:214 msgid "``before``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:290 +#: ../../content/developer/reference/backend/views.rst:299 msgid "the content of the inheritance spec is added to the matched node's parent, before the matched node" msgstr "" -#: ../../content/developer/reference/backend/views.rst:315 -#: ../../content/developer/reference/frontend/qweb.rst:908 +#: ../../content/developer/reference/backend/views.rst:324 +#: ../../content/developer/reference/frontend/qweb.rst:856 #: ../../content/developer/tutorials/backend.rst:592 #: ../../content/developer/tutorials/getting_started/13_inheritance.rst:220 msgid "``attributes``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:293 +#: ../../content/developer/reference/backend/views.rst:302 msgid "the content of the inheritance spec should be ``attribute`` elements with a ``name`` attribute and an optional body:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:296 +#: ../../content/developer/reference/backend/views.rst:305 msgid "if the ``attribute`` element has a body, a new attributed named after its ``name`` is created on the matched node with the ``attribute`` element's text as value" msgstr "" -#: ../../content/developer/reference/backend/views.rst:299 +#: ../../content/developer/reference/backend/views.rst:308 msgid "if the ``attribute`` element has no body, the attribute named after its ``name`` is removed from the matched node. If no such attribute exists, an error is raised" msgstr "" -#: ../../content/developer/reference/backend/views.rst:302 +#: ../../content/developer/reference/backend/views.rst:311 msgid "if the ``attribute`` element has an ``add`` attribute, a ``remove`` attribute, or both, the value of the matched node's attribute named after ``name`` is recomputed to include the value(s) of ``add`` (separated by ``separator``) and delete the value(s) of ``remove`` (separated by ``separator``). If ``separator`` is not provided, ``,`` is used instead." msgstr "" -#: ../../content/developer/reference/backend/views.rst:331 +#: ../../content/developer/reference/backend/views.rst:340 msgid "``move``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:318 +#: ../../content/developer/reference/backend/views.rst:327 msgid "can be used as a direct child of a inheritance spec with a ``inside``, ``replace``, ``after`` or ``before`` ``position`` attribute to move a node." msgstr "" -#: ../../content/developer/reference/backend/views.rst:333 +#: ../../content/developer/reference/backend/views.rst:342 msgid "A view's specs are applied sequentially." msgstr "" -#: ../../content/developer/reference/backend/views.rst:335 +#: ../../content/developer/reference/backend/views.rst:344 msgid "an extension function is added for simpler matching in QWeb views: ``hasclass(*classes)`` matches if the context node has all the specified classes" msgstr "" -#: ../../content/developer/reference/backend/views.rst:340 +#: ../../content/developer/reference/backend/views.rst:349 msgid "Model Commons" msgstr "" -#: ../../content/developer/reference/backend/views.rst:350 +#: ../../content/developer/reference/backend/views.rst:359 #: ../../content/developer/reference/frontend/mobile.rst:61 msgid "Methods" msgstr "" -#: ../../content/developer/reference/backend/views.rst:358 +#: ../../content/developer/reference/backend/views.rst:367 msgid "View types" msgstr "" -#: ../../content/developer/reference/backend/views.rst:363 +#: ../../content/developer/reference/backend/views.rst:372 msgid "Activity" msgstr "" -#: ../../content/developer/reference/backend/views.rst:365 +#: ../../content/developer/reference/backend/views.rst:374 msgid "The Activity view is used to display the activities linked to the records. The data are displayed in a chart with the records forming the rows and the activity types the columns. The first cell of each row displays a (customizable, see ``templates``, quite similarly to :ref:`reference/views/kanban`) card representing the corresponding record. When clicking on others cells, a detailed description of all activities of the same type for the record is displayed." msgstr "" -#: ../../content/developer/reference/backend/views.rst:374 +#: ../../content/developer/reference/backend/views.rst:383 msgid "The Activity view is only available when the ``mail`` module is installed, and for the models that inherit from the ``mail.activity.mixin``." msgstr "" -#: ../../content/developer/reference/backend/views.rst:377 +#: ../../content/developer/reference/backend/views.rst:386 msgid "The root element of the Activity view is ````, it accepts the following attributes:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:383 -#: ../../content/developer/reference/backend/views.rst:535 +#: ../../content/developer/reference/backend/views.rst:392 +#: ../../content/developer/reference/backend/views.rst:546 msgid "``string`` (mandatory)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:383 -#: ../../content/developer/reference/backend/views.rst:535 +#: ../../content/developer/reference/backend/views.rst:392 +#: ../../content/developer/reference/backend/views.rst:546 msgid "A title, which should describe the view" msgstr "" -#: ../../content/developer/reference/backend/views.rst:385 -#: ../../content/developer/reference/backend/views.rst:1502 +#: ../../content/developer/reference/backend/views.rst:394 +#: ../../content/developer/reference/backend/views.rst:1510 msgid "Possible children of the view element are:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:390 +#: ../../content/developer/reference/backend/views.rst:399 msgid "declares fields to use in activity *logic*. If the field is simply displayed in the activity view, it does not need to be pre-declared." msgstr "" -#: ../../content/developer/reference/backend/views.rst:393 -#: ../../content/developer/reference/backend/views.rst:1510 -#: ../../content/developer/reference/backend/views.rst:1526 +#: ../../content/developer/reference/backend/views.rst:402 +#: ../../content/developer/reference/backend/views.rst:1518 +#: ../../content/developer/reference/backend/views.rst:1535 msgid "Possible attributes are:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:398 -#: ../../content/developer/reference/backend/views.rst:1515 +#: ../../content/developer/reference/backend/views.rst:407 +#: ../../content/developer/reference/backend/views.rst:1523 msgid "``name`` (required)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:398 -#: ../../content/developer/reference/backend/views.rst:1515 +#: ../../content/developer/reference/backend/views.rst:407 +#: ../../content/developer/reference/backend/views.rst:1523 msgid "the name of the field to fetch" msgstr "" -#: ../../content/developer/reference/backend/views.rst:418 -#: ../../content/developer/reference/backend/views.rst:1083 -#: ../../content/developer/reference/backend/views.rst:1621 +#: ../../content/developer/reference/backend/views.rst:427 +#: ../../content/developer/reference/backend/views.rst:1087 +#: ../../content/developer/reference/backend/views.rst:1630 msgid "``templates``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:401 +#: ../../content/developer/reference/backend/views.rst:410 msgid "defines the :ref:`reference/qweb` templates. Cards definition may be split into multiple templates for clarity, but activity views *must* define at least one root template ``activity-box``, which will be rendered once for each record." msgstr "" -#: ../../content/developer/reference/backend/views.rst:406 +#: ../../content/developer/reference/backend/views.rst:415 msgid "The activity view uses mostly-standard :ref:`javascript qweb ` and provides the following context variables (see :ref:`reference/views/kanban` for more details):" msgstr "" -#: ../../content/developer/reference/backend/views.rst:414 -#: ../../content/developer/reference/backend/views.rst:685 -#: ../../content/developer/reference/backend/views.rst:1079 -#: ../../content/developer/reference/backend/views.rst:1561 -#: ../../content/developer/reference/backend/views.rst:1786 +#: ../../content/developer/reference/backend/views.rst:423 +#: ../../content/developer/reference/backend/views.rst:699 +#: ../../content/developer/reference/backend/views.rst:1570 +#: ../../content/developer/reference/backend/views.rst:1795 msgid "``widget``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:413 +#: ../../content/developer/reference/backend/views.rst:422 msgid "the current :js:class:`ActivityRecord`, can be used to fetch some meta-information. These methods are also available directly in the template context and don't need to be accessed via ``widget``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:417 +#: ../../content/developer/reference/backend/views.rst:426 msgid "an object with all the requested fields as its attributes. Each field has two attributes ``value`` and ``raw_value``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:423 +#: ../../content/developer/reference/backend/views.rst:432 msgid "Calendar" msgstr "" -#: ../../content/developer/reference/backend/views.rst:425 +#: ../../content/developer/reference/backend/views.rst:434 msgid "Calendar views display records as events in a daily, weekly, monthly or yearly calendar." msgstr "" -#: ../../content/developer/reference/backend/views.rst:428 +#: ../../content/developer/reference/backend/views.rst:437 msgid "By default the calendar view will be centered around the current date (today). You can pass a specific initial date to the context of the action in order to set the initial focus of the calendar on the period (see `mode`) around this date (the context key to use being `initial_date`)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:433 +#: ../../content/developer/reference/backend/views.rst:442 msgid "Their root element is ````. Available attributes on the calendar view are:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:438 -#: ../../content/developer/reference/backend/views.rst:946 +#: ../../content/developer/reference/backend/views.rst:447 +#: ../../content/developer/reference/backend/views.rst:967 msgid "``date_start`` (required)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:439 +#: ../../content/developer/reference/backend/views.rst:448 msgid "name of the record's field holding the start date for the event" msgstr "" -#: ../../content/developer/reference/backend/views.rst:442 +#: ../../content/developer/reference/backend/views.rst:451 msgid "``date_stop``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:441 +#: ../../content/developer/reference/backend/views.rst:450 msgid "name of the record's field holding the end date for the event, if ``date_stop`` is provided records become movable (via drag and drop) directly in the calendar" msgstr "" -#: ../../content/developer/reference/backend/views.rst:445 +#: ../../content/developer/reference/backend/views.rst:454 msgid "``date_delay``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:445 +#: ../../content/developer/reference/backend/views.rst:454 msgid "alternative to ``date_stop``, provides the duration of the event instead of its end date (unit: day)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:450 -#: ../../content/developer/reference/backend/views.rst:960 -#: ../../content/developer/reference/backend/views.rst:2397 +#: ../../content/developer/reference/backend/views.rst:459 +#: ../../content/developer/reference/backend/views.rst:981 +#: ../../content/developer/reference/backend/views.rst:2382 #: ../../content/developer/tutorials/backend.rst:900 msgid "``color``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:448 +#: ../../content/developer/reference/backend/views.rst:457 msgid "name of a record field to use for *color segmentation*. Records in the same color segment are allocated the same highlight color in the calendar, colors are allocated semi-randomly. Displayed the display_name/avatar of the visible record in the sidebar" msgstr "" -#: ../../content/developer/reference/backend/views.rst:454 -#: ../../content/developer/reference/backend/views.rst:1088 +#: ../../content/developer/reference/backend/views.rst:463 +#: ../../content/developer/reference/backend/views.rst:1096 msgid "``form_view_id``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:453 +#: ../../content/developer/reference/backend/views.rst:462 msgid "view to open when the user create or edit an event. Note that if this attribute is not set, the calendar view will fall back to the id of the form view in the current action, if any." msgstr "" -#: ../../content/developer/reference/backend/views.rst:458 +#: ../../content/developer/reference/backend/views.rst:467 msgid "``event_open_popup``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:457 +#: ../../content/developer/reference/backend/views.rst:466 msgid "If the option 'event_open_popup' is set to true, then the calendar view will open events (or records) in a FormViewDialog. Otherwise, it will open events in a new form view (with a do_action)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:463 +#: ../../content/developer/reference/backend/views.rst:472 msgid "``quick_add``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:461 +#: ../../content/developer/reference/backend/views.rst:470 msgid "enables quick-event creation on click: only asks the user for a ``name`` (the field to which this values is saved can be controlled through ``rec_name``) and tries to create a new event with just that and the clicked event time. Falls back to a full form dialog if the quick creation fails" msgstr "" -#: ../../content/developer/reference/backend/views.rst:466 +#: ../../content/developer/reference/backend/views.rst:474 +msgid "``quick_create_form_view_id``" +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:475 +msgid "view to open when the user tries to quick create a record." +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:477 msgid "``create_name_field``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:466 +#: ../../content/developer/reference/backend/views.rst:477 msgid "name of the record's field holding the textual representation of the record, this is used when creating records through the 'quick create' mechanism" msgstr "" -#: ../../content/developer/reference/backend/views.rst:469 +#: ../../content/developer/reference/backend/views.rst:480 msgid "``all_day``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:469 +#: ../../content/developer/reference/backend/views.rst:480 msgid "name of a boolean field on the record indicating whether the corresponding event is flagged as day-long (and duration is irrelevant)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:472 -#: ../../content/developer/reference/backend/views.rst:736 +#: ../../content/developer/reference/backend/views.rst:483 +#: ../../content/developer/reference/backend/views.rst:750 msgid "``mode``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:472 +#: ../../content/developer/reference/backend/views.rst:483 msgid "Default display mode when loading the calendar. Possible attributes are: ``day``, ``week``, ``month``, ``year``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:475 -#: ../../content/developer/reference/backend/views.rst:1065 +#: ../../content/developer/reference/backend/views.rst:486 +#: ../../content/developer/reference/backend/views.rst:1083 msgid "``scales``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:475 +#: ../../content/developer/reference/backend/views.rst:486 msgid "Comma-separated list of scales to provide. By default, all scales are available. See mode for possible scale values." msgstr "" -#: ../../content/developer/reference/backend/views.rst:478 +#: ../../content/developer/reference/backend/views.rst:489 msgid "``create``, ``delete``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:478 +#: ../../content/developer/reference/backend/views.rst:489 msgid "allows disabling the corresponding action in the view by setting the corresponding attribute to ``false``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:499 +#: ../../content/developer/reference/backend/views.rst:510 msgid "````" msgstr "" -#: ../../content/developer/reference/backend/views.rst:481 +#: ../../content/developer/reference/backend/views.rst:492 msgid "declares fields to aggregate or to use in kanban *logic*. If the field is simply displayed in the calendar cards." msgstr "" -#: ../../content/developer/reference/backend/views.rst:484 +#: ../../content/developer/reference/backend/views.rst:495 msgid "Fields can have additional attributes:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:488 -#: ../../content/developer/reference/backend/views.rst:1772 +#: ../../content/developer/reference/backend/views.rst:499 +#: ../../content/developer/reference/backend/views.rst:1781 msgid "``invisible``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:489 +#: ../../content/developer/reference/backend/views.rst:500 msgid "use \"True\" to hide the value in the cards" msgstr "" -#: ../../content/developer/reference/backend/views.rst:491 +#: ../../content/developer/reference/backend/views.rst:502 msgid "``avatar_field``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:491 +#: ../../content/developer/reference/backend/views.rst:502 msgid "only for x2many field, to display the avatar instead of the display_name in the cards" msgstr "" -#: ../../content/developer/reference/backend/views.rst:495 +#: ../../content/developer/reference/backend/views.rst:506 msgid "``write_model`` and ``write_field`` and ``filter_field``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:494 +#: ../../content/developer/reference/backend/views.rst:505 msgid "you can add a filter and save the result in the defined model, the filter is added in the sidebar. The ``filter_field`` is optional and allows you to specify the field that will hold the status of the filter." msgstr "" -#: ../../content/developer/reference/backend/views.rst:499 +#: ../../content/developer/reference/backend/views.rst:510 msgid "``filters`` and ``color``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:498 +#: ../../content/developer/reference/backend/views.rst:509 msgid "use \"True\" to add this field in filter in the sidebar. You can specify a ``color`` field used to colorize the checkbox." msgstr "" -#: ../../content/developer/reference/backend/views.rst:504 +#: ../../content/developer/reference/backend/views.rst:515 msgid "Cohort" msgstr "" -#: ../../content/developer/reference/backend/views.rst:510 +#: ../../content/developer/reference/backend/views.rst:521 msgid "The cohort view is used to display and understand the way some data changes over a period of time. For example, imagine that for a given business, clients can subscribe to some service. The cohort view can then display the total number of subscriptions each month, and study the rate at which client leave the service (churn). When clicking on a cell, the cohort view will redirect you to a new action in which you will only see the records contained in the cell's time interval; this action contains a list view and a form view." msgstr "" -#: ../../content/developer/reference/backend/views.rst:518 +#: ../../content/developer/reference/backend/views.rst:529 msgid "By default the cohort view will use the same list and form views as those defined on the action. You can pass a list view and a form view to the context of the action in order to set/override the views that will be used (the context keys to use being `form_view_id` and `list_view_id`)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:523 +#: ../../content/developer/reference/backend/views.rst:534 msgid "For example, here is a very simple cohort view:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:529 +#: ../../content/developer/reference/backend/views.rst:540 msgid "The root element of the Cohort view is , it accepts the following attributes:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:539 +#: ../../content/developer/reference/backend/views.rst:550 msgid "``date_start`` (mandatory)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:538 +#: ../../content/developer/reference/backend/views.rst:549 msgid "A valid date or datetime field. This field is understood by the view as the beginning date of a record" msgstr "" -#: ../../content/developer/reference/backend/views.rst:543 +#: ../../content/developer/reference/backend/views.rst:554 msgid "``date_stop`` (mandatory)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:542 +#: ../../content/developer/reference/backend/views.rst:553 msgid "A valid date or datetime field. This field is understood by the view as the end date of a record. This is the field that will determine the churn." msgstr "" -#: ../../content/developer/reference/backend/views.rst:548 -msgid "``mode`` (optional)" -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:546 -msgid "A string to describe the mode. It should be either 'churn' or 'retention' (default). Churn mode will start at 0% and accumulate over time whereas retention will start at 100% and decrease over time." -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:554 -msgid "``timeline`` (optional)" -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:551 -msgid "A string to describe the timeline. It should be either 'backward' or 'forward' (default). Forward timeline will display data from date_start to date_stop, whereas backward timeline will display data from date_stop to date_start (when the date_start is in future / greater than date_stop)." -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:558 -#: ../../content/developer/reference/backend/views.rst:1169 -msgid "``interval`` (optional)" +#: ../../content/developer/reference/backend/views.rst:557 +#: ../../content/developer/reference/backend/views.rst:1144 +#: ../../content/developer/reference/backend/views.rst:2012 +msgid "``disable_linking`` (optional)" msgstr "" #: ../../content/developer/reference/backend/views.rst:557 -msgid "A string to describe a time interval. It should be 'day', 'week', 'month'' (default) or 'year'." +msgid "Set to ``1`` to prevent from redirecting clicks on cohort cells to list view." msgstr "" #: ../../content/developer/reference/backend/views.rst:562 -msgid "``measure`` (optional)" +msgid "``mode`` (optional)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:561 -msgid "A field that can be aggregated. This field will be used to compute the values for each cell. If not set, the cohort view will count the number of occurrences." +#: ../../content/developer/reference/backend/views.rst:560 +msgid "A string to describe the mode. It should be either 'churn' or 'retention' (default). Churn mode will start at 0% and accumulate over time whereas retention will start at 100% and decrease over time." msgstr "" -#: ../../content/developer/reference/backend/views.rst:578 -msgid "```` (optional)" +#: ../../content/developer/reference/backend/views.rst:568 +msgid "``timeline`` (optional)" msgstr "" #: ../../content/developer/reference/backend/views.rst:565 -msgid "allows to specify a particular field in order to manage it from the available measures, it's main use is for hiding a field from the selectable measures:" +msgid "A string to describe the timeline. It should be either 'backward' or 'forward' (default). Forward timeline will display data from date_start to date_stop, whereas backward timeline will display data from date_stop to date_start (when the date_start is in future / greater than date_stop)." +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:572 +#: ../../content/developer/reference/backend/views.rst:1177 +msgid "``interval`` (optional)" msgstr "" #: ../../content/developer/reference/backend/views.rst:571 -msgid "the name of the field to use in the view." -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:573 -#: ../../content/developer/reference/backend/views.rst:891 -#: ../../content/developer/reference/backend/views.rst:1144 -#: ../../content/developer/reference/backend/views.rst:1174 -#: ../../content/developer/reference/backend/views.rst:2052 -msgid "``string`` (optional)" -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:573 -msgid "the name that would be used to display the field in the cohort view, overrides the default python String attribute of the field." -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:578 -#: ../../content/developer/reference/backend/views.rst:1157 -#: ../../content/developer/reference/backend/views.rst:2074 -msgid "``invisible`` (optional)" +msgid "A string to describe a time interval. It should be 'day', 'week', 'month'' (default) or 'year'." msgstr "" #: ../../content/developer/reference/backend/views.rst:576 -#: ../../content/developer/reference/backend/views.rst:2072 +msgid "``measure`` (optional)" +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:575 +msgid "A field that can be aggregated. This field will be used to compute the values for each cell. If not set, the cohort view will count the number of occurrences." +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:592 +msgid "```` (optional)" +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:579 +msgid "allows to specify a particular field in order to manage it from the available measures, it's main use is for hiding a field from the selectable measures:" +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:585 +msgid "the name of the field to use in the view." +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:587 +#: ../../content/developer/reference/backend/views.rst:798 +#: ../../content/developer/reference/backend/views.rst:1152 +#: ../../content/developer/reference/backend/views.rst:1182 +#: ../../content/developer/reference/backend/views.rst:2037 +msgid "``string`` (optional)" +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:587 +msgid "the name that would be used to display the field in the cohort view, overrides the default python String attribute of the field." +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:592 +#: ../../content/developer/reference/backend/views.rst:1165 +#: ../../content/developer/reference/backend/views.rst:2059 +msgid "``invisible`` (optional)" +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:590 +#: ../../content/developer/reference/backend/views.rst:2057 msgid "if true, the field will not appear either in the active measures nor in the selectable measures (useful for fields that do not make sense aggregated, such as fields in different units, e.g. € and $)." msgstr "" -#: ../../content/developer/reference/backend/views.rst:583 +#: ../../content/developer/reference/backend/views.rst:597 #: ../../content/developer/tutorials/getting_started/07_basicviews.rst:72 #: ../../content/developer/tutorials/getting_started/12_sprinkles.rst:234 msgid "Form" msgstr "" -#: ../../content/developer/reference/backend/views.rst:585 +#: ../../content/developer/reference/backend/views.rst:599 msgid "Form views are used to display the data from a single record. Their root element is ``
``. They are composed of regular HTML_ with additional structural and semantic components." msgstr "" -#: ../../content/developer/reference/backend/views.rst:590 -#: ../../content/developer/reference/backend/views.rst:1977 +#: ../../content/developer/reference/backend/views.rst:604 +#: ../../content/developer/reference/backend/views.rst:1962 msgid "Structural components" msgstr "" -#: ../../content/developer/reference/backend/views.rst:592 +#: ../../content/developer/reference/backend/views.rst:606 msgid "Structural components provide structure or \"visual\" features with little logic. They are used as elements or sets of elements in form views." msgstr "" -#: ../../content/developer/reference/backend/views.rst:610 +#: ../../content/developer/reference/backend/views.rst:624 msgid "``notebook``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:598 +#: ../../content/developer/reference/backend/views.rst:612 msgid "defines a tabbed section. Each tab is defined through a ``page`` child element. Pages can have the following attributes:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:603 -#: ../../content/developer/reference/backend/views.rst:1913 -#: ../../content/developer/reference/backend/views.rst:2223 +#: ../../content/developer/reference/backend/views.rst:617 +#: ../../content/developer/reference/backend/views.rst:1898 +#: ../../content/developer/reference/backend/views.rst:2208 msgid "``string`` (required)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:604 +#: ../../content/developer/reference/backend/views.rst:618 msgid "the title of the tab" msgstr "" -#: ../../content/developer/reference/backend/views.rst:605 +#: ../../content/developer/reference/backend/views.rst:619 msgid "``accesskey``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:606 +#: ../../content/developer/reference/backend/views.rst:620 msgid "an HTML accesskey_" msgstr "" -#: ../../content/developer/reference/backend/views.rst:608 -#: ../../content/developer/reference/backend/views.rst:714 -#: ../../content/developer/reference/backend/views.rst:772 -#: ../../content/developer/reference/backend/views.rst:1739 -#: ../../content/developer/reference/backend/views.rst:1795 +#: ../../content/developer/reference/backend/views.rst:622 +#: ../../content/developer/reference/backend/views.rst:728 +#: ../../content/developer/reference/backend/views.rst:785 +#: ../../content/developer/reference/backend/views.rst:1748 +#: ../../content/developer/reference/backend/views.rst:1804 msgid "``attrs``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:608 +#: ../../content/developer/reference/backend/views.rst:622 msgid "standard dynamic attributes based on record values" msgstr "" -#: ../../content/developer/reference/backend/views.rst:610 +#: ../../content/developer/reference/backend/views.rst:624 msgid "Note that ``notebook`` should not be placed within ``group``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:625 -#: ../../content/developer/reference/backend/views.rst:2356 +#: ../../content/developer/reference/backend/views.rst:639 +#: ../../content/developer/reference/backend/views.rst:2341 msgid "``group``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:613 +#: ../../content/developer/reference/backend/views.rst:627 msgid "used to define column layouts in forms. By default, groups define 2 columns and most direct children of groups take a single column. ``field`` direct children of groups display a label by default, and the label and the field itself have a colspan of 1 each." msgstr "" -#: ../../content/developer/reference/backend/views.rst:618 +#: ../../content/developer/reference/backend/views.rst:632 msgid "The number of columns in a ``group`` can be customized using the ``col`` attribute, the number of columns taken by an element can be customized using ``colspan``." msgstr "" -#: ../../content/developer/reference/backend/views.rst:622 +#: ../../content/developer/reference/backend/views.rst:636 msgid "Children are laid out horizontally (tries to fill the next column before changing row)." msgstr "" -#: ../../content/developer/reference/backend/views.rst:625 +#: ../../content/developer/reference/backend/views.rst:639 msgid "Groups can have a ``string`` attribute, which is displayed as the group's title" msgstr "" -#: ../../content/developer/reference/backend/views.rst:629 +#: ../../content/developer/reference/backend/views.rst:643 msgid "``newline``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:628 +#: ../../content/developer/reference/backend/views.rst:642 msgid "only useful within ``group`` elements, ends the current row early and immediately switches to a new row (without filling any remaining column beforehand)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:632 -#: ../../content/developer/reference/backend/views.rst:2352 +#: ../../content/developer/reference/backend/views.rst:646 +#: ../../content/developer/reference/backend/views.rst:2337 msgid "``separator``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:632 +#: ../../content/developer/reference/backend/views.rst:646 msgid "small horizontal spacing, with a ``string`` attribute behaves as a section title" msgstr "" -#: ../../content/developer/reference/backend/views.rst:635 +#: ../../content/developer/reference/backend/views.rst:649 msgid "``sheet``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:635 +#: ../../content/developer/reference/backend/views.rst:649 msgid "can be used as a direct child to ``form`` for a narrower and more responsive form layout" msgstr "" -#: ../../content/developer/reference/backend/views.rst:639 -#: ../../content/developer/reference/backend/views.rst:1889 +#: ../../content/developer/reference/backend/views.rst:653 +#: ../../content/developer/reference/backend/views/header_buttons.rst:26 +#: ../../content/developer/reference/backend/views/header_buttons.rst:27 msgid "``header``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:638 +#: ../../content/developer/reference/backend/views.rst:652 msgid "combined with ``sheet``, provides a full-width location above the sheet itself, generally used to display workflow buttons and status widgets" msgstr "" -#: ../../content/developer/reference/backend/views.rst:642 +#: ../../content/developer/reference/backend/views.rst:656 msgid "Semantic components" msgstr "" -#: ../../content/developer/reference/backend/views.rst:644 +#: ../../content/developer/reference/backend/views.rst:658 msgid "Semantic components tie into and allow interaction with the Odoo system. Available semantic components are:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:661 -#: ../../content/developer/reference/backend/views.rst:1756 -#: ../../content/developer/reference/backend/views.rst:1889 +#: ../../content/developer/reference/backend/views.rst:675 +#: ../../content/developer/reference/backend/views.rst:1765 +#: ../../content/developer/reference/backend/views/header_buttons.rst:26 +#: ../../content/developer/reference/backend/views/header_buttons.rst:27 msgid "``button``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:650 +#: ../../content/developer/reference/backend/views.rst:664 msgid "call into the Odoo system, similar to :ref:`list view buttons `. In addition, the following attribute can be specified:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:657 +#: ../../content/developer/reference/backend/views.rst:671 msgid "``special``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:657 +#: ../../content/developer/reference/backend/views.rst:671 msgid "for form views opened in dialogs: ``save`` to save the record and close the dialog, ``cancel`` to close the dialog without saving." msgstr "" -#: ../../content/developer/reference/backend/views.rst:661 +#: ../../content/developer/reference/backend/views.rst:675 msgid "``confirm``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:660 +#: ../../content/developer/reference/backend/views.rst:674 msgid "confirmation message to display (and for the user to accept) before performing the button's Odoo call (also works in Kanban views)." msgstr "" -#: ../../content/developer/reference/backend/views.rst:664 +#: ../../content/developer/reference/backend/views.rst:678 msgid "renders (and allow editing of, possibly) a single field of the current record. Using several times a field in a form view is supported and the fields can receive different values for modifiers 'invisible' and 'readonly'. However, the behavior is not guaranteed when several fields exist with different values for modifier 'required'. Possible attributes of the field node are:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:673 +#: ../../content/developer/reference/backend/views.rst:687 msgid "the name of the field to render" msgstr "" -#: ../../content/developer/reference/backend/views.rst:675 +#: ../../content/developer/reference/backend/views.rst:689 msgid "the node id. Useful when there are several occurrences of the same field in the view (see ``label`` component below). Default is the field name." msgstr "" -#: ../../content/developer/reference/backend/views.rst:678 +#: ../../content/developer/reference/backend/views.rst:692 msgid "fields have a default rendering based on their type (e.g. :class:`~odoo.fields.Char`, :class:`~odoo.fields.Many2one`). The ``widget`` attributes allows using a different rendering method and context." msgstr "" -#: ../../content/developer/reference/backend/views.rst:683 +#: ../../content/developer/reference/backend/views.rst:697 msgid "list of widgets" msgstr "" -#: ../../content/developer/reference/backend/views.rst:685 +#: ../../content/developer/reference/backend/views.rst:699 msgid "& options & specific attributes (e.g. widget=statusbar statusbar_visible clickable)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:688 +#: ../../content/developer/reference/backend/views.rst:702 msgid "``options``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:688 +#: ../../content/developer/reference/backend/views.rst:702 msgid "JSON object specifying configuration option for the field's widget (including default widgets)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:702 -#: ../../content/developer/reference/backend/views.rst:768 -#: ../../content/developer/reference/backend/views.rst:1472 +#: ../../content/developer/reference/backend/views.rst:716 +#: ../../content/developer/reference/backend/views.rst:782 +#: ../../content/developer/reference/backend/views.rst:1480 msgid "``class``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:691 +#: ../../content/developer/reference/backend/views.rst:705 msgid "HTML class to set on the generated element, common field classes are:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:695 +#: ../../content/developer/reference/backend/views.rst:709 msgid "``oe_inline``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:696 +#: ../../content/developer/reference/backend/views.rst:710 msgid "prevent the usual line break following fields and limit their span." msgstr "" -#: ../../content/developer/reference/backend/views.rst:697 +#: ../../content/developer/reference/backend/views.rst:711 msgid "``oe_left``, ``oe_right``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:698 +#: ../../content/developer/reference/backend/views.rst:712 msgid "floats_ the field to the corresponding direction" msgstr "" -#: ../../content/developer/reference/backend/views.rst:699 +#: ../../content/developer/reference/backend/views.rst:713 msgid "``oe_read_only``, ``oe_edit_only``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:700 +#: ../../content/developer/reference/backend/views.rst:714 msgid "only displays the field in the corresponding form mode" msgstr "" -#: ../../content/developer/reference/backend/views.rst:702 +#: ../../content/developer/reference/backend/views.rst:716 msgid "``oe_avatar``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:702 +#: ../../content/developer/reference/backend/views.rst:716 msgid "for image fields, displays images as \"avatar\" (square, 90x90 maximum size, some image decorations)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:705 +#: ../../content/developer/reference/backend/views.rst:719 msgid "only displays the field for specific users" msgstr "" -#: ../../content/developer/reference/backend/views.rst:712 +#: ../../content/developer/reference/backend/views.rst:726 msgid "``on_change``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:707 +#: ../../content/developer/reference/backend/views.rst:721 msgid "calls the specified method when this field's value is edited, can generate update other fields or display warnings for the user" msgstr "" -#: ../../content/developer/reference/backend/views.rst:712 +#: ../../content/developer/reference/backend/views.rst:726 msgid "Use :func:`odoo.api.onchange` on the model" msgstr "" -#: ../../content/developer/reference/backend/views.rst:715 +#: ../../content/developer/reference/backend/views.rst:729 msgid "dynamic meta-parameters based on record values" msgstr "" -#: ../../content/developer/reference/backend/views.rst:717 -#: ../../content/developer/reference/backend/views.rst:1353 -#: ../../content/developer/reference/backend/views.rst:1402 -#: ../../content/developer/reference/backend/views.rst:1415 -#: ../../content/developer/reference/backend/views.rst:2130 -#: ../../content/developer/reference/backend/views.rst:2211 +#: ../../content/developer/reference/backend/views.rst:731 +#: ../../content/developer/reference/backend/views.rst:1361 +#: ../../content/developer/reference/backend/views.rst:1410 +#: ../../content/developer/reference/backend/views.rst:1423 +#: ../../content/developer/reference/backend/views.rst:2115 +#: ../../content/developer/reference/backend/views.rst:2196 #: ../../content/developer/tutorials/backend.rst:931 msgid "``domain``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:717 +#: ../../content/developer/reference/backend/views.rst:731 msgid "for relational fields only, filters to apply when displaying existing records for selection" msgstr "" -#: ../../content/developer/reference/backend/views.rst:720 +#: ../../content/developer/reference/backend/views.rst:734 msgid "for relational fields only, context to pass when fetching possible values" msgstr "" -#: ../../content/developer/reference/backend/views.rst:722 +#: ../../content/developer/reference/backend/views.rst:736 msgid "``readonly``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:722 +#: ../../content/developer/reference/backend/views.rst:736 msgid "display the field in both readonly and edit mode, but never make it editable" msgstr "" -#: ../../content/developer/reference/backend/views.rst:725 +#: ../../content/developer/reference/backend/views.rst:739 msgid "``required``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:725 +#: ../../content/developer/reference/backend/views.rst:739 msgid "generates an error and prevents saving the record if the field doesn't have a value" msgstr "" -#: ../../content/developer/reference/backend/views.rst:728 -#: ../../content/developer/reference/backend/views.rst:1812 +#: ../../content/developer/reference/backend/views.rst:742 +#: ../../content/developer/reference/backend/views.rst:1820 msgid "``nolabel``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:728 +#: ../../content/developer/reference/backend/views.rst:742 msgid "don't automatically display the field's label, only makes sense if the field is a direct child of a ``group`` element" msgstr "" -#: ../../content/developer/reference/backend/views.rst:732 +#: ../../content/developer/reference/backend/views.rst:746 msgid "``placeholder``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:731 +#: ../../content/developer/reference/backend/views.rst:745 msgid "help message to display in *empty* fields. Can replace field labels in complex forms. *Should not* be an example of data as users are liable to confuse placeholder text with filled fields" msgstr "" -#: ../../content/developer/reference/backend/views.rst:735 +#: ../../content/developer/reference/backend/views.rst:749 msgid "for :class:`~odoo.fields.One2many`, display mode (view type) to use for the field's linked records. One of ``tree``, ``form``, ``kanban`` or ``graph``. The default is ``tree`` (a list display)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:738 -#: ../../content/developer/reference/backend/views.rst:2318 +#: ../../content/developer/reference/backend/views.rst:752 +#: ../../content/developer/reference/backend/views.rst:2303 msgid "``help``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:739 +#: ../../content/developer/reference/backend/views.rst:753 msgid "tooltip displayed for users when hovering the field or its label" msgstr "" -#: ../../content/developer/reference/backend/views.rst:741 +#: ../../content/developer/reference/backend/views.rst:755 msgid "``filename``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:741 +#: ../../content/developer/reference/backend/views.rst:755 msgid "for binary fields, name of the related field providing the name of the file" msgstr "" -#: ../../content/developer/reference/backend/views.rst:744 +#: ../../content/developer/reference/backend/views.rst:758 msgid "``password``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:744 +#: ../../content/developer/reference/backend/views.rst:758 msgid "indicates that a :class:`~odoo.fields.Char` field stores a password and that its data shouldn't be displayed" msgstr "" -#: ../../content/developer/reference/backend/views.rst:748 +#: ../../content/developer/reference/backend/views.rst:762 msgid "``kanban_view_ref``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:747 +#: ../../content/developer/reference/backend/views.rst:761 msgid "for opening specific kanban view when selecting records from m2o/m2m in mobile environment" msgstr "" -#: ../../content/developer/reference/backend/views.rst:772 +#: ../../content/developer/reference/backend/views.rst:786 msgid "``label``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:751 +#: ../../content/developer/reference/backend/views.rst:765 msgid "when a ``field`` component isn't placed directly inside a ``group``, or when its ``nolabel`` attribute is set, the field's label isn't automatically displayed alongside its value. The ``label`` component is the manual alternative of displaying the label of a field. Possible attributes are:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:763 +#: ../../content/developer/reference/backend/views.rst:777 msgid "``for`` (mandatory)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:759 +#: ../../content/developer/reference/backend/views.rst:773 msgid "the reference to the field associated with the label. Can be either the name of a field, or its id (``id`` attribute set on the ``field``). When there are several occurrences of the same field in the view, and there are several ``label`` components associated with these ``field`` nodes, those labels must have unique ``for`` attributes (in this case referencing the ``id`` attribute of the corresponding ``field`` nodes)." msgstr "" -#: ../../content/developer/reference/backend/views.rst:766 -#: ../../content/developer/reference/backend/views.rst:838 -#: ../../content/developer/reference/backend/views.rst:1017 -#: ../../content/developer/reference/backend/views.rst:1305 -#: ../../content/developer/reference/backend/views.rst:1704 -#: ../../content/developer/reference/backend/views.rst:1768 -#: ../../content/developer/reference/backend/views.rst:2008 -#: ../../content/developer/reference/backend/views.rst:2176 -#: ../../content/developer/reference/backend/views.rst:2391 +#: ../../content/developer/reference/backend/views.rst:780 +#: ../../content/developer/reference/backend/views.rst:885 +#: ../../content/developer/reference/backend/views.rst:1038 +#: ../../content/developer/reference/backend/views.rst:1313 +#: ../../content/developer/reference/backend/views.rst:1713 +#: ../../content/developer/reference/backend/views.rst:1777 +#: ../../content/developer/reference/backend/views.rst:1993 +#: ../../content/developer/reference/backend/views.rst:2161 +#: ../../content/developer/reference/backend/views.rst:2376 #: ../../content/developer/reference/frontend/services.rst:869 #: ../../content/developer/reference/frontend/services.rst:872 #: ../../content/developer/reference/frontend/services.rst:878 @@ -11563,1215 +11661,1218 @@ msgstr "" msgid "``string``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:766 +#: ../../content/developer/reference/backend/views.rst:780 msgid "the label to display. Display the field's label (coming from the field definition in the model) by default." msgstr "" -#: ../../content/developer/reference/backend/views.rst:769 -#: ../../content/developer/reference/backend/views.rst:771 +#: ../../content/developer/reference/backend/views.rst:783 +#: ../../content/developer/reference/backend/views.rst:785 msgid "same as for ``field`` component." msgstr "" -#: ../../content/developer/reference/backend/views.rst:807 -msgid "classes for forms" -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:809 -msgid "widgets?" -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:812 -msgid "Settings Form View" -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:814 -msgid "The settings form view is a customization of the form view. It's used to centralize all the settings of Odoo." -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:817 -msgid "This view differs from a generic form view because it has a search bar, a sidebar and accepts 3 additional tags: ``app``, ``block`` and ``setting``." -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:843 -msgid "``app``" -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:823 -msgid "The ``app`` tag is used to declare the application on the settings view. It creates an entry with its logo on the sidebar of the view. It also acts as delimiter when searching." -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:826 -#: ../../content/developer/reference/backend/views.rst:848 -#: ../../content/developer/reference/backend/views.rst:872 -msgid "Syntax:" -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:834 -#: ../../content/developer/reference/backend/views.rst:856 -#: ../../content/developer/reference/backend/views.rst:881 -msgid "Parameters:" -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:839 -msgid "The \"display\" name of the application." -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:841 -msgid "The technical name of the application (the name of the module)." -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:843 -msgid "``logo`` (optional)" -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:843 -msgid "The relative path to the logo. If not set, the logo is created using the ``name`` parameter : ``/{name}/static/description/icon.png``." -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:863 -msgid "``block``" -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:846 -msgid "The ``block`` tag is used to declare a group of settings. This group can have a title and a description/help." -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:860 -#: ../../content/developer/reference/backend/views.rst:893 -msgid "``title`` (optional)" -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:861 -msgid "The title of the block of settings, you can perform research on its text." -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:863 -#: ../../content/developer/reference/backend/views.rst:895 -msgid "``help`` (optional)" -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:863 -msgid "The description/help of the block of settings, you can perform research on its text." -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:903 +#: ../../content/developer/reference/backend/views.rst:819 +#: ../../content/developer/reference/backend/views.rst:924 msgid "``setting``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:866 -msgid "The ``setting`` tag is used to declare the setting itself. The first field in the setting is used as the main field (optional). This field is placed on the left panel (if it's a boolean field) or on the top of the right panel (otherwise). The field is also used to create the setting label if a ``string`` is not defined. The ``setting`` tag can also contain more elements (e.g. html), all of these elements are rendered in the right panel." +#: ../../content/developer/reference/backend/views.rst:789 +msgid "The ``setting`` tag is used to declare a setting, an entity visually separated on two panels (left and right), and used to edit a given field. The first field in the setting is used as the main field (optional). This field is placed on the left panel (if it's a boolean field) or on the top of the right panel (otherwise). The field is also used to create the setting label if a ``string`` is not defined. The ``setting`` tag can also contain more elements (e.g. html), all of these elements are rendered in the right panel." msgstr "" -#: ../../content/developer/reference/backend/views.rst:889 -#: ../../content/developer/reference/backend/views.rst:1129 -#: ../../content/developer/reference/backend/views.rst:1163 -#: ../../content/developer/reference/backend/views.rst:2069 -msgid "``type`` (optional)" -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:886 -msgid "By default, a setting is visually separated on two panels (left and right), and is used to edit a given field. By defining ``type='header'``, a special kind of setting is rendered instead. This setting is used to modify the scope of the other settings. For example, on the website application, this setting is used to indicate to which website the other settings apply. The header setting is visually represented as a yellow banner on the top of the screen." -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:892 +#: ../../content/developer/reference/backend/views.rst:799 msgid "The text used as label of the setting. If it's not defined, the first field is used as label." msgstr "" -#: ../../content/developer/reference/backend/views.rst:894 +#: ../../content/developer/reference/backend/views.rst:800 +#: ../../content/developer/reference/backend/views.rst:907 +msgid "``title`` (optional)" +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:801 msgid "The text used as tooltip." msgstr "" -#: ../../content/developer/reference/backend/views.rst:896 +#: ../../content/developer/reference/backend/views.rst:802 +#: ../../content/developer/reference/backend/views.rst:910 +msgid "``help`` (optional)" +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:803 msgid "The help/description of the setting. This text is displayed just below the setting label (with classname ``text-muted``)." msgstr "" -#: ../../content/developer/reference/backend/views.rst:898 +#: ../../content/developer/reference/backend/views.rst:805 msgid "``company_dependent`` (optional)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:898 +#: ../../content/developer/reference/backend/views.rst:805 msgid "If this attribute is set to \"1\" an icon is displayed next to the setting label to explicit that this setting is company-specific." msgstr "" -#: ../../content/developer/reference/backend/views.rst:903 +#: ../../content/developer/reference/backend/views.rst:810 msgid "``documentation`` (optional)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:901 +#: ../../content/developer/reference/backend/views.rst:808 msgid "If this attribute is set, an icon is added next to the setting label, this icon is a link to the documentation. Note that you can use relative or absolute path. The relative path is relative to ``https://www.odoo.com/documentation/``, so it's not necessary to hard-code the server version on the arch anymore." msgstr "" -#: ../../content/developer/reference/backend/views.rst:932 +#: ../../content/developer/reference/backend/views.rst:854 +msgid "classes for forms" +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:856 +msgid "widgets?" +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:859 +msgid "Settings Form View" +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:861 +msgid "The settings form view is a customization of the form view. It's used to centralize all the settings of Odoo." +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:864 +msgid "This view differs from a generic form view because it has a search bar, a sidebar and accepts 2 additional tags: ``app`` and ``block``. It also adds a new parameter to the ``setting`` tag." +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:890 +msgid "``app``" +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:870 +msgid "The ``app`` tag is used to declare the application on the settings view. It creates an entry with its logo on the sidebar of the view. It also acts as delimiter when searching." +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:873 +#: ../../content/developer/reference/backend/views.rst:895 +msgid "Syntax:" +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:881 +#: ../../content/developer/reference/backend/views.rst:903 +msgid "Parameters:" +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:886 +msgid "The \"display\" name of the application." +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:888 +msgid "The technical name of the application (the name of the module)." +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:890 +msgid "``logo`` (optional)" +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:890 +msgid "The relative path to the logo. If not set, the logo is created using the ``name`` parameter : ``/{name}/static/description/icon.png``." +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:910 +msgid "``block``" +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:893 +msgid "The ``block`` tag is used to declare a group of settings. This group can have a title and a description/help." +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:908 +msgid "The title of the block of settings, you can perform research on its text." +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:910 +msgid "The description/help of the block of settings, you can perform research on its text." +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:913 +msgid "The definition and all the available parameters of the ``setting`` tag can be found in the :ref:`setting tag ` definition in the form view. The settings form view adds the following parameter to the ``setting`` tag:" +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:923 +#: ../../content/developer/reference/backend/views.rst:1137 +#: ../../content/developer/reference/backend/views.rst:1171 +#: ../../content/developer/reference/backend/views.rst:2054 +msgid "``type`` (optional)" +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:920 +msgid "By default, a setting is visually separated on two panels (left and right), and is used to edit a given field. By defining ``type='header'``, a special kind of setting is rendered instead. This setting is used to modify the scope of the other settings. For example, on the website application, this setting is used to indicate to which website the other settings apply. The header setting is visually represented as a yellow banner on the top of the screen." +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:953 #: ../../content/developer/tutorials/backend.rst:970 msgid "Gantt" msgstr "" -#: ../../content/developer/reference/backend/views.rst:938 +#: ../../content/developer/reference/backend/views.rst:959 msgid "Gantt views appropriately display Gantt charts (for scheduling)." msgstr "" -#: ../../content/developer/reference/backend/views.rst:940 +#: ../../content/developer/reference/backend/views.rst:961 msgid "The root element of gantt views is ````, it has no children but can take the following attributes:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:946 +#: ../../content/developer/reference/backend/views.rst:967 msgid "name of the field providing the start datetime of the event for each record." msgstr "" -#: ../../content/developer/reference/backend/views.rst:949 +#: ../../content/developer/reference/backend/views.rst:970 msgid "``date_stop`` (required)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:949 +#: ../../content/developer/reference/backend/views.rst:970 msgid "name of the field providing the end duration of the event for each record." msgstr "" -#: ../../content/developer/reference/backend/views.rst:954 +#: ../../content/developer/reference/backend/views.rst:975 msgid "``dependency_field``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:952 +#: ../../content/developer/reference/backend/views.rst:973 msgid "name of the ``many2many`` field that provides the dependency relation between two records. If B depends on A, ``dependency_field`` is the field that allows getting A from B. Both this field and ``dependency_inverted_field`` field are used to draw dependency arrows between pills and reschedule them." msgstr "" -#: ../../content/developer/reference/backend/views.rst:958 +#: ../../content/developer/reference/backend/views.rst:979 msgid "``dependency_inverted_field`` (required if ``dependency_field`` is provided)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:957 +#: ../../content/developer/reference/backend/views.rst:978 msgid "name of the ``many2many`` field that provides the invert dependency relation than ``dependency_field``. If B depends on A, ``dependency_inverted_field`` is the field that allows getting B from A." msgstr "" -#: ../../content/developer/reference/backend/views.rst:961 +#: ../../content/developer/reference/backend/views.rst:982 msgid "name of the field used to color the pills according to its value" msgstr "" -#: ../../content/developer/reference/backend/views.rst:976 -#: ../../content/developer/reference/backend/views.rst:1676 -#: ../../content/developer/reference/backend/views.rst:1809 +#: ../../content/developer/reference/backend/views.rst:997 +#: ../../content/developer/reference/backend/views.rst:1685 +#: ../../content/developer/reference/backend/views.rst:1817 #: ../../content/developer/tutorials/backend.rst:878 msgid "``decoration-{$name}``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:963 -#: ../../content/developer/reference/backend/views.rst:1672 +#: ../../content/developer/reference/backend/views.rst:984 +#: ../../content/developer/reference/backend/views.rst:1681 #: ../../content/developer/tutorials/backend.rst:854 msgid "allow changing the style of a row's text based on the corresponding record's attributes." msgstr "" -#: ../../content/developer/reference/backend/views.rst:976 +#: ../../content/developer/reference/backend/views.rst:997 msgid "``{$name}`` can be one of the following `bootstrap contextual color`_ (``danger``, ``info``, ``secondary``, ``success`` or ``warning``)." msgstr "" -#: ../../content/developer/reference/backend/views.rst:978 -#: ../../content/developer/reference/backend/views.rst:1467 -#: ../../content/developer/reference/backend/views.rst:1658 +#: ../../content/developer/reference/backend/views.rst:999 +#: ../../content/developer/reference/backend/views.rst:1475 +#: ../../content/developer/reference/backend/views.rst:1667 msgid "``default_group_by``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:979 +#: ../../content/developer/reference/backend/views.rst:1000 msgid "name of a field to group tasks by" msgstr "" -#: ../../content/developer/reference/backend/views.rst:980 +#: ../../content/developer/reference/backend/views.rst:1001 msgid "``disable_drag_drop``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:981 +#: ../../content/developer/reference/backend/views.rst:1002 msgid "if set to true, the gantt view will not have any drag&drop support" msgstr "" -#: ../../content/developer/reference/backend/views.rst:982 +#: ../../content/developer/reference/backend/views.rst:1003 msgid "``consolidation``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:983 +#: ../../content/developer/reference/backend/views.rst:1004 msgid "field name to display consolidation value in record cell" msgstr "" -#: ../../content/developer/reference/backend/views.rst:986 +#: ../../content/developer/reference/backend/views.rst:1007 msgid "``consolidation_max``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:985 +#: ../../content/developer/reference/backend/views.rst:1006 msgid "dictionary with the \"group by\" field as key and the maximum consolidation value that can be reached before displaying the cell in red (e.g. ``{\"user_id\": 100}``)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:990 +#: ../../content/developer/reference/backend/views.rst:1011 msgid "``consolidation_exclude``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:989 +#: ../../content/developer/reference/backend/views.rst:1010 msgid "name of the field that describes if the task has to be excluded from the consolidation if set to true it displays a striped zone in the consolidation line" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1007 +#: ../../content/developer/reference/backend/views.rst:1028 msgid "``create``, ``cell_create``, ``edit``, ``delete``, ``plan``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:993 +#: ../../content/developer/reference/backend/views.rst:1014 msgid "allows *dis*\\ abling the corresponding action in the view by setting the corresponding attribute to ``false`` (default: ``true``)." msgstr "" -#: ../../content/developer/reference/backend/views.rst:996 +#: ../../content/developer/reference/backend/views.rst:1017 msgid "``create``: If enabled, an ``Add`` button will be available in the control panel to create records." msgstr "" -#: ../../content/developer/reference/backend/views.rst:998 +#: ../../content/developer/reference/backend/views.rst:1019 msgid "``cell_create``: If enabled and ``create`` enabled, a \"**+**\" button will be displayed while hovering on a time slot cell to create a new record on that slot." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1000 +#: ../../content/developer/reference/backend/views.rst:1021 msgid "``edit``: If enabled, the opened records will be in edit mode (thus editable)." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1001 +#: ../../content/developer/reference/backend/views.rst:1022 msgid "``plan``: If enabled and ``edit`` enabled, a \"magnifying glass\" button will be displayed on time slots to plan unassigned records into that time slot." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1006 +#: ../../content/developer/reference/backend/views.rst:1027 msgid "When you do not want to create records on the gantt view and the beginning and end dates are required on the model, the planning feature should be disabled because no record will ever be found." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1012 +#: ../../content/developer/reference/backend/views.rst:1033 msgid "``offset``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1010 +#: ../../content/developer/reference/backend/views.rst:1031 msgid "Depending on the scale, the number of units to add to today to compute the default period. Examples: An offset of +1 in default_scale week will open the gantt view for next week, and an offset of -2 in default_scale month will open the gantt view of 2 months ago." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1015 +#: ../../content/developer/reference/backend/views.rst:1036 msgid "``progress``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1015 +#: ../../content/developer/reference/backend/views.rst:1036 msgid "name of a field providing the completion percentage for the record's event, between 0 and 100" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1018 +#: ../../content/developer/reference/backend/views.rst:1039 msgid "title of the gantt view" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1043 +#: ../../content/developer/reference/backend/views.rst:1064 msgid "``precision``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1020 +#: ../../content/developer/reference/backend/views.rst:1041 msgid "JSON object specifying snapping precisions for the pills in each scale." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1022 +#: ../../content/developer/reference/backend/views.rst:1043 msgid "Possible values for scale ``day`` are (default: ``hour``):" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1024 +#: ../../content/developer/reference/backend/views.rst:1045 msgid "``hour``: records times snap to full hours (ex: 7:12 becomes 8:00)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1026 +#: ../../content/developer/reference/backend/views.rst:1047 msgid "``hour:half``: records times snap to half hours (ex: 7:12 becomes 7:30)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1028 +#: ../../content/developer/reference/backend/views.rst:1049 msgid "``hour:quarter``: records times snap to half hours (ex: 7:12 becomes 7:15)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1030 +#: ../../content/developer/reference/backend/views.rst:1051 msgid "Possible values for scale ``week`` are (default: ``day:half``):" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1032 -#: ../../content/developer/reference/backend/views.rst:1038 +#: ../../content/developer/reference/backend/views.rst:1053 +#: ../../content/developer/reference/backend/views.rst:1059 msgid "``day``: records times snap to full days (ex: 7:28 AM becomes 11:59:59 PM of the previous day, 10:32 PM becomes 12:00 PM of the current day)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1034 -#: ../../content/developer/reference/backend/views.rst:1040 +#: ../../content/developer/reference/backend/views.rst:1055 +#: ../../content/developer/reference/backend/views.rst:1061 msgid "``day:half``: records times snap to half hours (ex: 7:28 AM becomes 12:00 PM)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1036 +#: ../../content/developer/reference/backend/views.rst:1057 msgid "Possible values for scale ``month`` are (default: ``day:half``):" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1042 +#: ../../content/developer/reference/backend/views.rst:1063 msgid "Scale ``year`` always snap to full day." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1044 +#: ../../content/developer/reference/backend/views.rst:1065 msgid "Example of precision attribute: ``{\"day\": \"hour:quarter\", \"week\": \"day:half\", \"month\": \"day\"}``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1046 +#: ../../content/developer/reference/backend/views.rst:1067 msgid "``total_row``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1046 +#: ../../content/developer/reference/backend/views.rst:1067 msgid "boolean to control whether the row containing the total count of records should be displayed. (default: ``false``)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1049 -msgid "``collapse_first_level``" -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:1049 -msgid "boolean to control whether it is possible to collapse each row if grouped by one field. (default: ``false``, the collapse starts when grouping by two fields)" -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:1053 +#: ../../content/developer/reference/backend/views.rst:1071 msgid "``display_unavailability``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1052 +#: ../../content/developer/reference/backend/views.rst:1070 msgid "boolean to mark the dates returned by the ``gantt_unavailability`` function of the model as available inside the gantt view. Records can still be scheduled in them, but their unavailability is visually displayed. (default: ``false``)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1061 +#: ../../content/developer/reference/backend/views.rst:1079 msgid "``default_scale``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1056 +#: ../../content/developer/reference/backend/views.rst:1074 msgid "default scale when rendering the view. Possible values are (default: ``month``):" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1058 +#: ../../content/developer/reference/backend/views.rst:1076 msgid "``day``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1059 +#: ../../content/developer/reference/backend/views.rst:1077 msgid "``week``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1060 +#: ../../content/developer/reference/backend/views.rst:1078 msgid "``month``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1061 +#: ../../content/developer/reference/backend/views.rst:1079 msgid "``year``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1064 +#: ../../content/developer/reference/backend/views.rst:1082 msgid "comma-separated list of allowed scales for this view. By default, all scales are allowed. For possible scale values to use in this list, see ``default_scale``." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1068 -msgid "defines the :ref:`reference/qweb` template ``gantt-popover`` which is used when the user hovers over one of the records in the gantt view." -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:1071 -msgid "The gantt view uses mostly-standard :ref:`javascript qweb ` and provides the following context variables:" -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:1077 -msgid "the current :js:class:`GanttRow`, can be used to fetch some meta-information. The ``getColor`` method to convert in a color integer is also available directly in the template context without using ``widget``." -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:1083 -msgid "``on_create``" -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:1082 -msgid "If specified when clicking the add button on the view, instead of opening a generic dialog, launch a client action. this should hold the xmlid of the action (eg: ``on_create=\"%(my_module.my_wizard)d\"``" -msgstr "" - #: ../../content/developer/reference/backend/views.rst:1086 -msgid "view to open when the user create or edit a record. Note that if this attribute is not set, the gantt view will fall back to the id of the form view in the current action, if any." -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:1092 -msgid "``dynamic_range``" +msgid "defines the :ref:`QWeb template ` ``gantt-popover`` which is used by the popover that is opened when the user clicks on a record in the gantt view." msgstr "" #: ../../content/developer/reference/backend/views.rst:1091 -msgid "if set to true, the gantt view will start at the first record, instead of starting at the beginning of the year/month/day." +msgid "``on_create``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1096 -msgid "``pill_label``" +#: ../../content/developer/reference/backend/views.rst:1090 +msgid "If specified, launch a client action when clicking the add button on the view instead of opening a generic dialog. This should hold the xmlid of the action (eg: ``on_create=\"%(my_module.my_wizard)d\"``)." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1095 -msgid "If set to true, the time appears in the pill label when the scale is set on week or month. (e.g. `7:00 AM - 11:00 AM (4h) - DST Task 1`)" +#: ../../content/developer/reference/backend/views.rst:1094 +msgid "view to open when the user create or edit a record. Note that if this attribute is not set, the gantt view will fall back to the id of the form view in the current action, if any." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1115 -msgid "``thumbnails``" +#: ../../content/developer/reference/backend/views.rst:1100 +msgid "``dynamic_range``" msgstr "" #: ../../content/developer/reference/backend/views.rst:1099 -msgid "This allows to display a thumbnail next to groups name if the group is a relationnal field. This expects a python dict which keys are the name of the field on the active model. Values are the names of the field holding the thumbnail on the related model." +msgid "if set to true, the gantt view will start at the first record, instead of starting at the beginning of the year/month/day." +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:1104 +msgid "``pill_label``" msgstr "" #: ../../content/developer/reference/backend/views.rst:1103 +msgid "If set to true, the time appears in the pill label when the scale is set on week or month. (e.g. `7:00 AM - 11:00 AM (4h) - DST Task 1`)" +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:1123 +msgid "``thumbnails``" +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:1107 +msgid "This allows to display a thumbnail next to groups name if the group is a relationnal field. This expects a python dict which keys are the name of the field on the active model. Values are the names of the field holding the thumbnail on the related model." +msgstr "" + +#: ../../content/developer/reference/backend/views.rst:1111 msgid "Example: tasks have a field user_id that reference res.users. The res.users model has a field image that holds the avatar, then:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1115 +#: ../../content/developer/reference/backend/views.rst:1123 msgid "will display the users avatars next to their names when grouped by user_id." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1120 +#: ../../content/developer/reference/backend/views.rst:1128 msgid "Graph" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1122 +#: ../../content/developer/reference/backend/views.rst:1130 msgid "The graph view is used to visualize aggregations over a number of records or record groups. Its root element is ```` which can take the following attributes:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1129 +#: ../../content/developer/reference/backend/views.rst:1137 msgid "one of ``bar`` (default), ``pie`` and ``line``, the type of graph to use" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1133 +#: ../../content/developer/reference/backend/views.rst:1141 msgid "``stacked`` (optional)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1132 +#: ../../content/developer/reference/backend/views.rst:1140 msgid "only used for ``bar`` charts. Set to ``0`` to prevent the bars within a group to be stacked initially." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1136 -#: ../../content/developer/reference/backend/views.rst:2027 -msgid "``disable_linking`` (optional)" -msgstr "" - -#: ../../content/developer/reference/backend/views.rst:1136 +#: ../../content/developer/reference/backend/views.rst:1144 msgid "set to ``1`` to prevent from redirecting clicks on graph to list view" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1141 +#: ../../content/developer/reference/backend/views.rst:1149 msgid "``order`` (optional)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1139 +#: ../../content/developer/reference/backend/views.rst:1147 msgid "if set, x-axis values will be sorted by default according their measure with respect to the given order (``asc`` or ``desc``). Only used for ``bar`` and ``pie`` charts." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1144 +#: ../../content/developer/reference/backend/views.rst:1152 msgid "string displayed in the breadcrumbs when redirecting to list view." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1146 +#: ../../content/developer/reference/backend/views.rst:1154 msgid "The only allowed element within a graph view is ``field`` which can have the following attributes:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1152 -#: ../../content/developer/reference/backend/views.rst:2047 +#: ../../content/developer/reference/backend/views.rst:1160 +#: ../../content/developer/reference/backend/views.rst:2032 msgid "the name of a field to use in the view. If used for grouping (rather than aggregating)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1156 +#: ../../content/developer/reference/backend/views.rst:1164 msgid "if true, the field will not appear either in the active measures nor in the selectable measures." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1160 +#: ../../content/developer/reference/backend/views.rst:1168 msgid "if set to ``measure``, the field will be used as an aggregated value within a group instead of a grouping criteria. It only works for the last field with that attribute but it is useful for other fields with string attribute (see below)." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1166 +#: ../../content/developer/reference/backend/views.rst:1174 msgid "on date and datetime fields, groups by the specified interval (``day``, ``week``, ``month``, ``quarter`` or ``year``) instead of grouping on the specific datetime (fixed second resolution) or date (fixed day resolution). Default is ``month``." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1172 +#: ../../content/developer/reference/backend/views.rst:1180 msgid "only used for field with ``type=\"measure\"``. The name that will be used to display the field in the graph view, overrides the default python String attribute of the field." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1176 -#: ../../content/developer/reference/backend/views.rst:2076 +#: ../../content/developer/reference/backend/views.rst:1184 +#: ../../content/developer/reference/backend/views.rst:2061 msgid "The measures are automatically generated from the model fields; only the aggregatable fields are used. Those measures are also alphabetically sorted on the string of the field." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1182 +#: ../../content/developer/reference/backend/views.rst:1190 msgid "graph view aggregations are performed on database content, non-stored function fields can not be used in graph views" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1188 +#: ../../content/developer/reference/backend/views.rst:1196 msgid "Grid" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1195 +#: ../../content/developer/reference/backend/views.rst:1203 #: ../../content/developer/reference/frontend/javascript_modules.rst:193 msgid "Limitations" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1197 +#: ../../content/developer/reference/backend/views.rst:1205 msgid "This view is a work in progress and may have to be expanded or altered." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1199 +#: ../../content/developer/reference/backend/views.rst:1207 msgid "only ``date`` column fields have been tested, ``selection`` and ``many2one`` are nominally implemented and supported but have not been tested, ``datetime`` is not implemented at all." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1202 +#: ../../content/developer/reference/backend/views.rst:1210 msgid "column cells are hardly configurable and must be numerical" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1203 +#: ../../content/developer/reference/backend/views.rst:1211 msgid "cell adjustment is disabled by default and must be configured to be enabled" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1204 +#: ../../content/developer/reference/backend/views.rst:1212 msgid "``create``, ``edit`` and ``delete`` ACL metadata doesn't get automatically set on the view root due to limitations in ``fields_view_get`` post-processing (there's a fixed explicit list of the view types getting those attributes)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1210 +#: ../../content/developer/reference/backend/views.rst:1218 msgid "Schema" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1212 +#: ../../content/developer/reference/backend/views.rst:1220 msgid "The grid view has its own schema and additional validation in this module. The view architecture is:" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1269 +#: ../../content/developer/reference/backend/views.rst:1277 msgid "```` (1)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1216 +#: ../../content/developer/reference/backend/views.rst:1224 msgid "architecture root element" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1218 +#: ../../content/developer/reference/backend/views.rst:1226 msgid "mandatory ``string`` attribute" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1219 +#: ../../content/developer/reference/backend/views.rst:1227 msgid "optional ``create``, ``edit`` and ``delete`` attributes" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1220 +#: ../../content/developer/reference/backend/views.rst:1228 msgid "optional ``adjustment`` and ``adjust_name`` attributes" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1222 +#: ../../content/developer/reference/backend/views.rst:1230 msgid "``adjustment`` can be either ``object`` or ``action`` to indicate whether a cell's adjustment should be performed through a method call or an action execution. ``adjust_name`` provides respectively the method name and the action id." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1227 +#: ../../content/developer/reference/backend/views.rst:1235 msgid "In both cases, the adjustment parameters are provided as a ``grid_adjust`` context member, in the ``object`` case, the parameters are also provided as positional function parameters (next to an empty list of ids):" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1232 +#: ../../content/developer/reference/backend/views.rst:1240 msgid "``row_domain``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1233 +#: ../../content/developer/reference/backend/views.rst:1241 msgid "the domain matching the entire row of the adjusted cell" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1234 +#: ../../content/developer/reference/backend/views.rst:1242 msgid "``column_field``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1235 +#: ../../content/developer/reference/backend/views.rst:1243 msgid "the name of the column for the adjusted cell" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1236 +#: ../../content/developer/reference/backend/views.rst:1244 msgid "``column_value``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1237 +#: ../../content/developer/reference/backend/views.rst:1245 msgid "the value of the column for the adjusted cell" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1238 +#: ../../content/developer/reference/backend/views.rst:1246 msgid "``cell_field``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1239 +#: ../../content/developer/reference/backend/views.rst:1247 msgid "the measure field of the adjusted cell" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1242 +#: ../../content/developer/reference/backend/views.rst:1250 msgid "``change``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1241 +#: ../../content/developer/reference/backend/views.rst:1249 msgid "the difference between the old value of the cell and the adjusted one, may be positive or negative" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1244 +#: ../../content/developer/reference/backend/views.rst:1252 msgid "optional ``hide_line_total`` and ``hide_column_total`` attributes" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1246 +#: ../../content/developer/reference/backend/views.rst:1254 msgid "``hide_line_total``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1247 +#: ../../content/developer/reference/backend/views.rst:1255 msgid "set to true to hide total line (default false)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1249 +#: ../../content/developer/reference/backend/views.rst:1257 msgid "``hide_column_total``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1249 +#: ../../content/developer/reference/backend/views.rst:1257 msgid "set to true to hide total column (default false)" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1251 +#: ../../content/developer/reference/backend/views.rst:1259 msgid "optional ``barchart_total`` attribute" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1255 +#: ../../content/developer/reference/backend/views.rst:1263 msgid "``barchart_total``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1254 +#: ../../content/developer/reference/backend/views.rst:1262 msgid "set to ``true`` in order to display a bar chart at the bottom of the grid, based on the totals of the columns (default false)." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1257 +#: ../../content/developer/reference/backend/views.rst:1265 msgid "optional ``create_inline`` and ``display_empty`` attributes" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1263 +#: ../../content/developer/reference/backend/views.rst:1271 msgid "``create_inline``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1260 +#: ../../content/developer/reference/backend/views.rst:1268 msgid "set to ``true`` in order to display an additional row at bottom of the grid with an ``Add a line`` button (default false). When this option is set to ``true``, the ``Add a line`` button from the control panel is hidden. When no data is available and when ``display_empty`` is not set (so when the help content is displayed), the the ``Add a line`` button from the control panel is shown in order to let the user create a first record." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1269 +#: ../../content/developer/reference/backend/views.rst:1277 msgid "``display_empty``" msgstr "" -#: ../../content/developer/reference/backend/views.rst:1266 +#: ../../content/developer/reference/backend/views.rst:1274 msgid "set to ``true`` in order to keep displaying the grid when there is no data (default false). This can be useful when you want the user to be able to keep track of the current period (as dates are displayed in the columns headers). As a reminder, when no data are present and when this attribute is no set, the help content is displayed instead of the grid." msgstr "" -#: ../../content/developer/reference/backend/views.rst:1285 +#: ../../content/developer/reference/backend/views.rst:1293 msgid "``