Base
base · odoo/odoo
🛠 Migration considerations
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `UPDATE res_partner SET is_company = NULL, parent_id = NULL WHERE parent_id = id` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `UPDATE res_partner SET is_company = NULL WHERE parent_id IS NOT NULL AND is_company IS NOT NULL` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `UPDATE ir_cron SET failure_count = %s, first_failure_date = %s, active = %s WHERE id = %s` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `DELETE FROM ir_cron_trigger WHERE cron_id = %s AND call_at <= %s` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `UPDATE ir_cron SET nextcall = %s, lastcall = %s WHERE id = %s` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `INSERT INTO ir_cron_trigger(call_at, cron_id) VALUES (%s, %s)` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `UPDATE ir_cron_progress SET timed_out_counter = 0 WHERE id = %s` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `DELETE FROM res_users_log log1 WHERE EXISTS ( SELECT 1 FROM res_users_log log2 WHERE log1.create_uid = log2.create_uid AND log1.create_date < log2.create_date )` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `UPDATE res_users SET password=%s WHERE id=%s` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `UPDATE ir_module_module_dependency SET auto_install_required = (name = any(%s)) WHERE module_id = %s` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `SELECT FROM ir_cron FOR UPDATE` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `INSERT INTO ir_module_module_dependency (module_id, name) values (%s, %s)` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `DELETE FROM ir_module_module_dependency WHERE module_id = %s and name = %s` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `INSERT INTO module_country (module_id, country_id) values (%s, %s)` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `DELETE FROM module_country WHERE module_id = %s and country_id = %s` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `INSERT INTO ir_module_module_exclusion (module_id, name) VALUES (%s, %s)` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `DELETE FROM ir_module_module_exclusion WHERE module_id=%s AND name=%s` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `INSERT INTO ir_logging(create_date, create_uid, type, dbname, name, level, message, path, line, func) VALUES (NOW() at time zone 'UTC', %s, %s, %s, %s, %s, %s, %s, %s, %s)` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
Found by automated static analysis: patterns worth a look before/after upgrading this module to a newer Odoo version.
- Repository
- odoo/odoo · module folder
- Module version
- 1.3
- Category
- Hidden
- Folder size
- 106.37 MB
- License
- LGPL-3
- Application
- No
- Auto-installable
- Yes
- Website
- None
- Last tracking update
- 2026-08-21 16:14:26
- Authors
- Odoo S.A.
- Maintainers
- Odoo S.A.
- Committers
- Xavier Morel, Xavier ALT, Olivier Dony, Fabien Pinckaers, Raphael Collet, Christophe Simonis, Thibault Delavallée, odoo, Florent Xicluna, Josse Colpaert, Odoo Translation Bot, Denis Ledoux, Joren Van Onder, Nicolas Martinelli, Nicolas Lempereur, qdp-odoo, Aaron Bohy, Jeremy Kersten, Lucas Perais (lpe), Yannick Tivisse, qsm-odoo, Pierre Masereel, Laurent Smet, Adrien Dieudonne, Christophe Monniez, Jorge Pinna Puissant, Denis Vermylen, Lucas Perais, Toufik Ben Jaa, Julien Castiaux, Xavier-Do, Romeo Fragomeli, Victor Feyens, Andrea Grazioso (agr-odoo), Paul Morelle, Sébastien Theys, oco-odoo, Alvaro Fuentes, std-odoo, Achraf (abz), Prakash Prajapati, Rémy Voet (ryv), Tiffany Chang (tic), fja-odoo, Gorash, Mathieu Duckerts-Antoine, Pierre Paridans, Hoang Tran, abd-msyukyu-odoo, Arnaud Joset, William Braeckman, Romain Estievenart, Arnaud Baes, Miquel Raïch, Stanislas Sobieski, william-andre, Florian Damhaut, Florian Vranckx, Florian Charlier, John (jol), Ruben Gomes, Aurelien van Delft (avd), Mathieu Walravens, luvi, Hubert Van De Walle, Florian(flg), Valentin Chevalier, Renaud Thiry, Julien Banken, Vincent Larcin, Ipsita Borisagar, tsm-odoo, Laurent Desausoi, Louis Wicket (wil), Thomas Lefebvre (thle), alsh-odoo, Gaetan Vanden Bergh (gavb), Adrien Widart (awt), Maximilien (malb), Victor Piryns (pivi), Thomas Becquevort (thbe), Mahamadasif Ansari, amdi-odoo, Gauthier Wala (gawa), Ali Alfie (alal), Pieter Claeys (clpi), Yosua Nicolaus, Levi Siuzdak (sile), Dylan Kiss (dyki), Paolo Gatti, Antoine Boonen, Jinane Maksoud, Antoine Dupuis (andu), Bruno Boi, Antoine (ande), Mayurrajsinh Rathod, Chong Wang (cwg), Leloup Loïc (lole), Adrien Schoffeniels, bram1000, tong-odoo, Xavier Bol (xbo), Brieuc-brd, Nguyễn Đại Dương, Mahdi Cheikh Rouhou (macr), Arnaud Sibille, Moises Lopez - https://www.vauxoo.com/, omra-odoo, Andrzej(pian), sesn-odoo, Nicolas Viseur (vin), guva-odoo, Walid (wasa), Paul Stroobant, Hesham, Aurelien MARIE (auma), Ethan Vincent, Maryam Kia, jorv-odoo, Serge Bayet (seba), reka-odoo, Sven Fuehr, Seif (segn), jugj-odoo, vava-odoo, Bruno Boi (boi), Julien Carion (juca), odoostan, adsh-odoo, Tanguy Quéguineur, SaddemAmine, Martin Trigaux (mat), Louis Gobert, nihp-odoo, Shubham Thanki, Emilio Pascual, aath-odoo, Chrysanthe (chgo), sami odoo, Sanjay Sharma, dijo-odoo, hatr-odoo, aamo-odoo, Joseph (jcb), thle-odoo, Mathieu Coutant, Patricia Daloze (pda), Khumam Alzagim, Xavier Luyckx (xlu), yagp-odoo, Yousef Alnashef (alny), Abdelrahman Mahmoud (amah), Claire (clbr), Rocío Vega, Manushi Shah, Hammad Arif, Léo Gizard, Sébastien (blse), Hesham Saleh, Julien Schwanen, Victor Miguel Armenta Carrillo, dija-odoo, sben-odoo, Logan Staelens, Arthur Nanson, Ricardo Gomes Rodrigues, aizu-odoo, roto-odoo, David Van Droogenbroeck (DROD), elhayyany, Cuong, Nguyen Minh Tran Manh, Mohammad Abdulmoneim (abdu), khsr-odoo, Pierre Pulinckx, Anton Romanova (roan), Bastien PIERRE, masm-odoo, K Theja (kthe), Shrey Mehta, Renaud Thiry (reth), Thomas Josse (THJO), Krzysztof Magusiak (krma), nape-odoo, Omar (OSAH), Ajit Singh, Armin-FalDiS, KonstantinosPaschopoulos, Christophe Matthieu (chm), Akash Pandey, PaoloYam, dvsh-odoo, nees-odoo, krip-odoo, Basioni (basm), sagu-odoo, utma-odoo, ijja-odoo, mojem, bhna-odoo, defl, Dirk Douglas, Giorgio Tocco (gito), romc-odoo, kinhosz, Elijah Tay (elct), Lulu Grimalkin (lugr), Yash Pathak, Jugurtha, Dhwani Patel, hisi-odoo, Alice Gaudon, adip-odoo, Augustin (duau), Davide Bonetto, Quentin Colla (qucol), pssh-odoo, suju-odoo, kmdi-odoo, path-odoo, Waleed Elgamal, leclerc-leo, Ayush Modi, Bruno BOI, assh-odoo, Robert Smith (rosm), Beekoan, cro, Elliot ELCO, Nesma Harraz (neha), matd-odoo, Mohamed Barakat, saurabh, Yannis Burkhalter, bepro@odoo, rugot-odoo, Toma Tomov, Randall Castro - https://www.vauxoo.com, Traina Ludo, Romain (roto), Zachary (zavan), Vincent Van Rossem, Jason (jaca), Kadam Darji, Mauricio Rubio Haro, jowes-odoo, soza-odoo, ELCO, lase, Do Anh Duy, flotchet, Cyril Moreau, panj-odoo, shmn-odoo, Claire Nguyen (clan), 3amo-magdy, Mohamed Ayman, Divyesh Vyas (divy), kiga-odoo, Omar Khair, Yusuf Köksal, Abdelrahman Ibrahim, bamu, MED-B, tharcisse, Ewetoye Ibrahim, Sakesun, calkikhunt
- Odoo dependencies
- None
- Python dependencies
- None
- System dependencies
- None
- Required by
- account_credit_control, analytic, attachment_zipped_download, auditlog, auth_ldap, auth_oauth, base_address_extended, base_automation, base_cancel_confirm, base_comment_template, base_country_state_translatable, base_cron_exclusion, base_edi, base_external_dbsource, base_iso3166, base_optional_quick_create, base_partition, base_partner_company_group, base_partner_sequence, base_revision, base_search_fuzzy, base_setup, base_sparse_field, base_substate, base_technical_features, base_technical_user, base_territory, base_time_window, base_ubl, base_unece, base_user_role, base_view_inheritance_extension, base_write_diff, bus, calendar, commission_oca, component, contacts, contract, currency_rate_update, database_cleanup, document_knowledge, endpoint_route_handler, field_vector, fleet, fs_storage, html_builder, html_editor, l10n_br_base, l10n_cn, l10n_co_electronic_invoice, l10n_co_withholding_advance, l10n_ec, l10n_es_aeat_partner_check, l10n_es_partner_mercantil, l10n_fi_banks, l10n_fr, l10n_fr_cog, l10n_fr_state, l10n_gt, l10n_hn, l10n_ir_states, l10n_jp_partner_title_qweb, l10n_ma, l10n_mx_catalogs, l10n_mx_catalogs_comex, l10n_mx_cfdi_comex, l10n_mx_cfdi_waybill, l10n_mx_sat, l10n_mz, l10n_pt, l10n_th_amount_to_text, l10n_th_base_sequence, l10n_us, mail, mail_outbound_static, mgmtsystem, module_auto_update, module_change_auto_install, operating_unit, partner_affiliate, partner_company_default, partner_company_type, partner_contact_access_link, partner_contact_personal_information_page, partner_country_lang, partner_country_state_required, partner_email_duplicate_warn, partner_iterative_archive, partner_mobile, partner_phone_secondary, partner_ref_unique, partner_supplier_ref, partner_title, partner_tz, pdf_xml_attachment, phone_validation, product, report_csv, report_xlsx, res_company_active, res_company_search_view, resource, rpc, sales_team, sentry, sequence_python, sequence_reset_period, server_action_mass_edit, server_environment, sms, social_media, storage_backend, test_assetsbundle, test_converter, test_inherit, test_inherits, test_lint, test_orm, test_read_group, test_testing_utilities, test_translation_import, test_uninstall, tms, transifex, uom, upgrade_analysis, utm, web, web_notify
- Description
The kernel of Odoo, needed for all installation. ===================================================
Code Analysis ⓘ
Views touched (182)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
act_report_xml_search_view |
ir.actions.report.search | ir.actions.report | search | New |
act_report_xml_view |
ir.actions.report | ir.actions.report | form | New |
act_report_xml_view_tree |
ir.actions.report.list | ir.actions.report | list | New |
action_view |
ir.actions.actions | ir.actions.actions | form | New |
action_view_search |
ir.actions.actions.search | ir.actions.actions | search | New |
action_view_tree |
ir.actions.actions.list | ir.actions.actions | list | New |
asset_view_form |
ir.asset | form | New | |
asset_view_search |
ir.asset | search | New | |
asset_view_tree |
ir.asset | list | New | |
base.language_install_view_form_lang_switch |
Switch to language | base.language.install | form | New |
base_partner_merge_automatic_wizard_form |
base.partner.merge.automatic.wizard.form | base.partner.merge.automatic.wizard | form | New |
change_password_own_form |
Change Own Password | change.password.own | form | New |
change_password_wizard_user_tree_view |
Change Password Users | change.password.user | list | New |
change_password_wizard_view |
Change Password | change.password.wizard | form | New |
config_wizard_step_view_form |
Config Wizard Steps | ir.actions.todo | form | New |
config_wizard_step_view_search |
ir.actions.todo.select | ir.actions.todo | search | New |
contact |
contact | ir.ui.view | qweb | New |
contact_name |
contact_name | ir.ui.view | qweb | New |
demo_failures_dialog |
Demo Failure Dialog | ir.demo_failure.wizard | form | New |
demo_force_install_form |
ir.demo.form | ir.demo | form | New |
demo_wizard_form_view |
Demo Failure Form | ir.demo_failure | form | New |
edit_menu |
ir.ui.menu | list | New | |
edit_menu_access |
ir.ui.menu | form | New | |
edit_menu_access_search |
ir.ui.menu.search | ir.ui.menu | search | New |
embedded_action_form |
ir.embedded.actions.form | ir.embedded.actions | form | New |
embedded_action_tree |
Embedded Actions | ir.embedded.actions | list | New |
enable_profiling_wizard |
Enable profiling | base.enable.profiling.wizard | form | New |
form_res_users_key_description |
API Key: description input form | res.users.apikeys.description | form | New |
form_res_users_key_show |
API Key: show | res.users.apikeys.show | form | New |
ir_access_view_form |
ir.model.access | form | New | |
ir_access_view_search |
ir.model.access | search | New | |
ir_access_view_tree |
ir.model.access.view.list | ir.model.access | list | New |
ir_access_view_tree_edition |
ir.model.access.view.list.edition | ir.model.access | list | New |
ir_actions_todo_tree |
Config Wizard Steps | ir.actions.todo | list | New |
ir_cron_trigger_view_form |
ir.cron.trigger.view.form | ir.cron.trigger | form | New |
ir_cron_trigger_view_search |
ir.cron.trigger.view.search | ir.cron.trigger | search | New |
ir_cron_trigger_view_tree |
ir.cron.trigger.view.list | ir.cron.trigger | list | New |
ir_cron_view_calendar |
ir.cron | calendar | New | |
ir_cron_view_form |
ir.cron.view.form | ir.cron | form | Inherits base.view_server_action_form |
ir_cron_view_search |
ir.cron | search | New | |
ir_cron_view_tree |
ir.cron | list | New | |
ir_default_form_view |
ir.default form view | ir.default | form | New |
ir_default_search_view |
ir.default search view | ir.default | search | New |
ir_default_tree_view |
ir.default list view | ir.default | list | New |
ir_filters_view_edit_form |
ir.filters | form | Inherits base.ir_filters_view_form | |
ir_filters_view_form |
ir.filters | form | New | |
ir_filters_view_search |
ir.filters | search | New | |
ir_filters_view_tree |
ir.filters | list | New | |
ir_logging_form_view |
ir.logging | form | New | |
ir_logging_search_view |
ir.logging | search | New | |
ir_logging_tree_view |
ir.logging | list | New | |
ir_mail_server_form |
ir.mail_server | form | New | |
ir_mail_server_list |
ir.mail_server | list | New | |
ir_profile_view_form |
IR Profile Form | ir.profile | form | New |
ir_profile_view_list |
IR Profile List | ir.profile | list | New |
ir_profile_view_search |
IR Profile Search | ir.profile | search | New |
module_form |
ir.module.module.form | ir.module.module | form | New |
module_tree |
ir.module.module.list | ir.module.module | list | New |
module_view_kanban |
Apps Kanban | ir.module.module | kanban | New |
no_contact |
no_contact | ir.ui.view | qweb | New |
paperformat_view_form |
paper_format_view_form | report.paperformat | form | New |
paperformat_view_tree |
paper_format_view_tree | report.paperformat | list | New |
report_irmodeloverview |
report_irmodeloverview | ir.ui.view | qweb | New |
report_irmodulereference |
report_irmodulereference | ir.ui.view | qweb | New |
res_bank_view_search |
res.bank.view.search | res.bank | search | New |
res_config_settings_view_form |
res.config.settings.view.form | res.config.settings | form | New |
res_config_view_base |
res.config.view.base | res.config | form | New |
res_device_view_form |
res.device.form | res.device | form | New |
res_device_view_kanban |
res.device.kanban | res.device | kanban | New |
res_device_view_tree |
res.device.list | res.device | list | New |
res_lang_form |
res.lang.form | res.lang | form | New |
res_lang_search |
res.lang.search | res.lang | search | New |
res_lang_tree |
res.lang.list | res.lang | list | New |
res_partner_category_view_search |
res.partner.category.view.search | res.partner.category | search | New |
res_partner_industry_view_form |
Industry | res.partner.industry | form | New |
res_partner_industry_view_search |
res.partner.industry.view.search | res.partner.industry | search | New |
res_partner_industry_view_tree |
Industry | res.partner.industry | list | New |
res_partner_kanban_view |
res.partner.kanban | res.partner | kanban | New |
res_users_apikeys_view_kanban |
res.users.apikeys.kanban | res.users.apikeys | kanban | New |
res_users_identitycheck_view_form |
res.users.identitycheck | form | New | |
reset_view_arch_wizard_view |
Reset View Architecture | reset.view.arch.wizard | form | New |
sequence_view |
ir.sequence | form | New | |
sequence_view_tree |
ir.sequence | list | New | |
server_action_history_wizard_view |
Server Action History Wizard | server.action.history.wizard | form | New |
view_apikeys |
API Keys Listing | res.users.apikeys | list | New |
view_attachment_form |
ir.attachment | form | New | |
view_attachment_search |
ir.attachment | search | New | |
view_attachment_tree |
ir.attachment | list | New | |
view_base_import_language |
Import Translation | base.language.import | form | New |
view_base_language_install |
Load a Translation | base.language.install | form | New |
view_base_module_uninstall |
Uninstall module | base.module.uninstall | form | New |
view_base_module_update |
Module Update | base.module.update | form | New |
view_base_module_upgrade |
Module Upgrade | base.module.upgrade | form | New |
view_base_module_upgrade_install |
Module Upgrade Install | base.module.upgrade | form | New |
view_client_action_form |
ir.actions.client.form | ir.actions.client | form | New |
view_client_action_tree |
Client Actions | ir.actions.client | list | New |
view_company_form |
res.company.form | res.company | form | New |
view_company_tree |
res.company.list | res.company | list | New |
view_country_form |
res.country.form | res.country | form | New |
view_country_group_form |
res.country.group.form | res.country.group | form | New |
view_country_group_tree |
res.country.group.list | res.country.group | list | New |
view_country_search |
res.country.search | res.country | search | New |
view_country_state_form |
res.country.state.form | res.country.state | form | New |
view_country_state_search |
res.country.state.search | res.country.state | search | New |
view_country_state_tree |
res.country.state.list | res.country.state | list | New |
view_country_tree |
res.country.list | res.country | list | New |
view_currency_form |
res.currency.form | res.currency | form | New |
view_currency_kanban |
res.currency.kanban | res.currency | kanban | New |
view_currency_rate_form |
res.currency.rate.form | res.currency.rate | form | New |
view_currency_rate_search |
res.currency.rate.search | res.currency.rate | search | New |
view_currency_rate_tree |
res.currency.rate.list | res.currency.rate | list | New |
view_currency_search |
res.currency.search | res.currency | search | New |
view_currency_tree |
res.currency.list | res.currency | list | New |
view_decimal_precision_form |
Decimal Precision | decimal.precision | form | New |
view_decimal_precision_tree |
Decimal Precision List | decimal.precision | list | New |
view_default_groups_form |
res.groups default groups form | res.groups | form | New |
view_groups_form |
res.groups.form | res.groups | form | New |
view_groups_list |
res.groups.list | res.groups | list | New |
view_groups_search |
res.groups.search | res.groups | search | New |
view_ir_config_form |
ir.config_parameter | form | New | |
view_ir_config_list |
ir.config_parameter | list | New | |
view_ir_config_search |
ir.config_parameter | search | New | |
view_ir_mail_server_search |
ir.mail_server | search | New | |
view_model_constraint_form |
ir.model.constraint | form | New | |
view_model_constraint_list |
ir.model.constraint | list | New | |
view_model_constraint_search |
ir.model.constraint | search | New | |
view_model_data_form |
ir.model.data | form | New | |
view_model_data_list |
ir.model.data | list | New | |
view_model_data_search |
ir.model.data | search | New | |
view_model_fields_form |
ir.model.fields | form | New | |
view_model_fields_search |
ir.model.fields | search | New | |
view_model_fields_selection_form |
ir.model.fields.selection | form | New | |
view_model_fields_selection_search |
ir.model.fields.selection | search | New | |
view_model_fields_selection_tree |
ir.model.fields.selection | list | New | |
view_model_fields_tree |
ir.model.fields | list | New | |
view_model_form |
ir.model | form | New | |
view_model_menu_create |
Create Menu | wizard.ir.model.menu.create | form | New |
view_model_relation_form |
ir.model.relation | form | New | |
view_model_relation_list |
ir.model.relation | list | New | |
view_model_search |
ir.model | search | New | |
view_model_tree |
ir.model | list | New | |
view_module_category_form |
ir.module.category.form | ir.module.category | form | New |
view_module_filter |
ir.module.module.list.select | ir.module.module | search | New |
view_partner_address_form |
res.partner.form.address | res.partner | form | New |
view_partner_bank_form |
res.partner.bank.form | res.partner.bank | form | New |
view_partner_bank_search |
res.partner.bank.search | res.partner.bank | search | New |
view_partner_bank_tree |
res.partner.bank.list | res.partner.bank | list | New |
view_partner_category_form |
Contact Tags | res.partner.category | form | New |
view_partner_category_list |
Contact Tags | res.partner.category | list | New |
view_partner_form |
res.partner.form | res.partner | form | New |
view_partner_simple_form |
res.partner.simplified.form | res.partner | form | New |
view_partner_tree |
res.partner.list | res.partner | list | New |
view_res_bank_form |
res.bank.form | res.bank | form | New |
view_res_bank_tree |
res.bank.list | res.bank | list | New |
view_res_company_kanban |
res.company.kanban | res.company | kanban | New |
view_res_groups_privilege_form |
res.groups.privilege.form | res.groups.privilege | form | New |
view_res_groups_privilege_list |
res.groups.privilege.list | res.groups.privilege | list | New |
view_res_partner_filter |
res.partner.select | res.partner | search | New |
view_res_users_kanban |
res.users.kanban | res.users | kanban | New |
view_rule_form |
ir.rule | form | New | |
view_rule_search |
ir.rule | search | New | |
view_rule_tree |
ir.rule | list | New | |
view_sequence_search |
ir.sequence | search | New | |
view_server_action_form |
Server Action | ir.actions.server | form | New |
view_server_action_kanban |
Server Actions | ir.actions.server | kanban | New |
view_server_action_search |
ir.actions.server.search | ir.actions.server | search | New |
view_server_action_tree |
Server Actions | ir.actions.server | list | New |
view_users_form |
res.users.form | res.users | form | New |
view_users_form_simple_modif |
res.users.preferences.form | res.users | form | New |
view_users_search |
res.users.search | res.users | search | New |
view_users_simple_form |
res.users.simplified.form | res.users | form | New |
view_users_tree |
res.users.list | res.users | list | New |
view_view_custom_form |
ir.ui.view.custom | form | New | |
view_view_custom_search |
ir.ui.view.custom | search | New | |
view_view_custom_tree |
ir.ui.view.custom | list | New | |
view_view_form |
ir.ui.view | form | New | |
view_view_search |
ir.ui.view | search | New | |
view_view_tree |
ir.ui.view | list | New | |
view_window_action_form |
ir.actions.windows.form | ir.actions.act_window | form | New |
view_window_action_search |
ir.actions.windows.search | ir.actions.act_window | search | New |
view_window_action_tree |
ir.actions.windows.list | ir.actions.act_window | list | New |
wizard_lang_export |
Export Translations | base.language.export | form | New |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (126)
No new fields.
Public methods (0)No public methods.
-
avatar_1024Imagecompute='_compute_avatar_1024' args: 'Avatar 1024' -
avatar_128Imagecompute='_compute_avatar_128' args: 'Avatar 128' -
avatar_1920Imagecompute='_compute_avatar_1920' args: 'Avatar' -
avatar_256Imagecompute='_compute_avatar_256' args: 'Avatar 256' -
avatar_512Imagecompute='_compute_avatar_512' args: 'Avatar 512'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (6)-
get_empty_list_help(self, help_message: str) -> str@api.modelHook method to customize the help message in empty list/kanban views. By default, it returns the help received as parameter. :param help_message: ir.actions.act_window help content :return: help message displayed when there is no result to display in a list/kanban view (by default, it returns the action help) -
get_formview_action(self, access_uid=None)@api.readonlyReturn an action to open the document ``self``. This method is meant to be overridden in addons that want to give specific view ids for example. An optional access_uid holds the user that will access the document that could be different from the current user. -
get_formview_id(self, access_uid=None)@api.readonlyReturn a view id to open the document ``self`` with. This method is meant to be overridden in addons that want to give specific view ids for example. Optional access_uid holds the user that would access the form view id different from the current environment user. -
get_view(self, view_id=None, view_type='form', **options)@api.modelget_view([view_id | view_type='form']) Get the detailed composition of the requested view like model, view architecture. The return of the method can only depend on the requested view types, access rights (views or other records), view access rules, options, context lang and TYPE_view_ref (other context values cannot be used). :param view_id: id of the view or None :type view_id: int or None :param str view_type: type of the view to return if view_id is None, one of ``'form'``, ``'list'``, ... :param options: options to return additional features :param bool mobile: true if the web client is currently using the responsive mobile view (to use kanban views instead of list views for x2many fields) :return: composition of the requested view (including inherited views and extensions) :rtype: dict :raise AttributeError: * if the inherited view has unknown position to work with other than 'before', 'after', 'inside', 'replace' * if some tag other than 'position' is found in parent view -
get_views(self, views, options=None)@api.model@api.readonlyReturns the fields_views of given views, along with the fields of the current model, and optionally its filters for the given action. The return of the method can only depend on the requested view types, access rights (views or other records), view access rules, options, context lang and TYPE_view_ref (other context values cannot be used). Python expressions contained in views or representing domains (on python fields) will be evaluated by the client with all the context values as well as the record values it has. :param views: list of [view_id, view_type] :param dict options: a dict optional boolean flags, set to enable: ``toolbar`` includes contextual actions when loading fields_views ``load_filters`` returns the model's filters ``action_id`` id of the action to get the filters, otherwise loads the global filters or the model :return: dictionary with fields_views, fields and optionally filters -
view_header_get(self, view_id, view_type)@api.model
-
durationSelectionstring='Enable profiling for' args: [('minutes_5', '5 Minutes'), ('hours_1', '1 Hour'), ('days_1', '1 Day'), ('months_1', '1 Month')] -
expirationDatetimecompute='_compute_expiration'readonly=Falsestore=True args: 'Enable profiling until'
-
submit(self)
-
dataBinaryattachment=Falsereadonly=True args: 'File' -
domainChardefault='[]'string='Model Domain' -
export_typeSelectiondefault='module'required=Truestring='Export Type' args: [('module', 'Module'), ('model', 'Model')] -
formatSelectiondefault='po'required=Truestring='File Format' args: [('csv', 'CSV File'), ('po', 'PO File'), ('tgz', 'TGZ Archive')] -
langSelectiondefault=NEW_LANG_KEYrequired=Truestring='Language' args: _get_languages -
model_idMany2one → ir.modeldomain=[('transient', '=', False)]string='Model to Export' args: 'ir.model' -
model_nameCharrelated='model_id.model'string='Model Name' -
modulesMany2many → ir.module.moduledomain=[('state', '=', 'installed')]string='Apps To Export' args: 'ir.module.module', 'rel_modules_langexport', 'wiz_id', 'module_id' -
nameCharreadonly=True args: 'File Name' -
stateSelectiondefault='choose' args: [('choose', 'choose'), ('get', 'get')]
-
act_getfile(self)
-
codeCharhelp='ISO Language and Country code, e.g. en_US'required=True args: 'ISO Code' -
dataBinaryattachment=Falserequired=True args: 'File' -
filenameCharrequired=True args: 'File Name' -
nameCharrequired=True args: 'Language Name' -
overwriteBooleandefault=Truehelp='If you enable this option, existing translations (including custom ones) will be overwritten and replaced by those in this file' args: 'Overwrite Existing Terms'
-
import_lang(self)
-
first_lang_idMany2one → res.langcompute='_compute_first_lang_id'help='Used when the user only selects one language and is given the option to switch to it' args: 'res.lang' -
lang_idsMany2many → res.langcontext={'active_test': False}default=_default_lang_idsrequired=True args: 'res.lang', 'res_lang_install_rel', 'language_wizard_id', 'lang_id', 'Languages' -
overwriteBooleandefault=Truehelp='If you check this box, your customized translations will be overwritten and replaced by the official ones.' args: 'Overwrite Existing Terms'
-
lang_install(self) -
reload(self) -
switch_lang(self)
-
impacted_module_idsMany2many → ir.module.modulecompute='_compute_impacted_module_ids'string='Impacted modules' args: 'ir.module.module' -
model_idsMany2many → ir.modelcompute='_compute_model_ids'string='Impacted data models' args: 'ir.model' -
module_idsMany2many → ir.module.moduledomain=[('state', 'in', ['installed', 'to upgrade', 'to install'])]ondelete='cascade'readonly=Truerequired=Truestring='Module(s)' args: 'ir.module.module' -
show_allBoolean
-
action_uninstall(self)
-
addedIntegerreadonly=True args: 'Number of modules added' -
stateSelectiondefault='init'readonly=True args: [('init', 'init'), ('done', 'done')], 'Status' -
updatedIntegerreadonly=True args: 'Number of modules updated'
-
action_module_open(self) -
update_module(self)
-
module_infoTextdefault=_default_module_inforeadonly=True args: 'Apps to Update'
-
config(self) -
get_module_list(self)@api.model -
get_view(self, view_id=None, view_type='form', **options)@api.model -
upgrade_module(self) -
upgrade_module_cancel(self)
-
current_line_idMany2one → base.partner.merge.linestring='Current Line' args: 'base.partner.merge.line' -
dst_partner_idMany2one → res.partnerstring='Destination Contact' args: 'res.partner' -
exclude_contactBooleanargs: 'A user associated to the contact' -
exclude_journal_itemBooleanargs: 'Journal Items associated to the contact' -
group_by_emailBooleanargs: 'Email' -
group_by_is_companyBooleanargs: 'Is Company' -
group_by_nameBooleanargs: 'Name' -
group_by_parent_idBooleanargs: 'Parent Company' -
group_by_vatBooleanargs: 'VAT' -
line_idsOne2many → base.partner.merge.linestring='Lines' args: 'base.partner.merge.line', 'wizard_id' -
maximum_groupIntegerargs: 'Maximum of Group of Contacts' -
number_groupIntegerreadonly=True args: 'Group of Contacts' -
partner_idsMany2many → res.partnercontext={'active_test': False}string='Contacts' args: 'res.partner' -
stateSelectiondefault='option'readonly=Truerequired=Truestring='State' args: [('option', 'Option'), ('selection', 'Selection'), ('finished', 'Finished')]
-
action_merge(self)Merge Contact button. Merge the selected partners, and redirect to the end screen (since there is no other wizard line to process. -
action_skip(self)Skip this wizard line. Don't compute any thing, and simply redirect to the new step. -
action_start_automatic_process(self)Start the process 'Merge Automatically'. This will fill the wizard with the same mechanism as 'Merge with Manual Check', but instead of refreshing wizard with the current line, it will automatically process all lines by merging partner grouped according to the checked options. -
action_start_manual_process(self)Start the process 'Merge with Manual Check'. Fill the wizard according to the group_by and exclude options, and redirect to the first step (treatment of first wizard line). After, for each subset of partner to merge, the wizard will be actualized. - Compute the selected groups (with duplication) - If the user has selected the ``exclude_xxx`` fields, avoid the partners -
action_update_all_process(self) -
default_get(self, fields)@api.model -
parent_migration_process_cb(self)
-
aggr_idsCharrequired=True args: 'Ids' -
min_idIntegerargs: 'MinID' -
wizard_idMany2one → base.partner.merge.automatic.wizardargs: 'base.partner.merge.automatic.wizard', 'Wizard'
No public methods.
-
confirm_passwordCharstring='New Password (Confirmation)' -
new_passwordCharstring='New Password'
-
change_password(self)@check_identity
-
new_passwdChardefault=''string='New Password' -
user_idMany2one → res.usersondelete='cascade'required=Truestring='User' args: 'res.users' -
user_loginCharreadonly=Truestring='User Login' -
wizard_idMany2one → change.password.wizardondelete='cascade'required=Truestring='Wizard' args: 'change.password.wizard'
-
change_password_button(self)
-
user_idsOne2many → change.password.userdefault=_default_user_idsstring='Users' args: 'change.password.user', 'wizard_id'
-
change_password_button(self)
-
digitsIntegerdefault=2required=True args: 'Digits' -
nameCharrequired=True args: 'Usage'
-
create(self, vals_list)@api.model_create_multi -
precision_get(self, application)@api.model@tools.ormcache('application', cache='stable') -
unlink(self) -
write(self, vals)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
-
image_1024Imagemax_height=1024max_width=1024related='image_1920'store=True args: 'Image 1024' -
image_128Imagemax_height=128max_width=128related='image_1920'store=True args: 'Image 128' -
image_1920Imagemax_height=1920max_width=1920 args: 'Image' -
image_256Imagemax_height=256max_width=256related='image_1920'store=True args: 'Image 256' -
image_512Imagemax_height=512max_width=512related='image_1920'store=True args: 'Image 512'
No public methods.
-
targetSelectiondefault='new'required=Truestring='Action Target' args: [('new', 'New Window'), ('self', 'This Window'), ('download', 'Download')] -
typeChardefault='ir.actions.act_url' -
urlTextrequired=Truestring='Action URL'
No public methods.
-
cacheBooleandefault=Truehelp='If enabled, this action will cache the related data used in list, Kanban and form views with the aim to increase the loading speed'string='Data Caching' -
contextChardefault={}help='Context dictionary as Python expression, empty by default (Default: {})'required=Truestring='Context Value' -
domainCharhelp='Optional domain filtering of the destination data, as a Python expression'string='Domain Value' -
embedded_action_idsOne2many → ir.embedded.actionscompute='_compute_embedded_actions' args: 'ir.embedded.actions' -
filterBoolean -
group_idsMany2many → res.groupsstring='Groups' args: 'res.groups', 'ir_act_window_group_rel', 'act_id', 'gid' -
limitIntegerdefault=80help='Default limit for the list view' -
mobile_view_modeChardefault='kanban'help="First view mode in mobile and small screen environments (default='kanban'). If it can't be found among available view modes, the same mode as for wider screens is used)" -
res_idIntegerhelp="Database ID of record to open in form view, when ``view_mode`` is set to 'form' only"string='Record ID' -
res_modelCharhelp='Model name of the object to open in the view window'required=Truestring='Destination Model' -
search_view_idMany2one → ir.ui.viewstring='Search View Ref.' args: 'ir.ui.view' -
targetSelectiondefault='current'string='Target Window' args: [('current', 'Current Window'), ('new', 'New Window'), ('fullscreen', 'Full Screen'), ('main', 'Main action of Current Window')] -
typeChardefault='ir.actions.act_window' -
usageCharhelp='Used to filter menu and home actions from the user form.'string='Action Usage' -
view_idMany2one → ir.ui.viewondelete='set null'string='View Ref.' args: 'ir.ui.view' -
view_idsOne2many → ir.actions.act_window.viewstring='No of Views' args: 'ir.actions.act_window.view', 'act_window_id' -
view_modeChardefault='list,form'help="Comma-separated list of allowed view modes, such as 'form', 'list', 'calendar', etc. (Default: list,form)"required=True -
viewsBinarycompute='_compute_views'help='This function field computes the ordered list of views that should be enabled when displaying the result of an action, federating view mode, views and reference view. The result is returned as an ordered list of pairs (view_id,view_mode).'
-
create(self, vals_list)@api.model_create_multi -
exists(self) -
read(self, fields=None, load='_classic_read')call the method get_empty_list_help of the model and set the window action help message -
unlink(self)
-
act_window_idMany2one → ir.actions.act_windowindex='btree_not_null'ondelete='cascade'string='Action' args: 'ir.actions.act_window' -
multiBooleanhelp='If set to true, the action will not be displayed on the right toolbar of a form view.'string='On Multiple Doc.' -
sequenceInteger -
view_idMany2one → ir.ui.viewstring='View' args: 'ir.ui.view' -
view_modeSelectionrequired=Truestring='View Type' args: VIEW_TYPES
No public methods.
-
typeChardefault='ir.actions.act_window_close'
No public methods.
-
binding_model_idMany2one → ir.modelhelp='Setting a value makes this action available in the sidebar for the given model.'ondelete='cascade' args: 'ir.model' -
binding_typeSelectiondefault='action'required=True args: [('action', 'Action'), ('report', 'Report')] -
binding_view_typesChardefault='list,form' -
helpHtmlhelp='Optional help text for the users with a description of the target view, such as its usage and purpose.'string='Action Description'translate=True -
nameCharrequired=Truestring='Action Name'translate=True -
pathCharstring='Path to show in the URL' -
typeCharrequired=Truestring='Action Type' -
xml_idCharcompute='_compute_xml_id'string='External ID'
-
create(self, vals_list)@api.model_create_multi -
get_bindings(self, model_name)@api.modelRetrieve the list of actions bound to the given model. :return: a dict mapping binding types to a list of dict describing actions, where the latter is given by calling the method ``read`` on the action record. -
unlink(self)unlink ir.action.todo/ir.filters which are related to actions which will be deleted. NOTE: ondelete cascade will not work on ir.actions.actions so we will need to do it manually. -
write(self, vals)
-
contextChardefault='{}'help='Context dictionary as Python expression, empty by default (Default: {})'required=Truestring='Context Value' -
paramsBinarycompute='_compute_params'help='Arguments sent to the client along with the view tag'inverse='_inverse_params'string='Supplementary arguments' -
params_storeBinaryattachment=Falsereadonly=Truestring='Params storage' -
res_modelCharhelp='Optional model, mostly used for needactions.'string='Destination Model' -
tagCharhelp='An arbitrary string, interpreted by the client according to its own needs and wishes. There is no central tag repository across clients.'required=Truestring='Client action tag' -
targetSelectiondefault='current'string='Target Window' args: [('current', 'Current Window'), ('new', 'New Window'), ('fullscreen', 'Full Screen'), ('main', 'Main action of Current Window')] -
typeChardefault='ir.actions.client'
No public methods.
-
attachmentCharhelp='This is the filename of the attachment used to store the printing result. Keep empty to not save the printed reports. You can use a python expression with the object and time variables.'string='Save as Attachment Prefix' -
attachment_useBooleanhelp='If enabled, then the second time the user prints with same attachment name, it returns the previous report.'string='Reload from Attachment' -
binding_typeSelectiondefault='report' -
domainCharhelp='If set, the action will only appear on records that matches the domain.'string='Filter domain' -
group_idsMany2many → res.groupsstring='Groups' args: 'res.groups', 'res_groups_report_rel', 'uid', 'gid' -
modelCharrequired=Truestring='Model Name' -
model_idMany2one → ir.modelcompute='_compute_model_id'search='_search_model_id'string='Model' args: 'ir.model' -
multiBooleanhelp='If set to true, the action will not be displayed on the right toolbar of a form view.'string='On Multiple Doc.' -
paperformat_idMany2one → report.paperformatindex='btree_not_null' args: 'report.paperformat', 'Paper Format' -
print_report_nameCharhelp="This is the filename of the report going to download. Keep empty to not change the report filename. You can use a python expression with the 'object' and 'time' variables."translate=True args: 'Printed Report Name' -
report_fileCharhelp='The path to the main report file (depending on Report Type) or empty if the content is in another field'readonly=Falserequired=Falsestore=Truestring='Report File' -
report_nameCharrequired=Truestring='Template Name' -
report_typeSelectiondefault='qweb-pdf'help='The type of the report that will be rendered, each one having its own rendering method. HTML means the report will be opened directly in your browser PDF means the report will be rendered using Wkhtmltopdf and downloaded by the user.'required=True args: [('qweb-html', 'HTML'), ('qweb-pdf', 'PDF'), ('qweb-text', 'Text')] -
typeChardefault='ir.actions.report'
-
associated_view(self)Used in the ir.actions.report form view in order to search naively after the view(s) used in the rendering. -
barcode(self, barcode_type, value, **kwargs)@api.model -
create_action(self)Create a contextual action for each report. -
get_available_barcode_masks(self)@api.modelHook for extension. This function returns the available QR-code masks, in the form of a list of (code, mask_function) elements, where code is a string identifying the mask uniquely, and mask_function is a function returning a reportlab Drawing object with the result of the mask, and taking as parameters: - width of the QR-code, in pixels - height of the QR-code, in pixels - reportlab Drawing object containing the barcode to apply the mask on -
get_paperformat(self) -
get_paperformat_by_xmlid(self, xml_id) -
get_valid_action_reports(self, model, record_ids)Return the list of ids of actions for which the domain is satisfied by at least one record in record_ids. :param model: the model of the records to validate :param record_ids: list of ids of records to validate -
get_wkhtmltopdf_state(self)@api.modelGet the current state of wkhtmltopdf: install, ok, upgrade, workers or broken. * install: Starting state. * upgrade: The binary is an older version (< 0.12.0). * ok: A binary was found with a recent version (>= 0.12.0). * workers: Not enough workers found to perform the pdf rendering process (< 2 workers). * broken: A binary was found but not responding. :return: wkhtmltopdf_state -
report_action(self, docids, data=None, config=True)Return an action of type ir.actions.report. :param docids: id/ids/browse record of the records to print (if not used, pass an empty list) :param data: :param bool config: :rtype: bytes -
retrieve_attachment(self, record)Retrieve an attachment for a specific record. :param record: The record owning of the attachment. :return: A recordset of length <=1 or None -
unlink_action(self)Remove the contextual actions created for the reports.
-
allowed_statesJsoncompute='_compute_allowed_states'string='Allowed states' -
automated_nameCharcompute='_compute_name'store=True -
available_model_idsMany2many → ir.modelcompute='_compute_available_model_ids'store=Falsestring='Available Models' args: 'ir.model' -
child_idsOne2many → ir.actions.servercopy=Truedomain=<expr>help='Child server actions that will be executed. Note that the last return returned action value will be used as global return value.'string='Child Actions' args: 'ir.actions.server', 'parent_id' -
codeTextgroups='base.group_system'help='Write Python code that the action will execute. Some variables are available for use; help about python expression is given in the help tab.'string='Python Code' -
crud_model_idMany2one → ir.modelcompute='_compute_crud_relations'help='Specify which kind of record should be created. Set this field only to specify a different model than the base model.'inverse='_set_crud_model_id'readonly=Falsestore=Truestring='Record to Create' args: 'ir.model' -
crud_model_nameCharreadonly=Truerelated='crud_model_id.model'string='Target Model Name' -
evaluation_typeSelectionchange_default=Truedefault='value' args: [('value', 'Update'), ('sequence', 'Sequence'), ('equation', 'Compute')], 'Value Type' -
group_idsMany2many → res.groupshelp='Groups that can execute the server action. Leave empty to allow everybody.'string='Allowed Groups' args: 'res.groups', 'ir_act_server_group_rel', 'act_id', 'gid' -
html_valueHtml -
ir_cron_idsOne2many → ir.croncontext={'active_test': False} args: 'ir.cron', 'ir_actions_server_id', 'Scheduled Action' -
link_field_idMany2one → ir.model.fieldshelp='Specify a field used to link the newly created record on the record used by the server action.'string='Link Field' args: 'ir.model.fields' -
model_idMany2one → ir.modelhelp='Model on which the server action runs.'index=Trueondelete='cascade'required=Truestring='Model' args: 'ir.model' -
model_nameCharrelated='model_id.model'string='Model Name' -
nameCharcompute='_compute_name'readonly=Falsestore=True -
parent_idMany2one → ir.actions.serverindex=Trueondelete='cascade'string='Parent Action' args: 'ir.actions.server' -
resource_refReferenceinverse='_set_resource_ref'selection='_selection_target_model'string='Record' -
selection_valueMany2one → ir.model.fields.selectiondomain='[("field_id", "=", update_field_id)]'inverse='_set_selection_value'ondelete='cascade'string='Custom Value' args: 'ir.model.fields.selection' -
sequenceIntegerdefault=5help='When dealing with multiple actions, the execution order is based on the sequence. Low number means high priority.' -
sequence_idMany2one → ir.sequencestring='Sequence to use' args: 'ir.sequence' -
show_code_historyBooleancompute='_compute_show_code_history' -
stateSelectioncopy=Truehelp="Type of server action. The following values are available:\n- 'Update a Record': update the values of a record\n- 'Create Activity': create an activity (Discuss)\n- 'Send Email': post a message, a note or send an email (Discuss)\n- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': add or remove followers to a record (Discuss)\n- 'Create Record': create a new record with new values\n- 'Execute Code': a block of Python code that will be executed\n- 'Send Webhook Notification': send a POST request to an external system, also known as a Webhook\n- 'Multi Actions': define an action that triggers several other server actions\n"required=Truestring='Type' args: [('object_write', 'Update Record'), ('object_create', 'Create Record'), ('object_copy', 'Duplicate Record'), ('code', 'Execute Code'), ('webhook', 'Send Webhook Notification'), ('multi', 'Multi Actions')] -
typeChardefault='ir.actions.server' -
update_boolean_valueSelectiondefault='true'string='Boolean Value' args: [('true', 'Yes (True)'), ('false', 'No (False)')] -
update_field_idMany2one → ir.model.fieldscompute='_compute_crud_relations'ondelete='cascade'readonly=Falsestore=Truestring='Field to Update' args: 'ir.model.fields' -
update_field_typeSelectionreadonly=Truerelated='update_field_id.ttype' -
update_m2m_operationSelectiondefault='add'string='Many2many Operations' args: [('add', 'Adding'), ('remove', 'Removing'), ('set', 'Setting it to'), ('clear', 'Clearing it')] -
update_pathChardefault=_default_update_pathhelp="Path to the field to update, e.g. 'partner_id.name'"string='Field to Update Path' -
update_related_model_idMany2one → ir.modelcompute='_compute_crud_relations'readonly=Falsestore=True args: 'ir.model' -
usageSelectiondefault='ir_actions_server'required=Truestring='Usage' args: [('ir_actions_server', 'Server Action'), ('ir_cron', 'Scheduled Action')] -
valueTexthelp="For Python expressions, this field may hold a Python expression that can use the same values as for the code field on the server action,e.g. `env.user.name` to set the current user's name as the value or `record.id` to set the ID of the record on which the action is run.\n\nFor Static values, the value will be used directly without evaluation, e.g.`42` or `My custom name` or the selected record." -
value_field_to_showSelectioncompute='_compute_value_field_to_show' args: [('value', 'value'), ('html_value', 'html_value'), ('sequence_id', 'sequence_id'), ('resource_ref', 'reference'), ('update_boolean_value', 'update_boolean_value'), ('selection_value', 'selection_value')] -
warningTextcompute='_compute_warning'recursive=Truestring='Warning' -
webhook_field_idsMany2many → ir.model.fieldshelp="Fields to send in the POST request. The id and model of the record are always sent as '_id' and '_model'. The name of the action that triggered the webhook is always sent as '_name'."string='Webhook Fields' args: 'ir.model.fields', 'ir_act_server_webhook_field_rel', 'server_id', 'field_id' -
webhook_sample_payloadTextcompute='_compute_webhook_sample_payload'string='Sample Payload' -
webhook_urlCharhelp='URL to send the POST request to.'string='Webhook URL'
-
action_open_parent_action(self) -
action_open_scheduled_action(self) -
copy_data(self, default=None) -
create(self, vals_list)@api.model_create_multi -
create_action(self)Create a contextual action for each server action. -
history_wizard_action(self) -
run(self)Runs the server action. For each server action, the :samp:`_run_action_{TYPE}[_multi]` method is called. This allows easy overriding of the server actions. The ``_multi`` suffix means the runner can operate on multiple records, otherwise if there are multiple records the runner will be called once for each. The call context should contain the following keys: active_id id of the current object (single mode) active_model current model that should equal the action's model active_ids (optional) ids of the current records (mass mode). If ``active_ids`` and ``active_id`` are present, ``active_ids`` is given precedence. :return: an ``action_id`` to be executed, or ``False`` is finished correctly without return action -
unlink_action(self)Remove the contextual actions created for the server actions. -
write(self, vals)
-
action_idMany2one → ir.actions.serverondelete='cascade'required=True args: 'ir.actions.server' -
codeText
No public methods.
-
action_idMany2one → ir.actions.actionsindex=Truerequired=Truestring='Action' args: 'ir.actions.actions' -
nameChar -
sequenceIntegerdefault=10 -
stateSelectiondefault='open'required=Truestring='Status' args: [('open', 'To Do'), ('done', 'Done')]
-
action_launch(self)Launch Action of Wizard -
action_open(self)Sets configuration wizard in TODO state -
create(self, vals_list)@api.model_create_multi -
ensure_one_open_todo(self)@api.model -
unlink(self) -
write(self, vals)
-
activeBooleandefault=Truestring='active' -
bundleCharrequired=Truestring='Bundle name' -
directiveSelectiondefault=APPEND_DIRECTIVEselection=[(APPEND_DIRECTIVE, 'Append'), (PREPEND_DIRECTIVE, 'Prepend'), (AFTER_DIRECTIVE, 'After'), (BEFORE_DIRECTIVE, 'Before'), (REMOVE_DIRECTIVE, 'Remove'), (REPLACE_DIRECTIVE, 'Replace'), (INCLUDE_DIRECTIVE, 'Include')]string='Directive' -
nameCharrequired=Truestring='Name' -
pathCharrequired=Truestring='Path (or glob pattern)' -
sequenceIntegerdefault=DEFAULT_SEQUENCErequired=Truestring='Sequence' -
targetCharstring='Target'
-
create(self, vals_list)@api.model_create_multi -
unlink(self) -
write(self, vals)
-
access_tokenChargroups='base.group_user' args: 'Access Token' -
checksumCharreadonly=Truesize=40 args: 'Checksum/SHA1' -
company_idMany2one → res.companychange_default=Truedefault=<expr>string='Company' args: 'res.company' -
datasBinarycompute='_compute_datas'inverse='_inverse_datas'string='File Content (base64)' -
db_datasBinaryattachment=False args: 'Database Data' -
descriptionTextargs: 'Description' -
file_sizeIntegerreadonly=True args: 'File Size' -
index_contentTextprefetch=Falsereadonly=True args: 'Indexed Content' -
mimetypeCharreadonly=True args: 'Mime Type' -
nameCharrequired=True args: 'Name' -
publicBooleanargs: 'Is public document' -
rawBinarycompute='_compute_raw'inverse='_inverse_raw'string='File Content (raw)' -
res_fieldCharargs: 'Resource Field' -
res_idMany2oneReferencemodel_field='res_model' args: 'Resource ID' -
res_modelCharargs: 'Resource Model' -
res_nameCharcompute='_compute_res_name' args: 'Resource Name' -
store_fnameCharindex=True args: 'Stored Filename' -
typeSelectionchange_default=Truedefault='binary'help='You can either upload a file from your computer or copy/paste an internet link to your file.'required=Truestring='Type' args: [('url', 'URL'), ('binary', 'File')] -
urlCharindex='btree_not_null'size=1024 args: 'Url'
-
action_get(self)@api.model -
check(self, mode, values=None)@api.modelRestricts the access to an ir.attachment, according to referred mode -
copy_data(self, default=None) -
create(self, vals_list)@api.model_create_multi -
create_unique(self, values_list)@api.model -
force_storage(self)@api.modelForce all attachments to be stored in the currently configured storage -
generate_access_token(self) -
get_serving_groups(self)@api.modelAn ir.attachment record may be used as a fallback in the http dispatch if its type field is set to "binary" and its url field is set as the request's url. Only the groups returned by this method are allowed to create and write on such records. -
regenerate_assets_bundles(self)@api.model -
unlink(self) -
write(self, vals)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
-
keyCharrequired=True -
valueTextrequired=True
-
create(self, vals_list)@api.model_create_multi -
get_param(self, key, default=False)@api.modelRetrieve the value for a given key. :param string key: The key of the parameter value to retrieve. :param string default: default value if parameter is missing. :return: The value of the parameter, or ``default`` if it does not exist. :rtype: string -
init(self, force=False)@mute_logger('odoo.addons.base.models.ir_config_parameter')Initializes the parameters listed in _default_parameters. It overrides existing parameters if force is ``True``. -
set_param(self, key, value)@api.modelSets the value of a parameter. :param string key: The key of the parameter value to set. :param string value: The value to set. :return: the previous value of the parameter or False if it did not exist. :rtype: string -
unlink(self) -
unlink_default_parameters(self)@api.ondelete(at_uninstall=False) -
write(self, vals)
-
activeBooleandefault=True -
cron_nameCharcompute='_compute_cron_name'store=True args: 'Name' -
failure_countIntegerdefault=0help='The number of consecutive failures of this job. It is automatically reset on success.' -
first_failure_dateDatetimehelp='The first time the cron failed. It is automatically reset on success.'string='First Failure Date' -
interval_numberIntegeraggregator='avg'default=1help='Repeat every x.'required=True -
interval_typeSelectiondefault='months'required=Truestring='Interval Unit' args: [('minutes', 'Minutes'), ('hours', 'Hours'), ('days', 'Days'), ('weeks', 'Weeks'), ('months', 'Months')] -
ir_actions_server_idMany2one → ir.actions.serverdelegate=Trueindex=Trueondelete='restrict'required=True args: 'ir.actions.server', 'Server action' -
lastcallDatetimehelp='Previous time the cron ran successfully, provided to the job through the context on the `lastcall` key'string='Last Execution Date' -
nextcallDatetimedefault=fields.Datetime.nowhelp='Next planned execution date for this job.'required=Truestring='Next Execution Date' -
priorityIntegeraggregator=Nonedefault=5help='The priority of the job, as an integer: 0 means higher priority, 10 means lower priority.' -
user_idMany2one → res.usersdefault=<expr>required=Truestring='Scheduler User' args: 'res.users'
-
action_open_parent_action(self) -
action_open_scheduled_action(self) -
create(self, vals_list)@api.model_create_multi -
default_get(self, fields)@api.model -
method_direct_trigger(self)Run the CRON job in the current (HTTP) thread. The job is still ran as it would be by the scheduler: a new cursor is used for the execution of the job. :raises UserError: when the job is already running -
toggle(self, model, domain)@api.model -
write(self, vals)
-
cron_idMany2one → ir.cronindex=Trueondelete='cascade'required=True args: 'ir.cron' -
deactivateBoolean -
doneIntegerdefault=0 -
remainingIntegerdefault=0 -
timed_out_counterIntegerdefault=0
No public methods.
-
call_atDatetimeindex=Truerequired=True -
cron_idMany2one → ir.cronindex=Trueondelete='cascade'required=True args: 'ir.cron'
No public methods.
-
company_idMany2one → res.companyhelp='If set, action binding only applies for this company'index=Trueondelete='cascade'string='Company' args: 'res.company' -
conditionCharhelp='If set, applies the default upon condition.' args: 'Condition' -
field_idMany2one → ir.model.fieldsindex=Trueondelete='cascade'required=Truestring='Field' args: 'ir.model.fields' -
json_valueCharrequired=True args: 'Default Value (JSON format)' -
user_idMany2one → res.usershelp='If set, action binding only applies for this user.'index=Trueondelete='cascade'string='User' args: 'res.users'
-
create(self, vals_list)@api.model_create_multi -
discard_records(self, records)@api.modelDiscard all the defaults of many2one fields using any of the given records. -
discard_values(self, model_name, field_name, values)@api.modelDiscard all the defaults for any of the given values. -
set(self, model_name, field_name, value, user_id=False, company_id=False, condition=False)@api.modelDefines a default value for the given field. Any entry for the same scope (field, user, company) will be replaced. The value is encoded in JSON to be stored to the database. :param model_name: :param field_name: :param value: :param user_id: may be ``False`` for all users, ``True`` for the current user, or any user id :param company_id: may be ``False`` for all companies, ``True`` for the current user's company, or any company id :param condition: optional condition that restricts the applicability of the default value; this is an opaque string, but the client typically uses single-field conditions in the form ``'key=val'``. -
unlink(self) -
write(self, vals)
No new fields.
Public methods (1)-
install_demo(self)@assert_log_admin_access
-
errorCharstring='Error' -
module_idMany2one → ir.module.modulerequired=Truestring='Module' args: 'ir.module.module' -
wizard_idMany2one → ir.demo_failure.wizardargs: 'ir.demo_failure.wizard'
No public methods.
-
failure_idsOne2many → ir.demo_failurereadonly=Truestring='Demo Installation Failures' args: 'ir.demo_failure', 'wizard_id' -
failures_countIntegercompute='_compute_failures_count'
-
done(self)
-
action_idMany2one → ir.actions.actionsondelete='cascade'string='Action' args: 'ir.actions.actions' -
contextChardefault='{}'help='Context dictionary as Python expression, empty by default (Default: {})' -
default_view_modeCharhelp='Default view (if none, default view of the action is taken)'string='Default View' -
domainChardefault='[]'help='Domain applied to the active id of the parent model' -
filter_idsOne2many → ir.filtershelp='Default filter of the embedded action (if none, no filters)' args: 'ir.filters', 'embedded_action_id' -
groups_idsMany2many → res.groupshelp='Groups that can execute the embedded action. Leave empty to allow everybody.' args: 'res.groups' -
is_deletableBooleancompute='_compute_is_deletable' -
is_visibleBooleancompute='_compute_is_visible'help='Computed field to check if the record should be visible according to the domain'string='Embedded visibility' -
nameChartranslate=True -
parent_action_idMany2one → ir.actions.act_windowondelete='cascade'required=Truestring='Parent Action' args: 'ir.actions.act_window' -
parent_res_idIntegerstring='Active Parent Id' -
parent_res_modelCharrequired=Truestring='Active Parent Model' -
python_methodCharhelp='Python method returning an action' -
sequenceInteger -
user_idMany2one → res.usershelp='User specific embedded action. If empty, shared embedded action'ondelete='cascade'string='User' args: 'res.users'
-
create(self, vals_list)@api.model_create_multi
-
export_fieldsOne2many → ir.exports.linecopy=Truestring='Export ID' args: 'ir.exports.line', 'export_id' -
nameCharstring='Export Name' -
resourceCharindex=True
No public methods.
-
export_idMany2one → ir.exportsindex=Trueondelete='cascade'string='Export' args: 'ir.exports' -
nameCharstring='Field Name'
No public methods.
No new fields.
Public methods (3)-
db_id_for(self, model, field, subfield, value, savepoint)@api.modelFinds a database id for the reference ``value`` in the referencing subfield ``subfield`` of the provided field of the provided model. :param model: model to which the field belongs :param field: relational field for which references are provided :param subfield: a relational subfield allowing building of refs to existing records: ``None`` for a name_search, ``id`` for an external id and ``.id`` for a database id :param value: value of the reference to match to an actual record :param savepoint: savepoint for rollback on errors :return: a pair of the matched database identifier (if any), the translated user-readable name for the field and the list of warnings :rtype: (ID|None, unicode, list) -
for_model(self, model, fromtype=str, *, savepoint)@api.modelReturns a converter object for the model. A converter is a callable taking a record-ish (a dictionary representing an odoo record with values of typetag ``fromtype``) and returning a converted records matching what :meth:`odoo.models.Model.write` expects. :param model: :class:`odoo.models.Model` for the conversion base :param fromtype: :param savepoint: savepoint to rollback to on error :returns: a converter callable :rtype: (record: dict, logger: (field, error) -> None) -> dict -
to_field(self, model, field, fromtype=str, *, savepoint)@api.modelFetches a converter for the provided field object, from the specified type. A converter is simply a callable taking a value of type ``fromtype`` (or a composite of ``fromtype``, e.g. list or dict) and returning a value acceptable for a write() on the field ``field``. By default, tries to get a method on itself with a name matching the pattern ``_$fromtype_to_$field.type`` and returns it. Converter callables can either return a value and a list of warnings to their caller or raise ``ValueError``, which will be interpreted as a validation & conversion failure. ValueError can have either one or two parameters. The first parameter is mandatory, **must** be a unicode string and will be used as the user-visible message for the error (it should be translatable and translated). It can contain a ``field`` named format placeholder so the caller can inject the field's translated, user-facing name (@string). The second parameter is optional and, if provided, must be a mapping. This mapping will be merged into the error dictionary returned to the client. If a converter can perform its function but has to make assumptions about the data, it can send a warning to the user through adding an instance of :class:`~.ImportWarning` to the second value it returns. The handling of a warning at the upper levels is the same as ``ValueError`` above. :param model: :param field: field object to generate a value for :type field: :class:`odoo.fields.Field` :param fromtype: type to convert to something fitting for ``field`` :type fromtype: type | str :param savepoint: savepoint to rollback to on errors :return: a function (fromtype -> field.write_type), if a converter is found :rtype: Callable | None
-
action_idMany2one → ir.actions.actionshelp='The menu action this filter applies to. When left empty the filter applies to all menus for this model.'ondelete='cascade'string='Action' args: 'ir.actions.actions' -
activeBooleandefault=True -
contextTextdefault='{}'required=True -
domainTextdefault='[]'required=True -
embedded_action_idMany2one → ir.embedded.actionshelp='The embedded action this filter is applied to'index='btree_not_null'ondelete='cascade' args: 'ir.embedded.actions' -
embedded_parent_res_idIntegerhelp='id of the record the filter should be applied to. Only used in combination with embedded actions' -
is_defaultBooleanstring='Default Filter' -
model_idSelectionrequired=Trueselection='_list_all_models'string='Model' -
nameCharrequired=Truestring='Filter Name' -
sortChardefault='[]'required=True -
user_idsMany2many → res.userscontext={'active_test': False}help='The users the filter is shared with. If empty, the filter is shared with all users.'ondelete='cascade'string='Users' args: 'res.users'
-
copy_data(self, default=None) -
create_filter(self, vals)@api.model -
get_filters(self, model, action_id=None, embedded_action_id=None, embedded_parent_res_id=None)@api.modelObtain the list of filters available for the user on the given model. :param int model: id of model to find filters for :param action_id: optional ID of action to restrict filters to this action plus global filters. If missing only global filters are returned. The action does not have to correspond to the model, it may only be a contextual action. :return: list of :meth:`~osv.read`-like dicts containing the ``name``, ``is_default``, ``domain``, ``user_ids`` (m2m), ``action_id`` (m2o tuple), ``embedded_action_id`` (m2o tuple), ``embedded_parent_res_id`` and ``context`` of the matching ``ir.filters``. -
write(self, vals)
No new fields.
Public methods (1)-
routing_map(self, key=None)@tools.ormcache('key', cache='routing')
-
create_dateDatetimereadonly=Truestring='Created on' -
create_uidIntegerreadonly=Truestring='Created by' -
dbnameCharindex=Truestring='Database Name' -
funcCharrequired=Truestring='Function' -
levelCharindex=True -
lineCharrequired=True -
messageTextrequired=True -
nameCharrequired=True -
pathCharrequired=True -
typeSelectionindex=Truerequired=True args: [('client', 'Client'), ('server', 'Server')] -
write_dateDatetimereadonly=Truestring='Last Updated on' -
write_uidIntegerreadonly=Truestring='Last Updated by'
-
init(self)
-
activeBooleandefault=True -
from_filterCharhelp='Comma-separated list of addresses or domains for which this server can be used.\ne.g.: "notification@odoo.com" or "odoo.com"' args: 'FROM Filtering' -
max_email_sizeFloatstring='Max Email Size' -
nameCharindex=Truerequired=Truestring='Name' -
sequenceIntegerdefault=10help='When no specific mail server is requested for a mail, the highest priority one is used. Default priority is 10 (smaller number = higher priority)'string='Priority' -
smtp_authenticationSelectiondefault='login'required=Truestring='Authenticate with' args: [('login', 'Username'), ('certificate', 'SSL Certificate'), ('cli', 'Command Line Interface')] -
smtp_authentication_infoTextcompute='_compute_smtp_authentication_info' args: 'Authentication Info' -
smtp_debugBooleanhelp='If enabled, the full output of SMTP sessions will be written to the server log at DEBUG level (this is very verbose and may include confidential info!)'string='Debugging' -
smtp_encryptionSelectiondefault='none'help='Choose the connection encryption scheme:\n- None: SMTP sessions are done in cleartext.\n- TLS (STARTTLS): TLS encryption is requested at start of SMTP session (Recommended)\n- SSL/TLS: SMTP sessions are encrypted with SSL/TLS through a dedicated port (default: 465)\n\nChoose an additionnal variant for SSL or TLS:\n- encryption and validation: encrypt the data and authentify the server using its SSL certificate (Recommended)\n- encryption only: encrypt the data but skip server authentication'required=Truestring='Connection Encryption' args: [('none', 'None'), ('starttls_strict', 'TLS (STARTTLS), encryption and validation'), ('starttls', 'TLS (STARTTLS), encryption only'), ('ssl_strict', 'SSL/TLS, encryption and validation'), ('ssl', 'SSL/TLS, encryption only')] -
smtp_hostCharhelp='Hostname or IP of SMTP server'string='SMTP Server' -
smtp_passChargroups='base.group_system'help='Optional password for SMTP authentication'string='Password' -
smtp_portIntegerdefault=25help='SMTP Port. Usually 465 for SSL, and 25 or 587 for other cases.'string='SMTP Port' -
smtp_ssl_certificateBinaryattachment=Falsegroups='base.group_system'help='SSL certificate used for authentication' args: 'SSL Certificate' -
smtp_ssl_private_keyBinaryattachment=Falsegroups='base.group_system'help='SSL private key used for authentication' args: 'SSL Private Key' -
smtp_userChargroups='base.group_system'help='Optional username for SMTP authentication'string='Username'
-
action_retrieve_max_email_size(self) -
send_email(self, message, mail_server_id=None, smtp_server=None, smtp_port=None, smtp_user=None, smtp_password=None, smtp_encryption=None, smtp_ssl_certificate=None, smtp_ssl_private_key=None, smtp_debug=False, smtp_session=None)@api.modelSends an email directly (no queuing). No retries are done, the caller should handle MailDeliveryException in order to ensure that the mail is never lost. If the mail_server_id is provided, sends using this mail server, ignoring other smtp_* arguments. If mail_server_id is None and smtp_server is None, use the default mail server (highest priority). If mail_server_id is None and smtp_server is not None, use the provided smtp_* arguments. If both mail_server_id and smtp_server are None, look for an 'smtp_server' value in server config, and fails if not found. :param message: the email.message.Message to send. The envelope sender will be extracted from the ``Return-Path`` (if present), or will be set to the default bounce address. The envelope recipients will be extracted from the combined list of ``To``, ``CC`` and ``BCC`` headers. :param smtp_session: optional pre-established SMTP session. When provided, overrides `mail_server_id` and all the `smtp_*` parameters. Passing the matching `mail_server_id` may yield better debugging/log messages. The caller is in charge of disconnecting the session. :param mail_server_id: optional id of ir.mail_server to use for sending. overrides other smtp_* arguments. :param smtp_server: optional hostname of SMTP server to use :param smtp_encryption: optional TLS mode, one of 'none', 'starttls', 'starttls_strict', 'ssl', or 'ssl_strict'. The 'strict' variants verify the remote server's certificate against the operating system trust store. :param smtp_port: optional SMTP port, if mail_server_id is not passed :param smtp_user: optional SMTP user, if mail_server_id is not passed :param smtp_password: optional SMTP password to use, if mail_server_id is not passed :param smtp_ssl_certificate: filename of the SSL certificate used for authentication :param smtp_ssl_private_key: filename of the SSL private key used for authentication :param smtp_debug: optional SMTP debug flag, if mail_server_id is not passed :return: the Message-ID of the message that was just sent, if successfully sent, otherwise raises MailDeliveryException and logs root cause. -
test_smtp_connection(self, autodetect_max_email_size=False)Test the connection and if autodetect_max_email_size, set auto-detected max email size. :param bool autodetect_max_email_size: whether to autodetect the max email size :return: client action to notify the user of the result of the operation (connection test or auto-detection successful depending on the ``autodetect_max_email_size`` parameter) :rtype: dict :raises UserError: if the connection fails and if ``autodetect_max_email_size`` and the server doesn't support the auto-detection of email max size -
write(self, vals)Ensure we cannot archive a server in-use
-
abstractBooleanstring='Abstract Model' -
access_idsOne2many → ir.model.accessstring='Access' args: 'ir.model.access', 'model_id' -
countIntegercompute='_compute_count'help='Total number of records in this model'string='Count (Incl. Archived)' -
field_idOne2many → ir.model.fieldscopy=Truedefault=_default_field_idrequired=Truestring='Fields' args: 'ir.model.fields', 'model_id' -
fold_nameCharhelp='In a Kanban view where columns are records of this model, the value of this (boolean) field determines which column should be folded by default.'string='Fold Field' -
infoTextstring='Information' -
inherited_model_idsMany2many → ir.modelcompute='_inherited_models'help='The list of models that extends the current model.'string='Inherited models' args: 'ir.model' -
modelChardefault='x_'required=True -
modulesCharcompute='_in_modules'help='List of modules in which the object is defined or inherited'string='In Apps' -
nameCharrequired=Truestring='Model Description'translate=True -
orderChardefault='id'help='SQL expression for ordering records in the model; e.g. "x_sequence asc, id desc"'required=Truestring='Order' -
rule_idsOne2many → ir.rulestring='Record Rules' args: 'ir.rule', 'model_id' -
stateSelectiondefault='manual'readonly=Truestring='Type' args: [('manual', 'Custom Object'), ('base', 'Base Object')] -
transientBooleanstring='Transient Model' -
view_idsOne2many → ir.ui.viewcompute='_view_ids'string='Views' args: 'ir.ui.view'
-
create(self, vals_list)@api.model_create_multi -
name_create(self, name)@api.modelInfer the model from the name. E.g.: 'My New Model' should become 'x_my_new_model'. -
unlink(self) -
write(self, vals)
-
activeBooleandefault=Truehelp='If you uncheck the active field, it will disable the ACL without deleting it (if you delete a native ACL, it will be re-created when you reload the module).' -
group_idMany2one → res.groupsindex=Trueondelete='restrict'string='Group' args: 'res.groups' -
model_idMany2one → ir.modelindex=Trueondelete='cascade'required=Truestring='Model' args: 'ir.model' -
nameCharindex=Truerequired=True -
perm_createBooleanstring='Create Access' -
perm_readBooleanstring='Read Access' -
perm_unlinkBooleanstring='Delete Access' -
perm_writeBooleanstring='Write Access'
-
call_cache_clearing_methods(self)@api.model -
check(self, model, mode='read', raise_exception=True)@api.model -
create(self, vals_list)@api.model_create_multi -
group_names_with_access(self, model_name, access_mode)@api.modelReturn the names of visible groups which have been granted ``access_mode`` on the model ``model_name``. :rtype: list -
unlink(self) -
write(self, vals)
-
definitionCharhelp='PostgreSQL constraint definition'readonly=True -
messageCharhelp='Error message returned when the constraint is violated.'translate=True -
modelMany2one → ir.modelindex=Trueondelete='cascade'readonly=Truerequired=True args: 'ir.model' -
moduleMany2one → ir.module.moduleindex=Trueondelete='cascade'readonly=Truerequired=True args: 'ir.module.module' -
nameCharhelp='PostgreSQL constraint or foreign key name.'index=Truereadonly=Truerequired=Truestring='Constraint' -
typeCharhelp='Type of the constraint: `f` for a foreign key, `u` for other constraints.'readonly=Truerequired=Truesize=1string='Constraint Type'
-
copy_data(self, default=None) -
unlink(self)
-
complete_nameCharcompute='_compute_complete_name'string='Complete ID' -
modelCharrequired=Truestring='Model Name' -
moduleChardefault=''required=True -
nameCharhelp='External Key/Identifier that can be used for data integration with third-party systems'required=Truestring='External Identifier' -
noupdateBooleandefault=Falsestring='Non Updatable' -
referenceCharcompute='_compute_reference'readonly=Truestore=Falsestring='Reference' -
res_idMany2oneReferencehelp='ID of the target record in the database'model_field='model'string='Record ID'
-
check_object_reference(self, module, xml_id, raise_on_access_error=False)@api.modelReturns (model, res_id) corresponding to a given module and xml_id (cached), if and only if the user has the necessary access rights to see that object, otherwise raise a ValueError if raise_on_access_error is True or returns a tuple (model found, False) -
copy_data(self, default=None) -
create(self, vals_list)@api.model_create_multi -
toggle_noupdate(self, model, res_id)@api.modelToggle the noupdate flag on the external id of the record -
unlink(self)Regular unlink method, but make sure to clear the caches. -
write(self, vals)
-
column1Charhelp='Column referring to the record in the model table'string='Column 1' -
column2Charhelp='Column referring to the record in the comodel table'string='Column 2' -
company_dependentBooleanhelp='Whether values for this field is company dependent'readonly=Truestring='Company Dependent' -
computeTexthelp="Code to compute the value of the field.\nIterate on the recordset 'self' and assign the field's value:\n\n for record in self:\n record['size'] = len(record.name)\n\nModules time, datetime, dateutil are available." -
copiedBooleancompute='_compute_copied'help='Whether the value is copied when duplicating a record.'readonly=Falsestore=Truestring='Copied' -
currency_fieldCharhelp='Name of the Many2one field holding the res.currency'string='Currency field' -
dependsCharhelp='Dependencies of compute method; a list of comma-separated field names, like\n\n name, partner_id.name'string='Dependencies' -
domainChardefault='[]'help="The optional domain to restrict possible values for relationship fields, specified as a Python expression defining a list of triplets. For example: [('color','=','red')]" -
field_descriptionChardefault=''required=Truestring='Field Label'translate=True -
group_expandBooleanhelp="If checked, all the records of the target model will be included\nin a grouped result (e.g. 'Group By' filters, Kanban columns, etc.).\nNote that it can significantly reduce performance if the target model\nof the field contains a lot of records; usually used on models with\nfew records (e.g. Stages, Job Positions, Event Types, etc.)."string='Expand Groups' -
groupsMany2many → res.groupsargs: 'res.groups', 'ir_model_fields_group_rel', 'field_id', 'group_id' -
helpTextstring='Field Help'translate=True -
indexBooleanstring='Indexed' -
modelCharhelp='The technical name of the model this field belongs to'index=Truerequired=Truestring='Model Name' -
model_idMany2one → ir.modelhelp='The model this field belongs to'index=Trueondelete='cascade'required=Truestring='Model' args: 'ir.model' -
modulesCharcompute='_in_modules'help='List of modules in which the field is defined'string='In Apps' -
nameChardefault='x_'index=Truerequired=Truestring='Field Name' -
on_deleteSelectiondefault='set null'help='On delete property for many2one fields'string='On Delete' args: [('cascade', 'Cascade'), ('set null', 'Set NULL'), ('restrict', 'Restrict')] -
readonlyBoolean -
relatedCharhelp='The corresponding related field, if any. This must be a dot-separated list of field names.'string='Related Field Definition' -
related_field_idMany2one → ir.model.fieldscompute='_compute_related_field_id'ondelete='cascade'store=Truestring='Related Field' args: 'ir.model.fields' -
relationCharhelp='For relationship fields, the technical name of the target model'string='Related Model' -
relation_fieldCharhelp='For one2many fields, the field on the target model that implement the opposite many2one relationship' -
relation_field_idMany2one → ir.model.fieldscompute='_compute_relation_field_id'ondelete='cascade'store=Truestring='Relation field' args: 'ir.model.fields' -
relation_tableCharhelp='Used for custom many2many fields to define a custom relation table name' -
requiredBoolean -
sanitizeBooleandefault=Truestring='Sanitize HTML' -
sanitize_attributesBooleandefault=Truestring='Sanitize HTML Attributes' -
sanitize_formBooleandefault=Truestring='Sanitize HTML Form' -
sanitize_overridableBooleandefault=Falsestring='Sanitize HTML overridable' -
sanitize_styleBooleandefault=Falsestring='Sanitize HTML Style' -
sanitize_tagsBooleandefault=Truestring='Sanitize HTML Tags' -
selectableBooleandefault=True -
selectionCharcompute='_compute_selection'inverse='_inverse_selection'string='Selection Options (Deprecated)' -
selection_idsOne2many → ir.model.fields.selectioncopy=Truestring='Selection Options' args: 'ir.model.fields.selection', 'field_id' -
sizeInteger -
stateSelectiondefault='manual'index=Truereadonly=Truerequired=Truestring='Type' args: [('manual', 'Custom Field'), ('base', 'Base Field')] -
storeBooleandefault=Truehelp='Whether the value is stored in the database.'string='Stored' -
strip_classesBooleandefault=Falsestring='Strip Class Attribute' -
strip_styleBooleandefault=Falsestring='Strip Style Attribute' -
translateSelectionhelp='Whether values for this field can be translated (enables the translation mechanism for that field)'string='Translatable' args: [('standard', 'Translate as a whole'), ('html_translate', 'Translate HTML terms'), ('xml_translate', 'Translate XML terms')] -
ttypeSelectionrequired=Trueselection=FIELD_TYPESstring='Field Type'
-
create(self, vals_list)@api.model_create_multi -
get_field_help(self, model_name)@api.modelReturn the translation of fields help in the context's language. Note that the result contains the available translations only. :param model_name: the name of a model :return: the model's fields' help as a dictionary `{field_name: field_help}` -
get_field_selection(self, model_name, field_name)@api.modelReturn the translation of a field's selection in the context's language. Note that the result contains the available translations only. :param model_name: the name of the field's model :param field_name: the name of the field :return: the fields' selection as a list -
get_field_string(self, model_name)@api.modelReturn the translation of fields strings in the context's language. Note that the result contains the available translations only. :param model_name: the name of a model :return: the model's fields' strings as a dictionary `{field_name: field_string}` -
unlink(self) -
write(self, vals)
-
field_idMany2one → ir.model.fieldsdomain=[('ttype', 'in', ['selection', 'reference'])]index=Trueondelete='cascade'required=True args: 'ir.model.fields' -
nameCharrequired=Truetranslate=True -
sequenceIntegerdefault=1000 -
valueCharrequired=True
-
create(self, vals_list)@api.model_create_multi -
unlink(self) -
write(self, vals)
-
model_idMany2one → ir.modelondelete='cascade'required=True args: 'ir.model' -
parent_field_idMany2one → ir.model.fieldsondelete='cascade' args: 'ir.model.fields' -
parent_idMany2one → ir.modelondelete='cascade'required=True args: 'ir.model'
No public methods.
-
create_dateDatetime -
modelMany2one → ir.modelindex=Trueondelete='cascade'required=True args: 'ir.model' -
moduleMany2one → ir.module.moduleindex=Trueondelete='cascade'required=True args: 'ir.module.module' -
nameCharhelp='PostgreSQL table name implementing a many2many relation.'index=Truerequired=Truestring='Relation Name' -
write_dateDatetime
No public methods.
-
child_idsOne2many → ir.module.categorystring='Child Applications' args: 'ir.module.category', 'parent_id' -
descriptionTextstring='Description'translate=True -
exclusiveBooleanstring='Exclusive' -
module_idsOne2many → ir.module.modulestring='Modules' args: 'ir.module.module', 'category_id' -
nameCharrequired=Truestring='Name'translate=True -
parent_idMany2one → ir.module.categoryindex=Truestring='Parent Application' args: 'ir.module.category' -
privilege_idsOne2many → res.groups.privilegestring='Privileges' args: 'res.groups.privilege', 'category_id' -
sequenceIntegerstring='Sequence' -
visibleBooleandefault=Truestring='Visible' -
xml_idCharcompute='_compute_xml_id'string='External ID'
No public methods.
-
applicationBooleanreadonly=True args: 'Application' -
authorCharreadonly=True args: 'Author' -
auto_installBooleanhelp='An auto-installable module is automatically installed by the system when all its dependencies are satisfied. If the module has no dependency, it is always installed.' args: 'Automatic Installation' -
category_idMany2one → ir.module.categoryindex=Truereadonly=Truestring='Category' args: 'ir.module.category' -
contributorsTextreadonly=True args: 'Contributors' -
country_idsMany2many → res.countryargs: 'res.country', 'module_country', 'module_id', 'country_id' -
demoBooleandefault=Falsereadonly=True args: 'Demo Data' -
dependencies_idOne2many → ir.module.module.dependencyreadonly=Truestring='Dependencies' args: 'ir.module.module.dependency', 'module_id' -
descriptionTextreadonly=Truetranslate=True args: 'Description' -
description_htmlHtmlcompute='_get_desc' args: 'Description HTML' -
exclusion_idsOne2many → ir.module.module.exclusionreadonly=Truestring='Exclusions' args: 'ir.module.module.exclusion', 'module_id' -
has_iapBooleancompute='_compute_has_iap' -
iconCharargs: 'Icon URL' -
icon_flagCharcompute='_get_icon_image'string='Flag' -
icon_imageBinarycompute='_get_icon_image'string='Icon' -
installed_versionCharcompute='_get_latest_version' args: 'Latest Version' -
latest_versionCharreadonly=True args: 'Installed Version' -
licenseSelectiondefault='LGPL-3'readonly=Truestring='License' args: [('GPL-2', 'GPL Version 2'), ('GPL-2 or any later version', 'GPL-2 or later version'), ('GPL-3', 'GPL Version 3'), ('GPL-3 or any later version', 'GPL-3 or later version'), ('AGPL-3', 'Affero GPL-3'), ('LGPL-3', 'LGPL Version 3'), ('Other OSI approved licence', 'Other OSI Approved License'), ('OEEL-1', 'Odoo Enterprise Edition License v1.0'), ('OPL-1', 'Odoo Proprietary License v1.0'), ('Other proprietary', 'Other Proprietary')] -
maintainerCharreadonly=True args: 'Maintainer' -
menus_by_moduleTextcompute='_get_views'store=Truestring='Menus' -
nameCharreadonly=Truerequired=True args: 'Technical Name' -
published_versionCharreadonly=True args: 'Published Version' -
reports_by_moduleTextcompute='_get_views'store=Truestring='Reports' -
sequenceIntegerdefault=100 args: 'Sequence' -
shortdescCharreadonly=Truetranslate=True args: 'Module Name' -
stateSelectiondefault='uninstallable'index=Truereadonly=Truestring='Status' args: STATES -
summaryCharreadonly=Truetranslate=True args: 'Summary' -
to_buyBooleandefault=False args: 'Odoo Enterprise Module' -
urlCharreadonly=True args: 'URL' -
views_by_moduleTextcompute='_get_views'store=Truestring='Views' -
websiteCharreadonly=True args: 'Website'
-
button_immediate_install(self)@assert_log_admin_accessInstalls the selected module(s) immediately and fully, returns the next res.config action to execute :returns: next res.config item to execute :rtype: dict[str, object] -
button_immediate_uninstall(self)@assert_log_admin_accessUninstall the selected module(s) immediately and fully, returns the next res.config action to execute -
button_immediate_upgrade(self)@assert_log_admin_accessUpgrade the selected module(s) immediately and fully, return the next res.config action to execute -
button_install(self)@assert_log_admin_access -
button_reset_state(self)@assert_log_admin_access@api.model -
button_uninstall(self)@assert_log_admin_access -
button_uninstall_wizard(self)@assert_log_admin_accessLaunch the wizard to uninstall the given module. -
button_upgrade(self)@assert_log_admin_access -
check_external_dependencies(self, module_name, newstate='to install') -
check_module_update(self)@api.model -
create(self, vals_list)@api.model_create_multi -
downstream_dependencies(self, known_deps=None, exclude_states=('uninstalled', 'uninstallable', 'to remove'))Return the modules that directly or indirectly depend on the modules in `self`, and that satisfy the `exclude_states` filter. -
get_module_info(cls, name)@classmethod -
get_values_from_terp(terp)@staticmethod -
module_uninstall(self)@assert_log_admin_accessPerform the various steps required to uninstall a module completely including the deletion of all database structures created by the module: tables, columns, constraints, etc. -
next(self)Return the action linked to an ir.actions.todo is there exists one that should be executed. Otherwise, redirect to /web -
search_panel_select_range(self, field_name, **kwargs)@api.model -
unlink(self) -
update_list(self)@assert_log_admin_access@api.model -
upstream_dependencies(self, known_deps=None, exclude_states=('installed', 'uninstallable', 'to remove'))Return the dependency tree of modules of the modules in `self`, and that satisfy the `exclude_states` filter.
-
auto_install_requiredBooleandefault=Truehelp='Whether this dependency blocks automatic installation of the dependent' -
depend_idMany2one → ir.module.modulecompute='_compute_depend'search='_search_depend' args: 'ir.module.module', 'Dependency' -
module_idMany2one → ir.module.moduleondelete='cascade' args: 'ir.module.module', 'Module' -
nameCharindex=True -
stateSelectioncompute='_compute_state'string='Status' args: DEP_STATES
-
all_dependencies(self, module_names)@api.model
-
exclusion_idMany2one → ir.module.modulecompute='_compute_exclusion'search='_search_exclusion' args: 'ir.module.module', 'Exclusion Module' -
module_idMany2one → ir.module.moduleondelete='cascade' args: 'ir.module.module', 'Module' -
nameCharindex=True -
stateSelectioncompute='_compute_state'string='Status' args: DEP_STATES
No public methods.
-
config_urlTextcompute='_compute_config_url' args: 'Open profiles config' -
cpu_durationFloatdigits=(9, 3)help='CPU clock (not including other processes or SQL)' args: 'CPU Duration' -
create_dateDatetimeargs: 'Creation Date' -
durationFloatdigits=(9, 3)help='Real elapsed time' args: 'Duration' -
entry_countIntegerargs: 'Entry count' -
init_stack_traceTextprefetch=False args: 'Initial stack trace' -
nameCharargs: 'Description' -
othersTextprefetch=False args: 'others' -
qwebTextprefetch=False args: 'Qweb' -
sessionCharindex=True args: 'Session' -
speedscopeBinarycompute='_compute_speedscope' args: 'Speedscope' -
speedscope_urlTextcompute='_compute_speedscope_url' args: 'Open' -
sqlTextprefetch=False args: 'Sql' -
sql_countIntegerargs: 'Queries Count' -
traces_asyncTextprefetch=False args: 'Traces Async' -
traces_syncTextprefetch=False args: 'Traces Sync'
-
action_view_speedscope(self) -
set_profiling(self, profile=None, collectors=None, params=None)@api.modelEnable or disable profiling for the current user. :param profile: ``True`` to enable profiling, ``False`` to disable it. :param list collectors: optional list of collectors to use (string) :param dict params: optional parameters set on the profiler object
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (5)-
attributes(self, record, field_name, options, values=None)@api.modelattributes(record, field_name, field, options, values) Generates the metadata attributes (prefixed by ``data-oe-``) for the root node of the field conversion. The default attributes are: * ``model``, the name of the record's model * ``id`` the id of the record to which the field belongs * ``type`` the logical field type (widget, may not match the field's ``type``, may not be any Field subclass name) * ``translate``, a boolean flag (``0`` or ``1``) denoting whether the field is translatable * ``readonly``, has this attribute if the field is readonly * ``expression``, the original expression :returns: dict (attribute name, attribute value). -
get_available_options(self)@api.modelGet the available option informations. :rtype: dict[str, dict[str, Any]] :return: A dictionnary that maps option names' to their settings. The settings are dict themselves and have the following keys: type Guaranteed, one of ``'string'``, ``'integer'``, ``'float'``, ``'model'``, ``'array'``, or ``'selection'``. string Guaranteed description Optional required Optional, is assumed ``False`` when absent, otherwise is either ``True`` or a string. params Optional default_value Optional, the default value, as a json-friendly type. Example:: { <option>: { # guaranteed 'type': ..., 'string': ..., # optional 'default_value': ..., 'description': ..., 'params': ..., 'required': ..., } } -
record_to_html(self, record, field_name, options)@api.modelrecord_to_html(record, field_name, options) Converts the specified field of the ``record`` to HTML :rtype: unicode -
user_lang(self)@api.modeluser_lang() Fetches the res.lang record corresponding to the language code stored in the user's context. :returns: Model[res.lang] -
value_to_html(self, value, options)@api.modelvalue_to_html(value, field, options=None) Converts a single value to its HTML version/output :rtype: unicode
No new fields.
Public methods (2)-
get_available_options(self)@api.model -
value_to_html(self, value, options=None)@api.model
No new fields.
Public methods (2)-
get_available_options(self)@api.model -
value_to_html(self, value, options)@api.model
No new fields.
Public methods (2)-
get_available_options(self)@api.model -
value_to_html(self, value, options)@api.model
No new fields.
Public methods (2)-
get_available_options(self)@api.model -
value_to_html(self, value, options)@api.model
No new fields.
Public methods (2)-
get_available_options(self)@api.model -
value_to_html(self, value, options)@api.model
No new fields.
Public methods (3)-
get_available_options(self)@api.model -
record_to_html(self, record, field_name, options)@api.model -
value_to_html(self, value, options)@api.model
No new fields.
Public methods (1)-
value_to_html(self, value, options)@api.model
No new fields.
Public methods (1)-
value_to_html(self, value, options)@api.model
No new fields.
Public methods (1)-
value_to_html(self, value, options)@api.model
No new fields.
Public methods (1)-
value_to_html(self, value, options)@api.model
No new fields.
Public methods (2)-
get_available_options(self)@api.model -
value_to_html(self, value, options)@api.model
No new fields.
Public methods (1)-
value_to_html(self, value, options)@api.model
No new fields.
Public methods (1)-
value_to_html(self, value, options)@api.model
No new fields.
Public methods (3)-
get_available_options(self)@api.model -
record_to_html(self, record, field_name, options)@api.model -
value_to_html(self, value, options)@api.model
No new fields.
Public methods (1)-
value_to_html(self, value, options)@api.model
No new fields.
Public methods (1)-
record_to_html(self, record, field_name, options)@api.model
No new fields.
Public methods (3)-
get_available_options(self)@api.model -
record_to_html(self, record, field_name, options)@api.model -
value_to_html(self, value, options)@api.model
No new fields.
Public methods (3)-
get_available_options(self)@api.model -
record_to_html(self, record, field_name, options)@api.model -
value_to_html(self, value, options)@api.model
No new fields.
Public methods (1)-
value_to_html(self, value, options)@api.modelEscapes the value and converts newlines to br. This is bullshit.
No new fields.
Public methods (1)-
value_to_html(self, value, options)@api.model
-
activeBooleandefault=Truehelp='If you uncheck the active field, it will disable the record rule without deleting it (if you delete a native record rule, it may be re-created when you reload the module).' -
domain_forceTextstring='Domain' -
groupsMany2many → res.groupsondelete='restrict' args: 'res.groups', 'rule_group_rel', 'rule_group_id', 'group_id' -
model_idMany2one → ir.modelindex=Trueondelete='cascade'required=Truestring='Model' args: 'ir.model' -
nameChar -
perm_createBooleandefault=Truestring='Create' -
perm_readBooleandefault=Truestring='Read' -
perm_unlinkBooleandefault=Truestring='Delete' -
perm_writeBooleandefault=Truestring='Write'
-
create(self, vals_list)@api.model_create_multi -
unlink(self) -
write(self, vals)
-
activeBooleandefault=True -
codeCharstring='Sequence Code' -
company_idMany2one → res.companydefault=<expr>string='Company' args: 'res.company' -
date_range_idsOne2many → ir.sequence.date_rangestring='Subsequences' args: 'ir.sequence.date_range', 'sequence_id' -
implementationSelectiondefault='standard'help="While assigning a sequence number to a record, the 'no gap' sequence implementation ensures that each previous sequence number has been assigned already. While this sequence implementation will not skip any sequence number upon assignment, there can still be gaps in the sequence if records are deleted. The 'no gap' implementation is slower than the standard one."required=Truestring='Implementation' args: [('standard', 'Standard'), ('no_gap', 'No gap')] -
nameCharrequired=True -
number_incrementIntegerdefault=1help='The next number of the sequence will be incremented by this number'required=Truestring='Step' -
number_nextIntegerdefault=1help='Next number of this sequence'required=Truestring='Next Number' -
number_next_actualIntegercompute='_get_number_next_actual'help='Next number that will be used. This number can be incremented frequently so the displayed value might already be obsolete'inverse='_set_number_next_actual'string='Actual Next Number' -
paddingIntegerdefault=0help="Odoo will automatically adds some '0' on the left of the 'Next Number' to get the required padding size."required=Truestring='Sequence Size' -
prefixCharhelp='Prefix value of the record for the sequence'trim=False -
suffixCharhelp='Suffix value of the record for the sequence'trim=False -
use_date_rangeBooleanstring='Use subsequences per date_range'
-
create(self, vals_list)@api.model_create_multiCreate a sequence, in implementation == standard a fast gaps-allowed PostgreSQL sequence is used. -
get_next_char(self, number_next) -
next_by_code(self, sequence_code, sequence_date=None)@api.modelDraw an interpolated string using a sequence with the requested code. If several sequences with the correct code are available to the user (multi-company cases), the one from the user's current company will be used. -
next_by_id(self, sequence_date=None)Draw an interpolated string using the specified sequence. -
unlink(self) -
write(self, vals)
-
date_fromDaterequired=Truestring='From' -
date_toDaterequired=Truestring='To' -
number_nextIntegerdefault=1help='Next number of this sequence'required=Truestring='Next Number' -
number_next_actualIntegercompute='_get_number_next_actual'help='Next number that will be used. This number can be incremented frequently so the displayed value might already be obsolete'inverse='_set_number_next_actual'string='Actual Next Number' -
sequence_idMany2one → ir.sequenceondelete='cascade'required=Truestring='Main Sequence' args: 'ir.sequence'
-
create(self, vals_list)@api.model_create_multiCreate a sequence, in implementation == standard a fast gaps-allowed PostgreSQL sequence is used. -
default_get(self, fields)@api.model -
unlink(self) -
write(self, vals)
-
actionReferenceselection=[('ir.actions.report', 'ir.actions.report'), ('ir.actions.act_window', 'ir.actions.act_window'), ('ir.actions.act_url', 'ir.actions.act_url'), ('ir.actions.server', 'ir.actions.server'), ('ir.actions.client', 'ir.actions.client')] -
activeBooleandefault=True -
child_idOne2many → ir.ui.menustring='Child IDs' args: 'ir.ui.menu', 'parent_id' -
complete_nameCharcompute='_compute_complete_name'recursive=Truestring='Full Path' -
group_idsMany2many → res.groupshelp="If you have groups, the visibility of this menu will be based on these groups. If this field is empty, Odoo will compute visibility based on the related object's read access."string='Groups' args: 'res.groups', 'ir_ui_menu_group_rel', 'menu_id', 'gid' -
nameCharrequired=Truestring='Menu'translate=True -
parent_idMany2one → ir.ui.menuindex=Trueondelete='restrict'string='Parent Menu' args: 'ir.ui.menu' -
parent_pathCharindex=True -
sequenceIntegerdefault=10 -
web_iconCharstring='Web Icon File' -
web_icon_dataBinaryattachment=Truestring='Web Icon Image'
-
copy(self, default=None) -
create(self, vals_list)@api.model_create_multi -
get_user_roots(self)@api.modelReturn all root menu ids visible for the user. :return: the root menu ids :rtype: list(int) -
load_menus(self, debug)@api.model@tools.ormcache('self.env.uid', 'debug', 'self.env.lang') -
load_menus_root(self)@api.model@tools.ormcache('self.env.uid', 'self.env.lang') -
unlink(self) -
write(self, vals)
-
activeBooleandefault=Truehelp='If this view is inherited,\n* if True, the view always extends its parent\n* if False, the view currently does not extend its parent but can be enabled\n ' -
archTextcompute='_compute_arch'help='This field should be used when accessing view arch. It will use translation.\n Note that it will read `arch_db` or `arch_fs` if in dev-xml mode.'inverse='_inverse_arch'string='View Architecture' -
arch_baseTextcompute='_compute_arch_base'help='This field is the same as `arch` field without translations'inverse='_inverse_arch_base'string='Base View Architecture' -
arch_dbTexthelp='This field stores the view arch.'string='Arch Blob'translate=xml_translate -
arch_fsCharhelp='File from where the view originates.\n Useful to (hard) reset broken views or to read arch from file in dev-xml mode.'string='Arch Filename' -
arch_prevTexthelp='This field will save the current `arch_db` before writing on it.\n Useful to (soft) reset a broken view.'string='Previous View Architecture' -
arch_updatedBooleanstring='Modified Architecture' -
group_idsMany2many → res.groupshelp='If this field is empty, the view applies to all users. Otherwise, the view applies to the users of those groups only.'string='Groups' args: 'res.groups', 'ir_ui_view_group_rel', 'view_id', 'group_id' -
inherit_children_idsOne2many → ir.ui.viewstring='Views which inherit from this one' args: 'ir.ui.view', 'inherit_id' -
inherit_idMany2one → ir.ui.viewindex=Trueondelete='restrict'string='Inherited View' args: 'ir.ui.view' -
invalid_locatorsJsoncompute='_compute_invalid_locators' -
keyCharindex='btree_not_null' -
modeSelectiondefault='primary'help="Only applies if this view inherits from an other one (inherit_id is not False/Null).\n\n* if extension (default), if this view is requested the closest primary view\nis looked up (via inherit_id), then all views inheriting from it with this\nview's model are applied\n* if primary, the closest primary view is fully resolved (even if it uses a\ndifferent model than this one), then this view's inheritance specs\n(<xpath/>) are applied, and the result is used as if it were this view's\nactual arch.\n"required=Truestring='View inheritance mode' args: [('primary', 'Base view'), ('extension', 'Extension View')] -
modelCharindex=True -
model_data_idMany2one → ir.model.datacompute='_compute_model_data_id'search='_search_model_data_id'string='Model Data' args: 'ir.model.data' -
model_idMany2one → ir.modelcompute='_compute_model_id'inverse='_inverse_compute_model_id'string='Model of the view' args: 'ir.model' -
nameCharrequired=Truestring='View Name' -
priorityIntegerdefault=16required=Truestring='Sequence' -
typeSelectionstring='View Type' args: [('list', 'List'), ('form', 'Form'), ('graph', 'Graph'), ('pivot', 'Pivot'), ('calendar', 'Calendar'), ('kanban', 'Kanban'), ('search', 'Search'), ('qweb', 'QWeb')] -
warning_infoHtmlcompute='_compute_warning_info'string='Warning information' -
xml_idCharcompute='_compute_xml_id'help='ID of the view defined in xml file'string='External ID'
-
apply_inheritance_specs(self, source, specs_tree, pre_locate=None)@api.modelApply an inheriting view (a descendant of the base view) Apply to a source architecture all the spec nodes (i.e. nodes describing where and what changes to apply to some parent architecture) given by an inheriting view. :param Element source: a parent architecture to modify :param Element specs_tree: a modifying architecture in an inheriting view :param (optional) pre_locate: function that is execute before locating a node. This function receives an arch as argument. :return: a modified source where the specs are applied :rtype: Element -
copy_data(self, default=None) -
create(self, vals_list)@api.model_create_multi -
default_view(self, model, view_type)@api.modelFetches the default view for the provided (model, view_type) pair: primary view with the lowest priority. :param str model: :param int view_type: :return: id of the default view of False if none found :rtype: int -
distribute_branding(self, e, branding=None, parent_xpath='', index_map=ConstantMapping(1)) -
get_combined_arch(self)Return the arch of ``self`` (as a string) combined with its inherited views. -
inherit_branding(self, specs_tree) -
is_node_branded(self, node)Finds out whether a node is branded or qweb-active (bears a @data-oe-model or a @t-* *which is not t-field* as t-field does not section out views) :param node: an etree-compatible element to test :type node: etree._Element :rtype: boolean -
locate_node(self, arch, spec)Locate a node in a source (parent) architecture. Given a complete source (parent) architecture (i.e. the field `arch` in a view), and a 'spec' node (a node in an inheriting view that specifies the location in the source view of what should be changed), return (if it exists) the node in the source view matching the specification. :param arch: a parent architecture to modify :param spec: a modifying node in an inheriting view :return: a node in the source matching the spec -
postprocess_and_fields(self, node, model=None, **options)Return an architecture and a description of all the fields. The field description combines the result of fields_get() and postprocess(). :param self: the view to postprocess :param node: the architecture as an etree :param model: the view's reference model name :return: a tuple (arch, fields) where arch is the given node as a string and fields is the description of all the fields. -
render_public_asset(self, template, values=None)@api.readonly@api.model -
reset_arch(self, mode='soft')Reset the view arch to its previous arch (soft) or its XML file arch if exists (hard). -
unlink(self) -
write(self, vals)
-
archTextrequired=Truestring='View Architecture' -
ref_idMany2one → ir.ui.viewindex=Trueondelete='cascade'required=Truestring='Original View' args: 'ir.ui.view' -
user_idMany2one → res.usersindex=Trueondelete='cascade'required=Truestring='User' args: 'res.users'
No public methods.
-
properties_definitionPropertiesDefinitionargs: 'Properties Definition' -
properties_field_idMany2one → ir.model.fieldsondelete='cascade'required=True args: 'ir.model.fields'
-
write(self, vals)
-
propertiesPropertiescopy=Truedefinition='properties_base_definition_id.properties_definition'string='Properties' -
properties_base_definition_idMany2one → properties.base.definitioncompute='_compute_properties_base_definition_id'search='_search_properties_base_definition_id' args: 'properties.base.definition'
-
create(self, vals_list)@api.model_create_multi
No new fields.
Public methods (0)No public methods.
-
imageCharstring='Preview image src' -
nameChar -
pdfCharstring='Preview pdf src' -
sequenceIntegerdefault=50 -
view_idMany2one → ir.ui.viewrequired=True args: 'ir.ui.view', 'Document Template'
No public methods.
-
css_marginsBooleandefault=False args: 'Use css margins' -
defaultBooleanargs: 'Default paper format?' -
disable_shrinkingBooleanargs: 'Disable smart shrinking' -
dpiIntegerdefault=90required=True args: 'Output DPI' -
formatSelectiondefault='A4'help='Select Proper Paper size' args: <expr>, 'Paper size' -
header_lineBooleandefault=False args: 'Display a header line' -
header_spacingIntegerdefault=35 args: 'Header spacing' -
margin_bottomFloatdefault=20 args: 'Bottom Margin (mm)' -
margin_leftFloatdefault=7 args: 'Left Margin (mm)' -
margin_rightFloatdefault=7 args: 'Right Margin (mm)' -
margin_topFloatdefault=40 args: 'Top Margin (mm)' -
nameCharrequired=True args: 'Name' -
orientationSelectiondefault='Landscape' args: [('Landscape', 'Landscape'), ('Portrait', 'Portrait')], 'Orientation' -
page_heightIntegerdefault=False args: 'Page height (mm)' -
page_widthIntegerdefault=False args: 'Page width (mm)' -
print_page_heightFloatcompute='_compute_print_page_size' args: 'Print page height (mm)' -
print_page_widthFloatcompute='_compute_print_page_size' args: 'Print page width (mm)' -
report_idsOne2many → ir.actions.reporthelp='Explicitly associated reports' args: 'ir.actions.report', 'paperformat_id', 'Associated reports'
No public methods.
-
activeBooleandefault=True -
bicCharhelp='Sometimes called BIC or Swift.'index=True args: 'Bank Identifier Code' -
cityChar -
countryMany2one → res.countryargs: 'res.country' -
country_codeCharrelated='country.code'string='Country Code' -
emailChar -
nameCharrequired=True -
phoneChar -
stateMany2one → res.country.statedomain="[('country_id', '=?', country)]" args: 'res.country.state', 'Fed. State' -
streetChar -
street2Char -
zipChar
-
create(self, vals_list)@api.model_create_multi -
write(self, vals)
-
activeBooleandefault=True -
all_child_idsOne2many → res.companycontext={'active_test': False} args: 'res.company', 'parent_id' -
bank_idsOne2manyreadonly=Falserelated='partner_id.bank_ids' -
child_idsOne2many → res.companystring='Branches' args: 'res.company', 'parent_id' -
cityCharcompute='_compute_address'inverse='_inverse_city' -
colorIntegercompute='_compute_color'inverse='_inverse_color' -
company_detailsHtmlhelp='Header text displayed at the top of all reports.'string='Company Details'translate=True -
company_registryCharreadonly=Falserelated='partner_id.company_registry'string='Company ID' -
company_registry_placeholderCharrelated='partner_id.company_registry_placeholder' -
country_codeChardepends=['country_id']related='country_id.code' -
country_idMany2one → res.countrycompute='_compute_address'inverse='_inverse_country'string='Country' args: 'res.country' -
currency_idMany2one → res.currencydefault=<expr>required=Truestring='Currency' args: 'res.currency' -
emailCharreadonly=Falserelated='partner_id.email'store=True -
external_report_layout_idMany2one → ir.ui.viewargs: 'ir.ui.view', 'Document Template' -
fontSelectiondefault='Lato' args: [('Lato', 'Lato'), ('Roboto', 'Roboto'), ('Open_Sans', 'Open Sans'), ('Montserrat', 'Montserrat'), ('Oswald', 'Oswald'), ('Raleway', 'Raleway'), ('Tajawal', 'Tajawal'), ('Fira_Mono', 'Fira Mono')] -
is_company_details_emptyBooleancompute='_compute_empty_company_details' -
layout_backgroundSelectiondefault='Blank'required=True args: [('Blank', 'Blank'), ('Demo logo', 'Demo logo'), ('Custom', 'Custom')] -
layout_background_imageBinaryargs: 'Background Image' -
logoBinarydefault=_get_logoreadonly=Falserelated='partner_id.image_1920'string='Company Logo' -
logo_webBinaryattachment=Falsecompute='_compute_logo_web'store=True -
nameCharreadonly=Falserelated='partner_id.name'required=Truestore=Truestring='Company Name' -
paperformat_idMany2one → report.paperformatdefault=<expr> args: 'report.paperformat', 'Paper format' -
parent_idMany2one → res.companyindex=Trueondelete='restrict'string='Parent Company' args: 'res.company' -
parent_idsMany2many → res.companycompute='_compute_parent_ids'compute_sudo=True args: 'res.company' -
parent_pathCharindex=True -
partner_idMany2one → res.partnerindex=Truerequired=Truestring='Partner' args: 'res.partner' -
phoneCharreadonly=Falserelated='partner_id.phone'store=True -
primary_colorChar -
report_footerHtmlhelp='Footer text displayed at the bottom of all reports.'string='Report Footer'translate=True -
report_headerHtmlhelp="Company tagline, which is included in a printed document's header or footer (depending on the selected layout)."string='Company Tagline'translate=True -
root_idMany2one → res.companycompute='_compute_parent_ids'compute_sudo=True args: 'res.company' -
secondary_colorChar -
sequenceIntegerdefault=10help='Used to order Companies in the company switcher' -
state_idMany2one → res.country.statecompute='_compute_address'domain="[('country_id', '=?', country_id)]"inverse='_inverse_state'string='Fed. State' args: 'res.country.state' -
streetCharcompute='_compute_address'inverse='_inverse_street' -
street2Charcompute='_compute_address'inverse='_inverse_street2' -
uninstalled_l10n_module_idsMany2many → ir.module.modulecompute='_compute_uninstalled_l10n_module_ids' args: 'ir.module.module' -
user_idsMany2many → res.usersstring='Accepted Users' args: 'res.users', 'res_company_users_rel', 'cid', 'user_id' -
uses_default_logoBooleancompute='_compute_uses_default_logo'store=True -
vatCharreadonly=Falserelated='partner_id.vat'string='Tax ID' -
websiteCharreadonly=Falserelated='partner_id.website' -
zipCharcompute='_compute_address'inverse='_inverse_zip'
-
action_all_company_branches(self) -
cache_invalidation_fields(self) -
copy(self, default=None) -
create(self, vals_list)@api.model_create_multi -
init(self) -
install_l10n_modules(self) -
unlink(self)Unlink the companies and clear the cache to make sure that _get_company_ids of res.users gets only existing company ids. -
write(self, vals)
No new fields.
Public methods (7)-
action_cancel(self)Action handler for the ``cancel`` event. That event isn't generated by the res.config.view.base inheritable view, the inherited view has to overload one of the buttons (or add one more). Sets the status of the todo the event was sent from to ``cancel``, calls ``cancel`` and -- unless ``cancel`` returned an action dictionary -- executes the action provided by calling ``next``. -
action_next(self)Action handler for the ``next`` event. Sets the status of the todo the event was sent from to ``done``, calls ``execute`` and -- unless ``execute`` returned an action dictionary -- executes the action provided by calling ``next``. -
action_skip(self)Action handler for the ``skip`` event. Sets the status of the todo the event was sent from to ``skip``, calls ``cancel`` and -- unless ``cancel`` returned an action dictionary -- executes the action provided by calling ``next``. -
cancel(self)Method called when the user click on the ``Skip`` button. ``cancel`` should be overloaded instead of ``action_skip``. As with ``execute``, if it returns an action dictionary that action is executed in stead of the default (going to the next configuration item) The default implementation is a NOOP. ``cancel`` is also called by the default implementation of ``action_cancel``. -
execute(self)Method called when the user clicks on the ``Next`` button. Execute *must* be overloaded unless ``action_next`` is overloaded (which is something you generally don't need to do). If ``execute`` returns an action dictionary, that action is executed rather than just going to the next configuration item. -
next(self)Reload the settings page -
start(self)
No new fields.
Public methods (11)-
action_open_template_user(self) -
cancel(self) -
copy(self, default=None) -
create(self, vals_list)@api.model_create_multi -
default_get(self, fields)@api.model -
execute(self)Called when settings are saved. This method will call `set_values` and will install/uninstall any modules defined by `module_` Boolean fields and then trigger a web client reload. .. warning:: This method **SHOULD NOT** be overridden, in most cases what you want to override is `~set_values()` since `~execute()` does little more than simply call `~set_values()`. The part that installs/uninstalls modules **MUST ALWAYS** be at the end of the transaction, otherwise there's a big risk of registry <-> database desynchronisation. -
get_config_warning(self, msg)@api.modelHelper: return a Warning exception with the given message where the ``%(field:xxx)s`` and/or ``%(menu:yyy)s`` are replaced by the human readable field's name and/or menuitem's full path. Usage: ------ Just include in your error message ``%(field:model_name.field_name)s`` to obtain the human readable field's name, and/or %(menu:module_name.menuitem_xml_id)s to obtain the menuitem's full path. Example of use: --------------- .. code-block:: python raise env['ir..config.settings'](_( "Error: this action is prohibited. You should check the " "field %(field:sale.config.settings.fetchmail_lead)s in " "%(menu:sales_team.menu_sale_config)s.")) This will return an exception containing the following message: Error: this action is prohibited. You should check the field Create leads from incoming mails in Settings/Configuration/Sales. What if there is another substitution in the message already? ------------------------------------------------------------- You could have a situation where the error message you want to upgrade already contains a substitution. Example: Cannot find any account journal of %s type for this company. You can create one in the menu: Configuration/Journals/Journals. What you want to do here is simply to replace the path by ``%menu:account.menu_account_config)s``, and leave the rest alone. In order to do that, you can use the double percent (``%%``) to escape your new substitution, like so: Cannot find any account journal of %s type for this company. You can create one in the %%(menu:account.menu_account_config)s. -
get_option_name(self, full_field_name)@api.modelFetch the human readable name of a specified configuration option. :param string full_field_name: the full name of the field, structured as follows: model_name.field_name (e.g.: "sale.config.settings.fetchmail_lead") :return: human readable name of the field (e.g.: "Create leads from incoming mails") :rtype: str -
get_option_path(self, menu_xml_id)@api.modelFetch the path to a specified configuration view and the action id to access it. :param string menu_xml_id: the xml id of the menuitem where the view is located, structured as follows: module_name.menuitem_xml_id (e.g.: "sales_team.menu_sale_config") :return: a 2-value tuple where - t[0]: string: full path to the menuitem (e.g.: "Settings/Configuration/Sales") - t[1]: int or long: id of the menuitem's action -
get_values(self)@api.modelReturn values for the fields other that `default`, `group` and `module` -
set_values(self)Set values for the fields other that `default`, `group` and `module`
-
address_formatTextdefault='%(street)s\n%(street2)s\n%(city)s %(state_code)s %(zip)s\n%(country_name)s'help="Display format to use for addresses belonging to this country.\n\nYou can use python-style string pattern with all the fields of the address (for example, use '%(street)s' to display the field 'street') plus\n%(state_name)s: the name of the state\n%(state_code)s: the code of the state\n%(country_name)s: the name of the country\n%(country_code)s: the code of the country"string='Layout in Reports' -
address_view_idMany2one → ir.ui.viewcomodel_name='ir.ui.view'domain=[('model', '=', 'res.partner'), ('type', '=', 'form')]help='Use this field if you want to replace the usual way to encode a complete address. Note that the address_format field is used to modify the way to display addresses (in reports for example), while this field is used to modify the input form for addresses.'string='Input View' -
codeCharhelp='The ISO country code in two chars. \nYou can use this field for quick search.'required=Truesize=2string='Country Code' -
country_group_codesJsoncompute='_compute_country_group_codes' -
country_group_idsMany2many → res.country.groupstring='Country Groups' args: 'res.country.group', 'res_country_res_country_group_rel', 'res_country_id', 'res_country_group_id' -
currency_idMany2one → res.currencystring='Currency' args: 'res.currency' -
image_urlCharcompute='_compute_image_url'help='Url of static flag image'string='Flag' -
nameCharrequired=Truestring='Country Name'translate=True -
name_positionSelectiondefault='before'help='Determines where the customer/company name should be placed, i.e. after or before the address.'string='Customer Name Position' args: [('before', 'Before Address'), ('after', 'After Address')] -
phone_codeIntegerstring='Country Calling Code' -
state_idsOne2many → res.country.statestring='States' args: 'res.country.state', 'country_id' -
state_requiredBooleandefault=False -
vat_labelCharhelp='Use this field if you want to change vat label.'prefetch=Truestring='Vat Label'translate=True -
zip_requiredBooleandefault=True
-
create(self, vals_list)@api.model_create_multi -
get_address_fields(self) -
name_search(self, name='', domain=None, operator='ilike', limit=100)@api.model -
unlink(self) -
write(self, vals)
-
codeCharstring='Code' -
country_idsMany2many → res.countrystring='Countries' args: 'res.country', 'res_country_res_country_group_rel', 'res_country_group_id', 'res_country_id' -
nameCharrequired=Truetranslate=True
-
create(self, vals_list)@api.model_create_multi -
write(self, vals)
-
codeCharhelp='The state code.'required=Truestring='State Code' -
country_idMany2one → res.countryindex=Truerequired=Truestring='Country' args: 'res.country' -
nameCharhelp='Administrative divisions of a country. E.g. Fed. State, Department, Canton'required=Truestring='State Name'
-
name_search(self, name='', domain=None, operator='ilike', limit=100)@api.model
-
activeBooleandefault=True -
currency_subunit_labelCharstring='Currency Subunit'translate=True -
currency_unit_labelCharstring='Currency Unit'translate=True -
dateDatecompute='_compute_date' -
decimal_placesIntegercompute='_compute_decimal_places'help='Decimal places taken into account for operations on amounts in this currency. It is determined by the rounding factor.'store=True -
full_nameCharstring='Name' -
inverse_rateFloatcompute='_compute_current_rate'digits=0help='The currency of rate 1 to the rate of the currency.'readonly=True -
is_current_company_currencyBooleancompute='_compute_is_current_company_currency' -
iso_numericIntegerhelp='Currency Numeric Code (ISO 4217).'string='Currency numeric code.' -
nameCharhelp='Currency Code (ISO 4217)'required=Truesize=3string='Currency' -
positionSelectiondefault='after'help='Determines where the currency symbol should be placed after or before the amount.'string='Symbol Position' args: [('after', 'After Amount'), ('before', 'Before Amount')] -
rateFloatcompute='_compute_current_rate'digits=0help='The rate of the currency to the currency of rate 1.'string='Current Rate' -
rate_idsOne2many → res.currency.ratestring='Rates' args: 'res.currency.rate', 'currency_id' -
rate_stringCharcompute='_compute_current_rate' -
roundingFloatdefault=0.01digits=(12, 6)help='Amounts in this currency are rounded off to the nearest multiple of the rounding factor.'string='Rounding Factor' -
symbolCharhelp='Currency sign, to be used when printing amounts.'required=True
-
amount_to_text(self, amount) -
compare_amounts(self, amount1, amount2)Compare ``amount1`` and ``amount2`` after rounding them according to the given currency's precision.. An amount is considered lower/greater than another amount if their rounded value is different. This is not the same as having a non-zero difference! For example 1.432 and 1.431 are equal at 2 digits precision, so this method would return 0. However 0.006 and 0.002 are considered different (returns 1) because they respectively round to 0.01 and 0.0, even though 0.006-0.002 = 0.004 which would be considered zero at 2 digits precision. :param float amount1: first amount to compare :param float amount2: second amount to compare :return: (resp.) -1, 0 or 1, if ``amount1`` is (resp.) lower than, equal to, or greater than ``amount2``, according to ``currency``'s rounding. With the new API, call it like: ``currency.compare_amounts(amount1, amount2)``. -
create(self, vals_list)@api.model_create_multi -
format(self, amount)Return ``amount`` formatted according to ``self``'s rounding rules, symbols and positions. Also take care of removing the minus sign when 0.0 is negative :param float amount: the amount to round :return: formatted str -
get_all_currencies(self)@ormcache(cache='stable')@api.model -
is_zero(self, amount)Returns true if ``amount`` is small enough to be treated as zero according to current currency's rounding rules. Warning: ``is_zero(amount1-amount2)`` is not always equivalent to ``compare_amounts(amount1,amount2) == 0``, as the former will round after computing the difference, while the latter will round before, giving different results for e.g. 0.006 and 0.002 at 2 digits precision. :param float amount: amount to compare with currency's zero With the new API, call it like: ``currency.is_zero(amount)``. -
round(self, amount)Return ``amount`` rounded according to ``self``'s rounding rules. :param float amount: the amount to round :return: rounded float -
unlink(self) -
write(self, vals)
-
company_idMany2one → res.companydefault=<expr>string='Company' args: 'res.company' -
company_rateFloataggregator='avg'compute='_compute_company_rate'digits=0help='The currency of rate 1 to the rate of the currency.'inverse='_inverse_company_rate' -
currency_idMany2one → res.currencyindex=Trueondelete='cascade'readonly=Truerequired=Truestring='Currency' args: 'res.currency' -
inverse_company_rateFloataggregator='avg'compute='_compute_inverse_company_rate'digits=0help='The rate of the currency to the currency of rate 1 'inverse='_inverse_inverse_company_rate' -
nameDatedefault=fields.Date.context_todayindex=Truerequired=Truestring='Date' -
rateFloataggregator='avg'digits=0help='The rate of the currency to the currency of rate 1'string='Technical Rate'
-
create(self, vals_list)@api.model_create_multi -
write(self, vals)
No new fields.
Public methods (2)-
init(self) -
revoke(self)@check_identity
-
browserCharargs: 'Browser' -
cityCharargs: 'City' -
countryCharargs: 'Country' -
device_typeSelectionargs: [('computer', 'Computer'), ('mobile', 'Mobile')], 'Device Type' -
first_activityDatetimeargs: 'First Activity' -
ip_addressCharargs: 'IP Address' -
is_currentBooleancompute='_compute_is_current' args: 'Current Device' -
last_activityDatetimeindex='btree' args: 'Last Activity' -
linked_ip_addressesTextcompute='_compute_linked_ip_addresses' args: 'Linked IP address' -
platformCharargs: 'Platform' -
revokedBooleanhelp='If True, the session file corresponding to this device\n no longer exists on the filesystem.' args: 'Revoked' -
session_identifierCharindex='btree'required=True args: 'Session Identifier' -
user_idMany2one → res.usersindex='btree' args: 'res.users'
No public methods.
-
all_implied_by_idsMany2many → res.groupscompute='_compute_all_implied_by_ids'compute_sudo=Truerecursive=Truesearch='_search_all_implied_by_ids'string='Transitively Implying Groups' args: 'res.groups' -
all_implied_idsMany2many → res.groupscompute='_compute_all_implied_ids'compute_sudo=Truehelp='The group itself with all its implied groups.'recursive=Truesearch='_search_all_implied_ids'string='Transitively Implied Groups' args: 'res.groups' -
all_user_idsMany2many → res.userscompute='_compute_all_user_ids'inverse='_inverse_all_user_ids'search='_search_all_user_ids'string='Users and implied users' args: 'res.users' -
all_users_countIntegercompute='_compute_all_users_count'compute_sudo=Truehelp='Number of users having this group (implicitly or explicitly)' args: '# Users' -
api_key_durationFloathelp='Determines the maximum duration of an api key created by a user belonging to this group.'string='API Keys maximum duration days' -
commentTexttranslate=True -
disjoint_idsMany2many → res.groupscompute='_compute_disjoint_ids'help='A user may not belong to this group and one of those. For instance, users may not be portal users and internal users.'string='Disjoint Groups' args: 'res.groups' -
full_nameCharcompute='_compute_full_name'search='_search_full_name'string='Group Name' -
implied_by_idsMany2many → res.groupshelp='Users in those groups are implicitly part of this group.'string='Implying Groups' args: 'res.groups', 'res_groups_implied_rel', 'hid', 'gid' -
implied_idsMany2many → res.groupshelp='Users of this group are also implicitly part of those groups'string='Implied Groups' args: 'res.groups', 'res_groups_implied_rel', 'gid', 'hid' -
menu_accessMany2many → ir.ui.menustring='Access Menu' args: 'ir.ui.menu', 'ir_ui_menu_group_rel', 'gid', 'menu_id' -
model_accessOne2many → ir.model.accesscopy=Truestring='Access Controls' args: 'ir.model.access', 'group_id' -
nameCharrequired=Truetranslate=True -
privilege_idMany2one → res.groups.privilegeindex=Truestring='Privilege' args: 'res.groups.privilege' -
rule_groupsMany2many → ir.ruledomain="[('global', '=', False)]"string='Rules' args: 'ir.rule', 'rule_group_rel', 'group_id', 'rule_group_id' -
sequenceIntegerstring='Sequence' -
shareBooleanhelp='Group created to set access rights for sharing data with some users.'string='Share Group' -
user_idsMany2many → res.usershelp='Users explicitly in this group' args: 'res.users', 'res_groups_users_rel', 'gid', 'uid' -
view_accessMany2many → ir.ui.viewstring='Views' args: 'ir.ui.view', 'ir_ui_view_group_rel', 'group_id', 'view_id' -
view_group_hierarchyJsoncompute='_compute_view_group_hierarchy'string='Technical field for default group setting'
-
action_show_all_users(self) -
copy_data(self, default=None) -
create(self, vals_list)@api.model_create_multi -
unlink(self) -
write(self, vals)
-
category_idMany2one → ir.module.categoryindex=Truestring='Category' args: 'ir.module.category' -
descriptionTextstring='Description' -
group_idsOne2many → res.groupsstring='Groups' args: 'res.groups', 'privilege_id' -
nameCharrequired=Truestring='Name'translate=True -
placeholderChardefault='No'help='Text that is displayed as placeholder in the selection field of the user form.'string='Placeholder' -
sequenceIntegerdefault=100string='Sequence'
No public methods.
-
activeBoolean -
codeCharhelp='This field is used to set/get locales for user'required=Truestring='Locale Code' -
date_formatSelectiondefault='%m/%d/%Y'required=Trueselection=_get_date_format_selectionstring='Date Format' -
decimal_pointChardefault='.'required=Truestring='Decimal Separator'trim=False -
directionSelectiondefault='ltr'required=True args: [('ltr', 'Left-to-Right'), ('rtl', 'Right-to-Left')] -
flag_imageImageargs: 'Image' -
flag_image_urlCharcompute=_compute_field_flag_image_url -
groupingSelectiondefault='[3,0]'help='The International Grouping will represent 123456789 to be 123,456,789.00; The Indian Grouping will represent 123456789 to be 12,34,56,789.00'required=Truestring='Separator Format' args: [('[3,0]', 'International Grouping'), ('[3,2,0]', 'Indian Grouping')] -
iso_codeCharhelp='This ISO code is the name of po files to use for translations'string='ISO code' -
nameCharrequired=True -
thousands_sepChardefault=','string='Thousands Separator'trim=False -
time_formatSelectiondefault='%H:%M:%S'required=Truestring='Time Format' args: [('%H:%M:%S', '13:00:00'), ('%I:%M:%S %p', ' 1:00:00 PM')] -
url_codeCharhelp='The Lang Code displayed in the URL'required=True args: 'URL Code' -
week_startSelectiondefault='7'required=Truestring='First Day of Week' args: [('1', 'Monday'), ('2', 'Tuesday'), ('3', 'Wednesday'), ('4', 'Thursday'), ('5', 'Friday'), ('6', 'Saturday'), ('7', 'Sunday')]
-
CACHED_FIELDS(self) -> OrderedSet@propertyReturn fields to cache for the active languages Please promise all these fields don't depend on other models and context and are not translated. Warning: Don't add method names of ``dict`` to CACHED_FIELDS for sake of the implementation of LangData -
action_activate_langs(self)Activate the selected languages -
action_unarchive(self) -
copy_data(self, default=None) -
create(self, vals_list)@api.model_create_multi -
format(self, percent: str, value, grouping: bool=False) -> strFormat() will return the language-specific output for float values -
get_installed(self) -> <expr>@api.model@api.readonlyReturn installed languages' (code, name) pairs sorted by name. -
install_lang(self)@api.modelThis method is called from odoo/addons/base/data/res_lang_data.xml to load some language and set it as the default for every partners. The language is set via tools.config by the '_initialize_db' method on the 'db' object. This is a fragile solution and something else should be found. -
unlink(self) -
write(self, vals)
-
activeBooleandefault=True -
active_lang_countIntegercompute='_compute_active_lang_count' -
application_statisticsJsoncompute='_compute_application_statistics'string='Stats' -
barcodeCharcompany_dependent=Truecopy=Falsehelp='Use a barcode to identify this contact.' -
cityChar -
colorIntegerdefault=0string='Color Index' -
commentHtmlstring='Notes' -
commercial_company_nameCharcompute='_compute_commercial_company_name'store=True args: 'Company Name Entity' -
company_nameCharargs: 'Company Name' -
company_registryCharcompute='_compute_company_registry'help='The registry number of the company. Use it if it is different from the Tax ID. It must be unique across all partners of a same country'index='btree_not_null'readonly=Falsestore=Truestring='Company ID' -
company_registry_labelCharcompute='_compute_company_registry_label'string='Company ID Label' -
company_registry_placeholderCharcompute='_compute_company_registry_placeholder' -
company_typeSelectioncompute='_compute_company_type'inverse='_write_company_type'selection=[('person', 'Person'), ('company', 'Company')]string='Company Type' -
complete_nameCharcompute='_compute_complete_name'index=Truestore=True -
contact_addressCharcompute='_compute_contact_address'string='Complete Address' -
country_codeCharrelated='country_id.code'string='Country Code' -
emailChar -
email_formattedCharcompute='_compute_email_formatted'help='Format email address "Name <email@domain>"' args: 'Formatted Email' -
employeeBooleanhelp='Check this box if this contact is an Employee.' -
functionCharstring='Job Position' -
is_companyBooleandefault=Falsehelp='Check if the contact is a company, otherwise it is a person'string='Is a Company' -
is_publicBooleancompute='_compute_is_public'compute_sudo=True -
langSelectioncompute='_compute_lang'help='All the emails and documents sent to this contact will be translated in this language.'readonly=Falsestore=Truestring='Language' args: _lang_get -
nameChardefault_export_compatible=Trueindex=True -
parent_nameCharreadonly=Truerelated='parent_id.name'string='Parent name' -
partner_latitudeFloatdigits=(10, 7)string='Geo Latitude' -
partner_longitudeFloatdigits=(10, 7)string='Geo Longitude' -
partner_shareBooleancompute='_compute_partner_share'help='Either customer (not a user), either shared user. Indicated the current partner is a customer without access or with a limited access created for sharing data.'store=True args: 'Share Partner' -
phoneChar -
refCharindex=Truestring='Reference' -
streetChar -
street2Char -
typeSelectiondefault='contact'string='Address Type' args: [('contact', 'Contact'), ('invoice', 'Invoice'), ('delivery', 'Delivery'), ('other', 'Other')] -
type_address_labelCharcompute='_compute_type_address_label' args: 'Address Type Description' -
tzSelectiondefault=<expr>help='When printing documents and exporting/importing data, time values are computed according to this timezone.\nIf the timezone is not set, UTC (Coordinated Universal Time) is used.\nAnywhere else, time values are computed according to the time offset of your web client.'string='Timezone' args: _tzs -
tz_offsetCharcompute='_compute_tz_offset'string='Timezone offset' -
vatCharhelp="You can use '/' to indicate that the customer has no Tax ID."index=Truestring='Tax ID' -
vat_labelCharcompute='_compute_vat_label'string='Tax ID Label' -
websiteCharargs: 'Website Link' -
zipCharchange_default=True
-
address_get(self, adr_pref=None)Find contacts/addresses of the right type(s) by doing a depth-first-search through descendants within company boundaries (stop at entities flagged ``is_company``) then continuing the search at the ancestors that are within the same company boundaries. Defaults to partners of type ``'default'`` when the exact type is not found, or to the provided partner itself if no type ``'default'`` is found either. -
copy_data(self, default=None) -
create(self, vals_list)@api.model_create_multi -
create_company(self) -
default_get(self, fields)@api.modelAdd the company of the parent as default if we are creating a child partner. -
find_or_create(self, email, assert_valid_email=False)@api.modelFind a partner with the given ``email`` or use :meth:`name_create` to create a new one. :param str email: email-like string, which should contain at least one email, e.g. ``"Raoul Grosbedon <r.g@grosbedon.fr>"`` :param bool assert_valid_email: raise if no valid email is found :return: newly created record -
get_import_templates(self)@api.model -
name_create(self, name)@api.modelOverride of orm's name_create method for partners. The purpose is to handle some basic formats to create partners using the name_create. If only an email address is received and that the regex cannot find a name, the name will have the email value. If 'force_email' key in context: must find the email address. -
onchange_company_type(self)@api.onchange('company_type') -
onchange_parent_id(self)@api.onchange('parent_id') -
open_commercial_entity(self)Utility method used to add an "Open Company" button in partner views -
view_header_get(self, view_id, view_type)@api.model -
write(self, vals)
-
acc_holder_nameCharcompute='_compute_account_holder_name'help='Account holder name, in case it is different than the name of the Account Holder'readonly=Falsestore=Truestring='Account Holder Name' -
acc_numberCharrequired=Truesearch='_search_acc_number' args: 'Account Number' -
acc_typeSelectioncompute='_compute_acc_type'help='Bank account type: Normal or IBAN. Inferred from the bank account number.'selection=<expr>string='Type' -
activeBooleandefault=True -
allow_out_paymentBooleancopy=Falsedefault=Falsehelp='This account can be used for outgoing payments'readonly=False args: 'Send Money' -
bank_bicCharreadonly=Falserelated='bank_id.bic' -
bank_idMany2one → res.bankstring='Bank' args: 'res.bank' -
bank_nameCharreadonly=Falserelated='bank_id.name' -
clearing_numberCharargs: 'Clearing Number' -
colorIntegercompute='_compute_color' -
company_idMany2one → res.companyreadonly=Truerelated='partner_id.company_id'store=True args: 'res.company', 'Company' -
country_codeCharrelated='partner_id.country_code'string='Country Code' -
currency_idMany2one → res.currencystring='Currency' args: 'res.currency' -
noteTextargs: 'Notes' -
partner_idMany2one → res.partnerdomain=['|', ('is_company', '=', True), ('parent_id', '=', False)]index=Trueondelete='cascade'required=True args: 'res.partner', 'Account Holder' -
sanitized_acc_numberCharcompute='_compute_sanitized_acc_number'readonly=Truestore=Truestring='Sanitized Account Number' -
sequenceIntegerdefault=10
-
action_archive_bank(self)Custom archive function because the basic action_archive don't trigger a re-rendering of the page, so the archived value is still visible in the view. -
create(self, vals_list)@api.model_create_multi -
get_supported_account_types(self)@api.model -
retrieve_acc_type(self, acc_number)@api.modelTo be overridden by subclasses in order to support other account_types. -
unlink(self)Instead of deleting a bank account, we want to archive it since we cannot delete bank account that is linked to any entries -
write(self, vals)
-
activeBooleandefault=Truehelp='The active field allows you to hide the category without removing it.' -
colorIntegeraggregator=Falsedefault=_get_default_colorstring='Color' -
nameCharrequired=Truetranslate=True args: 'Name' -
parent_pathCharindex=True
No public methods.
-
activeBooleandefault=True args: 'Active' -
full_nameChartranslate=True args: 'Full Name' -
nameChartranslate=True args: 'Name'
No public methods.
-
accesses_countIntegercompute='_compute_accesses_count'compute_sudo=Truehelp='Number of access rights that apply to the current user' args: '# Access Rights' -
action_idMany2one → ir.actions.actionshelp='If specified, this action will be opened at log on for this user, in addition to the standard menu.'string='Home Action' args: 'ir.actions.actions' -
activeBooleandefault=True -
active_partnerBooleanreadonly=Truerelated='partner_id.active'string='Partner is Active' -
all_group_idsMany2many → res.groupscompute='_compute_all_group_ids'compute_sudo=Truesearch='_search_all_group_ids'string='Groups and implied groups' args: 'res.groups' -
api_key_idsOne2many → res.users.apikeysstring='API Keys' args: 'res.users.apikeys', 'user_id' -
companies_countIntegercompute='_compute_companies_count'string='Number of Companies' -
company_idMany2one → res.companycontext={'user_preference': True}default=<expr>help='The default company for this user.'required=Truestring='Company' args: 'res.company' -
company_idsMany2many → res.companydefault=<expr>string='Companies' args: 'res.company', 'res_company_users_rel', 'user_id', 'cid' -
device_idsOne2many → res.devicestring='User devices' args: 'res.device', 'user_id' -
emailCharinherited=Truereadonly=Falserelated='partner_id.email' -
email_domain_placeholderCharcompute='_compute_email_domain_placeholder' -
group_idsMany2many → res.groupsdefault=<expr>help='Groups explicitly assigned to the user'string='Groups' args: 'res.groups', 'res_groups_users_rel', 'uid', 'gid' -
groups_countIntegercompute='_compute_accesses_count'compute_sudo=Truehelp='Number of groups that apply to the current user' args: '# Groups' -
log_idsOne2many → res.users.logstring='User log entries' args: 'res.users.log', 'create_uid' -
loginCharhelp='Used to log into the system'required=True -
login_dateDatetimereadonly=Falserelated='log_ids.create_date'string='Latest Login' -
nameCharinherited=Truereadonly=Falserelated='partner_id.name' -
new_passwordCharcompute='_compute_password'help="Specify a value only when creating a user or if you're changing the user's password, otherwise leave empty. After a change of password, the user has to login again."inverse='_set_new_password'string='Set Password' -
partner_idMany2one → res.partnerbypass_search_access=Truehelp='Partner-related data of the user'index=Trueondelete='restrict'required=Truestring='Related Partner' args: 'res.partner' -
passwordCharcompute='_compute_password'copy=Falsehelp="Keep empty if you don't want the user to be able to connect on the system."inverse='_set_password' -
phoneCharinherited=Truereadonly=Falserelated='partner_id.phone' -
res_users_settings_idMany2one → res.users.settingscompute='_compute_res_users_settings_id'search='_search_res_users_settings_id'string='Settings' args: 'res.users.settings' -
res_users_settings_idsOne2many → res.users.settingsargs: 'res.users.settings', 'user_id' -
roleSelectioncompute='_compute_role'readonly=Falsestring='Role' args: [('group_user', 'User'), ('group_system', 'Administrator')] -
rules_countIntegercompute='_compute_accesses_count'compute_sudo=Truehelp='Number of record rules that apply to the current user' args: '# Record Rules' -
shareBooleancompute='_compute_share'compute_sudo=Truehelp='External user with limited access, created only for the purpose of sharing data.'store=Truestring='Share User' -
signatureHtmlcompute='_compute_signature'readonly=Falsestore=Truestring='Email Signature' -
tz_offsetCharcompute='_compute_tz_offset'string='Timezone offset' -
view_group_hierarchyJsoncopy=Falsedefault=_default_view_group_hierarchystore=Falsestring='Technical field for user group setting'
-
SELF_READABLE_FIELDS(self)@propertyThe list of fields a user can read on their own user record. In order to add fields, please override this property on model extensions. -
SELF_WRITEABLE_FIELDS(self)@propertyThe list of fields a user can write on their own user record. In order to add fields, please override this property on model extensions. -
action_change_password_wizard(self) -
action_get(self)@api.model -
action_revoke_all_devices(self)@check_identity -
action_show_accesses(self) -
action_show_groups(self) -
action_show_rules(self) -
api_key_wizard(self)@check_identity -
authenticate(self, credential, user_agent_env)Verifies and returns the user ID corresponding to the given ``credential``, or False if there was no matching user. :param dict credential: a dictionary where the `type` key defines the authentication method and additional keys are passed as required per authentication method. For example: - { 'type': 'password', 'login': 'username', 'password': '123456' } - { 'type': 'webauthn', 'webauthn_response': '{json data}' } :param dict user_agent_env: environment dictionary describing any relevant environment attributes :return: auth_info :rtype: dict -
change_password(self, old_passwd, new_passwd)@api.modelChange current user password. Old password must be provided explicitly to prevent hijacking an existing user session, or for cases where the cleartext password is not used to authenticate requests. :return: True :raise: odoo.exceptions.AccessDenied when old password is wrong :raise: odoo.exceptions.UserError when new password is not set or empty -
context_get(self)@api.model@tools.ormcache('self.env.uid') -
copy_data(self, default=None) -
create(self, vals_list)@api.model_create_multi -
fields_get(self, allfields=None, attributes=None)@api.model -
get_company_currency_id(self)@api.model -
has_group(self, group_ext_id: str) -> bool@api.readonlyReturn whether user ``self`` belongs to the given group (given by its fully-qualified external ID). Note that the group ``"base.group_no_one"`` is only effective in debug mode: the method returns ``True`` if the user belongs to the group and the current request is in debug mode. -
has_groups(self, group_spec: str) -> bool@api.readonlyReturn whether user ``self`` satisfies the given group restrictions ``group_spec``, i.e., whether it is member of at least one of the groups, and is not a member of any of the groups preceded by ``!``. Note that the group ``"base.group_no_one"`` is only effective in debug mode, just like method :meth:`~.has_group` does. :param str group_spec: comma-separated list of fully-qualified group external IDs, optionally preceded by ``!``. Example:``"base.group_user,base.group_portal,!base.group_system"``. -
init(self) -
name_search(self, name='', domain=None, operator='ilike', limit=100)@api.model -
on_change_login(self)@api.onchange('login') -
onchange(self, values, field_names, fields_spec) -
onchange_parent_id(self)@api.onchange('parent_id') -
preference_change_password(self)@check_identity -
preference_save(self) -
read(self, fields=None, load='_classic_read') -
write(self, vals)
No new fields.
Public methods (3)-
create(self, vals_list)@api.model_create_multi -
new(self, values=None, origin=None, ref=None)@api.model -
write(self, vals)
-
create_dateDatetimereadonly=True args: 'Creation Date' -
expiration_dateDatetimereadonly=True args: 'Expiration Date' -
nameCharreadonly=Truerequired=True args: 'Description' -
scopeCharreadonly=True args: 'Scope' -
user_idMany2one → res.usersindex=Trueondelete='cascade'readonly=Truerequired=True args: 'res.users'
-
generate(self, key, scope, name, expiration_date)@api.modelGenerate a new API key with an existing API key. The provided `key` must be an existing API key that belongs to the current user. Its scope must be compatible with `scope`. The `expiration_date` must be allowed for the user's group. To renew a key, generate the new one, store it, and then call `revoke` on the previous one. :param str key: an active API key belonging to the current user :param str|None scope: the scope of the key. If None, the key will give access to any rpc. :param str name: the name of the key, mainly intended to be displayed in the UI. :param str|datetime.datetime expiration_date: the expiration date of the key. String values may be either ISO 8601 dates (``"2026-12-30"``) or space-separated datetimes (``"2026-12-30 14:30:00"``). :returns: the key. :rtype: str -
init(self) -
remove(self)@check_identity -
revoke(self, key)@api.modelRevoke an existing API key. If it exists, the `key` will be removed from the server. :param str key: the API key that has to be revoked
-
durationSelectiondefault=<expr>required=Trueselection='_selection_duration'string='Duration' -
expiration_dateDatetimecompute='_compute_expiration_date'readonly=Falsestore=True args: 'Expiration Date' -
nameCharrequired=True args: 'Description'
-
check_access_make_key(self) -
create(self, vals_list)@api.model_create_multi -
make_key(self)@check_identity
-
idId -
keyCharreadonly=True
No public methods.
-
stateSelectiondefault='todo'required=Truestring='State' args: [('todo', 'To Do'), ('done', 'Done'), ('fail', 'Failed')] -
user_idMany2one → res.usersondelete='set null'string='User' args: 'res.users' -
user_id_intIntegercompute='_compute_user_id_int'store=True args: 'User Id'
No public methods.
-
auth_methodSelectiondefault=<expr> args: [('password', 'Password')] -
passwordCharstore=False -
requestChargroups=fields.NO_ACCESSreadonly=True
-
run_check(self)
-
create_uidMany2one → res.usersindex=Truereadonly=Truestring='Created by' args: 'res.users'
No public methods.
-
user_idMany2one → res.usersdomain=[('res_users_settings_id', '=', False)]index=Falseondelete='cascade'required=Truestring='User' args: 'res.users'
-
set_res_users_settings(self, new_settings)
-
arch_diffHtmlcompute='_compute_arch_diff'readonly=Truesanitize_tags=Falsestring='Architecture Diff' -
arch_to_compareTextcompute='_compute_arch_diff' args: 'Arch To Compare To' -
compare_view_idMany2one → ir.ui.viewstring='Compare To View' args: 'ir.ui.view' -
has_diffBooleancompute='_compute_arch_diff' -
reset_modeSelectiondefault='soft'required=Truestring='Reset Mode' args: [('soft', 'Restore previous version (soft reset).'), ('hard', 'Reset to file version (hard reset).'), ('other_view', 'Reset to another view.')] -
view_idMany2one → ir.ui.viewstring='View' args: 'ir.ui.view' -
view_nameCharrelated='view_id.name'string='View Name'
-
default_get(self, fields)@api.model -
reset_view_button(self)
-
action_idMany2one → ir.actions.serverargs: 'ir.actions.server' -
code_diffHtmlcompute='_compute_code_diff'sanitize_tags=False -
current_codeTextreadonly=Truerelated='action_id.code' -
revisionMany2one → ir.actions.server.historydefault=_default_revisiondomain="[('action_id', '=', action_id), ('code', '!=', current_code)]"required=True args: 'ir.actions.server.history'
-
restore_revision(self)
-
menu_idMany2one → ir.ui.menuondelete='cascade'required=Truestring='Parent Menu' args: 'ir.ui.menu' -
nameCharrequired=Truestring='Menu Name'
-
menu_create(self)
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…