Test API

test_new_api
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/test_new_api
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden/Tests
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Denis Ledoux, Xavier Morel, Nicolas Lempereur, Aaron Bohy, Lucas Perais (lpe), Yannick Tivisse, Christophe Monniez, Xavier-Do, Julien Mougenot, Vincent Schippefilt, Achraf (abz), Rémy Voet (ryv), Gorash, Florian Charlier, Hubert Van De Walle, Julien Banken, Vincent Larcin, nda, Victor Piryns (pivi), Antoine Dupuis (andu), Antoine (ande), Chong Wang (cwg), Louis (loti), Sven Fuehr, VAN BOSSUYT Nicolas, Pierre Pulinckx (PIPU), Pierre Pulinckx (pipu), Bastien PIERRE, stra, Krzysztof Magusiak (krma), sagu-odoo, Patrick Stooks, adip-odoo, cro, saurabh, gtsog
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:26:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - web
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
A module to test the API.

Code Analysis

Views touched (19)
XML IDNameModelTypeStatus
category_form category form view test_new_api.category form New
category_tree category list view test_new_api.category list New
compute_editable_form test_new_api.compute_editable.form test_new_api.compute_editable form New
discussion_form discussion form view test_new_api.discussion form New
discussion_form_2 discussion form view test_new_api.discussion form New
discussion_form_3 discussion form view test_new_api.discussion form New
message_form message form view test_new_api.message form New
message_tree message list view test_new_api.message list New
model_parent_form model parent form view test_new_api.model_parent_m2o form New
model_shared_cache_compute_parent_view_form model_shared_cache_compute_parent_view_form test_new_api.model_shared_cache_compute_parent form New
multi_form multi form view test_new_api.multi form New
multi_tree multi list view test_new_api.multi list New
view_model2_some_access Test attrs and groups_sub test_new_api.model2.some_access form New
view_model_all_access Test attrs and groups test_new_api.model.all_access form New
view_model_model_active_field_search Test Active Search test_new_api.model_active_field search New
view_model_model_active_field_tree Test Active List test_new_api.model_active_field list New
view_model_no_access Test attrs and groups test_new_api.model.no_access form New
view_model_some_access Test attrs and groups test_new_api.model.some_access form New
view_model_some_access_tree Test attrs and groups list test_new_api.model.some_access list New
Models touched (128)

New fields (3)
  • float Float
  • float_2 Float
    digits=(16, 2)
  • float_4 Float
    digits=(16, 4)
Public methods (0)

No public methods.

New fields (3)
  • bool_false Boolean
    default=False args: 'b2'
  • bool_true Boolean
    default=True args: 'b1'
  • bool_undefined Boolean
    args: 'b3'
Public methods (0)

No public methods.

New fields (4)
  • link_sibling_id Many2one → test_new_api.any.child
    args: 'test_new_api.any.child'
  • parent_id Many2one → test_new_api.any.parent
    ondelete='cascade' required=True args: 'test_new_api.any.parent'
  • quantity Integer
  • tag_ids Many2many → test_new_api.any.tag
    args: 'test_new_api.any.tag'
Public methods (0)

No public methods.

New fields (2)
  • child_ids One2many → test_new_api.any.child
    args: 'test_new_api.any.child', 'parent_id'
  • name Char
Public methods (0)

No public methods.

New fields (2)
  • child_ids Many2many → test_new_api.any.child
    args: 'test_new_api.any.child'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • name Char
    compute='_compute_name' compute_sudo=True store=True
  • res_id Integer
    required=True
  • res_model Char
    required=True
Public methods (1)
  • modified(self, fnames, *args, **kwargs)

New fields (1)
  • attachment_ids One2many → test_new_api.attachment
    auto_join=True domain=<expr> args: 'test_new_api.attachment', 'res_id'
Public methods (0)

No public methods.

New fields (6)
  • foo Many2one → test_new_api.foo
    compute='_compute_foo' search='_search_foo' args: 'test_new_api.foo'
  • name Char
  • text1 Char
    readonly=False related='foo.text' args: 'Text1'
  • text2 Char
    readonly=False related='foo.text' trim=True args: 'Text2'
  • value1 Integer
    readonly=False related='foo.value1'
  • value2 Integer
    readonly=False related='foo.value2'
Public methods (0)

No public methods.

New fields (4)
  • image_attachment Binary
    attachment=True
  • image_wo_attachment Binary
    attachment=False
  • image_wo_attachment_related Binary
    attachment=False related='image_wo_attachment' store=True args: 'image wo attachment'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar'
  • baz Char
    compute='_compute_baz' store=True
  • foo Char
Public methods (0)

No public methods.

New fields (9)
  • color Integer
    args: 'Color Index'
  • depth Integer
    compute='_compute_depth'
  • discussions Many2many → test_new_api.discussion
    args: 'test_new_api.discussion', 'test_new_api_discussion_category', 'category', 'discussion'
  • display_name Char
    compute='_compute_display_name' inverse='_inverse_display_name' recursive=True search='_search_display_name'
  • dummy Char
    store=False
  • name Char
    required=True
  • parent Many2one → test_new_api.category
    ondelete='cascade' args: 'test_new_api.category'
  • parent_path Char
    index=True
  • root_categ Many2one
    compute='_compute_root_categ' args: _name
Public methods (0)

No public methods.

New fields (2)
  • country_id Many2one → test_new_api.country
    args: 'test_new_api.country'
  • name Char
Public methods (0)

No public methods.

New fields (12)
  • company_id Many2one → res.company
    company_dependent=True args: 'res.company'
  • count Integer
    company_dependent=True
  • date Date
    company_dependent=True
  • foo Char
    company_dependent=True
  • html1 Html
    company_dependent=True sanitize=False
  • html2 Html
    company_dependent=True sanitize_attributes=True strip_classes=True strip_style=True
  • moment Datetime
    company_dependent=True
  • partner_id Many2one → res.partner
    company_dependent=True args: 'res.partner'
  • phi Float
    company_dependent=True digits=(2, 5)
  • tag_id Many2one → test_new_api.multi.tag
    company_dependent=True args: 'test_new_api.multi.tag'
  • text Text
    company_dependent=True
  • truth Boolean
    company_dependent=True
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar' store=True
  • company Many2one → test_new_api.company
    args: 'test_new_api.company'
  • quantity Integer
Public methods (0)

No public methods.

New fields (4)
  • full_name Char
    compute='_compute_full_name'
  • name1 Char
  • name2 Char
  • name3 Char
Public methods (0)

No public methods.

New fields (5)
  • bar Char
    compute='_compute_bar' inverse='_inverse_bar' store=True
  • baz Char
  • child_ids One2many → test_new_api.compute.inverse
    compute='_compute_child_ids' inverse='_inverse_child_ids' store=True args: 'test_new_api.compute.inverse', 'parent_id'
  • foo Char
  • parent_id Many2one → test_new_api.compute.inverse
    args: 'test_new_api.compute.inverse'
Public methods (0)

No public methods.

New fields (7)
  • active Boolean
  • bar Char
    compute='_compute_bar' store=True
  • baz Char
    compute='_compute_baz' readonly=False store=True
  • count Integer
    default=0
  • foo Char
  • line_ids One2many → test_new_api.compute.onchange.line
    compute='_compute_line_ids' readonly=False store=True args: 'test_new_api.compute.onchange.line', 'record_id'
  • tag_ids Many2many → test_new_api.multi.tag
    compute='_compute_tag_ids' readonly=False store=True args: 'test_new_api.multi.tag'
Public methods (1)
  • copy_data(self, default=None)

New fields (3)
  • bar Char
    compute='_compute_bar'
  • foo Char
  • record_id Many2one → test_new_api.compute.onchange
    ondelete='cascade' args: 'test_new_api.compute.onchange'
Public methods (0)

No public methods.

New fields (2)
  • bar Char
    compute='_compute_bar' store=True
  • foo Char
    default=''
Public methods (0)

No public methods.

New fields (2)
  • bar Char
    compute='_compute_bar' readonly=False store=True
  • foo Char
Public methods (0)

No public methods.

New fields (1)
  • name_for_uid Char
    compute='_compute_name_for_uid' compute_sudo=True
Public methods (0)

No public methods.

New fields (5)
  • bar Char
    compute='_compute_bar'
  • bare Char
    compute='_compute_bare' readonly=False
  • bares Char
    compute='_compute_bares' readonly=False store=True
  • bars Char
    compute='_compute_bars' store=True
  • foo Char
Public methods (0)

No public methods.

New fields (5)
  • bar Integer
  • foo Integer
  • name Char
  • sub_bar Integer
  • sub_foo Integer
    compute='_compute_sub_foo'
Public methods (0)

No public methods.

New fields (1)
  • name Char
Public methods (0)

No public methods.

New fields (7)
  • author_id Many2one → test_new_api.person
    args: 'test_new_api.person'
  • lesson_ids One2many → test_new_api.lesson
    args: 'test_new_api.lesson', 'course_id'
  • m2o_reference_id Many2oneReference
    model_field='m2o_reference_model' string='reference to lesson too'
  • m2o_reference_model Char
    string='reference to the model for m2o_reference'
  • name Char
    args: 'Name'
  • private_field Char
    groups='base.group_no_one'
  • reference Reference
    selection='_selection_reference_model' string='reference to lesson'
Public methods (0)

No public methods.

New fields (2)
  • editions One2many → test_new_api.creativework.edition
    domain=[('res_model', '=', _name)] args: 'test_new_api.creativework.edition', 'res_id'
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • name Char
  • res_id Integer
    required=True
  • res_model Char
    readonly=False related='res_model_id.model' store=True
  • res_model_id Many2one → ir.model
    ondelete='cascade' required=True args: 'ir.model'
Public methods (0)

No public methods.

New fields (2)
  • editions One2many → test_new_api.creativework.edition
    domain=[('res_model', '=', _name)] args: 'test_new_api.creativework.edition', 'res_id'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • pirate_id Many2one → test_new_api.pirate
    args: 'test_new_api.pirate'
  • prisoner_id Many2one → test_new_api.prisoner
    args: 'test_new_api.prisoner'
  • ship_id Many2one → test_new_api.ship
    args: 'test_new_api.ship'
Public methods (0)

No public methods.

New fields (12)
  • attributes_definition PropertiesDefinition
    args: 'Message Properties'
  • categories Many2many → test_new_api.category
    args: 'test_new_api.category', 'test_new_api_discussion_category', 'discussion', 'category'
  • emails One2many → test_new_api.emailmessage
    args: 'test_new_api.emailmessage', 'discussion'
  • history Json
    default={'delete_messages': []} args: 'History'
  • important_emails One2many → test_new_api.emailmessage
    domain=[('important', '=', True)] args: 'test_new_api.emailmessage', 'discussion'
  • important_messages One2many → test_new_api.message
    domain=[('important', '=', True)] args: 'test_new_api.message', 'discussion'
  • message_concat Text
    string='Message concatenate'
  • messages One2many → test_new_api.message
    copy=True args: 'test_new_api.message', 'discussion'
  • moderator Many2one → res.users
    args: 'res.users'
  • name Char
    help='Description of discussion.' required=True string='Title'
  • participants Many2many → res.users
    context={'active_test': False} args: 'res.users'
  • very_important_messages One2many → test_new_api.message
    domain=<expr> args: 'test_new_api.message', 'discussion'
Public methods (0)

No public methods.

New fields (1)
  • display_name Char
    compute='_compute_display_name' store=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • active Boolean
    related='message.active' related_sudo=False store=True args: 'Active Message'
  • email_to Char
    args: 'To'
  • message Many2one → test_new_api.message
    ondelete='cascade' required=True args: 'test_new_api.message', 'Message'
Public methods (0)

No public methods.

New fields (3)
  • all_employee_ids One2many → test_new_api.person
    context={'active_test': False} args: 'test_new_api.person', 'employer_id'
  • employee_ids One2many → test_new_api.person
    args: 'test_new_api.person', 'employer_id'
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (1)
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (1)
  • number Integer
    args: 'Number'
Public methods (0)

No public methods.

New fields (1)
  • pArTneR_321_id Many2one → res.partner
    args: 'res.partner'
Public methods (0)

No public methods.

New fields (4)
  • name Char
  • text Char
    trim=False
  • value1 Integer
    change_default=True
  • value2 Integer
Public methods (0)

No public methods.

New fields (1)
  • name Text
    index='trigram' translate=True args: 'Name trigram'
Public methods (0)

No public methods.

New fields (3)
  • model_computed_ids One2many → test_new_api.model_many2one_reference
    compute='_compute_model_computed_ids' string='Models Computed' args: 'test_new_api.model_many2one_reference'
  • model_ids One2many → test_new_api.model_many2one_reference
    string='Models' args: 'test_new_api.model_many2one_reference', 'res_id'
  • model_ids_count Integer
    compute='_compute_model_ids_count' args: 'Count'
Public methods (0)

No public methods.

New fields (6)
  • attendee_ids Many2many → test_new_api.person
    context={'active_test': False} args: 'test_new_api.person', 'lesson_ids'
  • course_id Many2one → test_new_api.course
    args: 'test_new_api.course'
  • date Date
  • name Char
    args: 'Name'
  • teacher_birthdate Date
    related='teacher_id.birthday'
  • teacher_id Many2one → test_new_api.person
    args: 'test_new_api.person'
Public methods (0)

No public methods.

New fields (15)
  • active Boolean
    default=True
  • attributes Properties
    definition='discussion.attributes_definition' string='Properties'
  • author Many2one → res.users
    default=<expr> args: 'res.users'
  • author_partner Many2one → res.partner
    compute='_compute_author_partner' search='_search_author_partner' args: 'res.partner'
  • body Text
    index='trigram'
  • discussion Many2one → test_new_api.discussion
    ondelete='cascade' args: 'test_new_api.discussion'
  • discussion_name Char
    readonly=False related='discussion.name' string='Discussion Name'
  • display_name Char
    compute='_compute_display_name' string='Abstract'
  • double_size Integer
    compute='_compute_double_size'
  • has_important_sibling Boolean
    compute='_compute_has_important_sibling'
  • important Boolean
  • label Char
    translate=True
  • name Char
    compute='_compute_name' store=True string='Title'
  • priority Integer
  • size Integer
    compute='_compute_size' search='_search_size'
Public methods (1)
  • write(self, vals)

New fields (18)
  • amount Monetary
  • comment1 Html
    sanitize=False
  • comment2 Html
    sanitize_attributes=True strip_classes=False
  • comment3 Html
    sanitize_attributes=True strip_classes=True
  • comment4 Html
    sanitize_attributes=True strip_style=True
  • comment5 Html
    sanitize_attributes=False sanitize_overridable=True
  • count Integer
  • currency_id Many2one → res.currency
    default=<expr> args: 'res.currency'
  • date Date
  • foo Char
  • lang Selection
    selection='_get_lang' string='Language'
  • moment Datetime
  • now Datetime
    compute='_compute_now'
  • number Float
    default=3.14 digits=(10, 2)
  • number2 Float
    digits='New API Precision'
  • reference Reference
    selection='_reference_models' string='Related Document'
  • text Text
  • truth Boolean
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • ab Integer
    default=1
  • cd Integer
    default=1 groups='base.group_portal'
  • ef Integer
    default=1
Public methods (1)
  • action_full(self)

New fields (2)
  • ab Integer
    default=1
  • cd Integer
    default=1 groups='base.group_portal'
Public methods (0)

No public methods.

New fields (12)
  • a Integer
  • b Integer
  • c Integer
  • d Integer
    default=1 groups='base.group_erp_manager'
  • e Integer
    default=1 groups='base.group_erp_manager,base.group_multi_company'
  • f Integer
    groups='base.group_erp_manager,base.group_portal'
  • g Integer
    default=1 groups='base.group_erp_manager,base.group_multi_company,!base.group_portal'
  • g_id Many2one → test_new_api.model.all_access
    string='m2o g_id' args: 'test_new_api.model.all_access'
  • h Integer
    default=1 groups='base.group_erp_manager,!base.group_portal'
  • i Integer
    default=1 groups='!base.group_portal'
  • j Integer
    default=1 groups='base.group_portal'
  • k Integer
    default=1 groups='base.group_public'
Public methods (0)

No public methods.

New fields (2)
  • g_d Integer
    related='g_id.d'
  • g_id Many2one → test_new_api.model.some_access
    domain='[("a", "=", g_d)]' args: 'test_new_api.model.some_access'
Public methods (0)

No public methods.

New fields (2)
  • xxx_id Many2one → test_new_api.model2.some_access
    args: 'test_new_api.model2.some_access'
  • xxx_sub_id Many2one
    related='xxx_id.g_id'
Public methods (0)

No public methods.

New fields (3)
  • a_restricted_b_ids Many2many → test_new_api.model_b
    relation='rel_model_a_model_b_1' args: 'test_new_api.model_b'
  • b_restricted_b_ids Many2many → test_new_api.model_b
    ondelete='restrict' relation='rel_model_a_model_b_2' args: 'test_new_api.model_b'
  • name Char
Public methods (0)

No public methods.

New fields (9)
  • active Boolean
    default=True
  • active_children_ids One2many → test_new_api.model_active_field
    context={'active_test': True} args: 'test_new_api.model_active_field', 'parent_id'
  • all_children_ids One2many → test_new_api.model_active_field
    context={'active_test': False} args: 'test_new_api.model_active_field', 'parent_id'
  • all_relatives_ids Many2many → test_new_api.model_active_field
    context={'active_test': False} args: 'test_new_api.model_active_field', 'model_active_field_relatives_rel', 'source_id', 'dest_id'
  • children_ids One2many → test_new_api.model_active_field
    args: 'test_new_api.model_active_field', 'parent_id'
  • name Char
  • parent_active Boolean
    related='parent_id.active' store=True string='Active Parent'
  • parent_id Many2one → test_new_api.model_active_field
    args: 'test_new_api.model_active_field'
  • relatives_ids Many2many → test_new_api.model_active_field
    args: 'test_new_api.model_active_field', 'model_active_field_relatives_rel', 'source_id', 'dest_id'
Public methods (0)

No public methods.

New fields (3)
  • a_restricted_a_ids Many2many → test_new_api.model_a
    ondelete='restrict' relation='rel_model_a_model_b_1' args: 'test_new_api.model_a'
  • b_restricted_a_ids Many2many → test_new_api.model_a
    relation='rel_model_a_model_b_2' args: 'test_new_api.model_a'
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • binary Binary
  • binary_computed Binary
    compute='_compute_binary'
  • binary_related_no_store Binary
    readonly=False related='binary' store=False args: 'Binary Related No Store'
  • binary_related_store Binary
    readonly=False related='binary' store=True args: 'Binary Related Store'
Public methods (0)

No public methods.

New fields (4)
  • company_id Many2one → res.company
    args: 'res.company'
  • name Char
  • parent_id Many2one → test_new_api.model_parent
    check_company=True string='Parent' args: 'test_new_api.model_parent'
  • parent_ids Many2many → test_new_api.model_parent
    check_company=True string='Parents' args: 'test_new_api.model_parent'
Public methods (0)

No public methods.

New fields (5)
  • cost Integer
    compute='_compute_cost' readonly=False store=True
  • name Char
    args: 'Name'
  • parent_id Many2one → test_new_api.model_parent_m2o
    ondelete='cascade' args: 'test_new_api.model_parent_m2o'
  • size1 Integer
    compute='_compute_sizes' store=True
  • size2 Integer
    compute='_compute_sizes' store=True
Public methods (1)
  • write(self, vals)

New fields (3)
  • company_id Many2one → res.company
    args: 'res.company'
  • name Char
  • parent_id Many2one → test_new_api.model_parent
    check_company=False args: 'test_new_api.model_parent'
Public methods (0)

No public methods.

New fields (2)
  • bar Integer
  • foo Char
Public methods (0)

No public methods.

New fields (6)
  • image Image
  • image_128 Image
    max_height=128 max_width=128 args: 'Image 128'
  • image_256 Image
    max_height=256 max_width=256 readonly=False related='image' store=False args: 'Image 256'
  • image_512 Image
    max_height=512 max_width=512 readonly=False related='image' store=True args: 'Image 512'
  • image_64 Image
    attachment=False max_height=64 max_width=64 readonly=False related='image' store=True args: 'Image 64'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (3)
  • const Boolean
    default=True
  • res_id Many2oneReference
    model_field='res_model' args: 'Resource ID'
  • res_model Char
    args: 'Resource Model'
Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • child_ids One2many → test_new_api.model_child_m2o
    string='Children' args: 'test_new_api.model_child_m2o', 'parent_id'
  • cost Integer
    compute='_compute_cost' store=True
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'quux': 'set null'} selection_add=[('quux', 'Quux')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    selection_add=[('ham', 'Ham')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    company_dependent=True args: [('manual', 'Manual'), ('auto', 'Automatic')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    selection_add=[('semi_auto', 'Semi-Automatic')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    store=False args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (2)
  • related_selection Selection
    related='selection_id.my_selection'
  • selection_id Many2one → test_new_api.model_selection_base
    comodel_name='test_new_api.model_selection_base' required=True
Public methods (0)

No public methods.

New fields (2)
  • related_selection Selection
    readonly=False related='selection_id.my_selection'
  • selection_id Many2one → test_new_api.model_selection_base
    comodel_name='test_new_api.model_selection_base' required=True
Public methods (0)

No public methods.

New fields (2)
  • active Boolean
    default=True
  • my_selection Selection
    default='foo' required=True args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'baz': 'set default'} selection_add=[('baz', 'Baz')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'eggs': 'cascade'} selection_add=[('eggs', 'Eggs')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'bacon': 'set bar'} selection_add=[('bacon', 'Bacon')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'pikachu': 'set default', 'eevee': <expr>} selection_add=[('pikachu', 'Pikachu'), ('eevee', 'Eevee')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'knickers': <expr>} selection_add=[('knickers', 'Oh la la')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    default='foo' required=True args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'divinity': 'set default'} selection_add=[('divinity', 'Divinity: Original Sin 2')]
Public methods (1)
  • write(self, vals)

New fields (3)
  • amount Integer
  • parent_id Many2one → test_new_api.model_shared_cache_compute_parent
    args: 'test_new_api.model_shared_cache_compute_parent'
  • user_id Many2one → res.users
    default=<expr> args: 'res.users'
Public methods (0)

No public methods.

New fields (3)
  • line_ids One2many → test_new_api.model_shared_cache_compute_line
    string='Timesheets' args: 'test_new_api.model_shared_cache_compute_line', 'parent_id'
  • name Char
    string='Task Name'
  • total_amount Integer
    compute='_compute_total_amount' compute_sudo=True store=True
Public methods (0)

No public methods.

New fields (3)
  • line_ids One2many → test_new_api.modified.line
    args: 'test_new_api.modified.line', 'modified_id'
  • name Char
    args: 'Name'
  • total_quantity Integer
    compute='_compute_total_quantity'
Public methods (0)

No public methods.

New fields (8)
  • child_ids One2many → test_new_api.modified.line
    args: 'test_new_api.modified.line', 'parent_id'
  • modified_id Many2one → test_new_api.modified
    args: 'test_new_api.modified'
  • modified_name Char
    related='modified_id.name'
  • parent_id Many2one → test_new_api.modified.line
    args: 'test_new_api.modified.line'
  • price Float
  • quantity Integer
  • total_price Float
    compute='_compute_total_quantity' recursive=True
  • total_price_quantity Float
    compute='_compute_total_price_quantity'
Public methods (0)

No public methods.

New fields (2)
  • amount Monetary
    currency_field='base_currency_id'
  • base_currency_id Many2one → res.currency
    args: 'res.currency'
Public methods (0)

No public methods.

New fields (3)
  • monetary_id Many2one → test_new_api.monetary_base
    args: 'test_new_api.monetary_base'
  • x_amount Monetary
    related='monetary_id.amount'
  • x_currency_id Many2one → res.currency
    related='monetary_id.base_currency_id' args: 'res.currency'
Public methods (0)

No public methods.

New fields (2)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • monetary_id Many2one → test_new_api.monetary_base
    ondelete='cascade' required=True args: 'test_new_api.monetary_base'
Public methods (0)

No public methods.

New fields (3)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • line_ids One2many → test_new_api.monetary_order_line
    args: 'test_new_api.monetary_order_line', 'order_id'
  • total Monetary
    compute='_compute_total' store=True
Public methods (0)

No public methods.

New fields (2)
  • order_id Many2one → test_new_api.monetary_order
    ondelete='cascade' required=True args: 'test_new_api.monetary_order'
  • subtotal Float
    digits=(10, 2)
Public methods (0)

No public methods.

New fields (4)
  • amount Monetary
    related='monetary_id.amount'
  • currency_id Many2one → res.currency
    related='monetary_id.base_currency_id' args: 'res.currency'
  • monetary_id Many2one → test_new_api.monetary_base
    args: 'test_new_api.monetary_base'
  • total Monetary
Public methods (0)

No public methods.

New fields (7)
  • line_ids One2many → test_new_api.move_line
    domain=[('visible', '=', True)] args: 'test_new_api.move_line', 'move_id'
  • payment_ids One2many → test_new_api.payment
    args: 'test_new_api.payment', 'move_id'
  • quantity Integer
    compute='_compute_quantity' store=True
  • tag_id Many2one → test_new_api.multi.tag
    args: 'test_new_api.multi.tag'
  • tag_name Char
    related='tag_id.name'
  • tag_repeat Integer
  • tag_string Char
    compute='_compute_tag_string'
Public methods (0)

No public methods.

New fields (3)
  • move_id Many2one → test_new_api.move
    ondelete='cascade' required=True args: 'test_new_api.move'
  • quantity Integer
  • visible Boolean
    default=True
Public methods (0)

No public methods.

New fields (5)
  • lines One2many → test_new_api.multi.line
    args: 'test_new_api.multi.line', 'multi'
  • name Char
    readonly=True related='partner.name'
  • partner Many2one → res.partner
    args: 'res.partner'
  • partners One2many
    related='partner.child_ids'
  • tags Many2many → test_new_api.multi.tag
    domain=[('name', 'ilike', 'a')] args: 'test_new_api.multi.tag'
Public methods (0)

No public methods.

New fields (4)
  • multi Many2one → test_new_api.multi
    ondelete='cascade' args: 'test_new_api.multi'
  • name Char
  • partner Many2one
    related='multi.partner' store=True
  • tags Many2many → test_new_api.multi.tag
    args: 'test_new_api.multi.tag'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • bar1 Char
    compute='_compute_bars' inverse='_inverse_bar1' store=True
  • bar2 Char
    compute='_compute_bars' inverse='_inverse_bar23' store=True
  • bar3 Char
    compute='_compute_bars' inverse='_inverse_bar23' store=True
  • foo Char
    default='' required=True
Public methods (0)

No public methods.

New fields (2)
  • line_ids One2many → test_new_api.one2many.line
    compute='_compute_line_ids' domain=[('count', '>', 0)] readonly=False store=True args: 'test_new_api.one2many.line', 'container_id'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • container_id Many2one → test_new_api.one2many
    required=True args: 'test_new_api.one2many'
  • count Integer
    default=1
  • name Char
Public methods (0)

No public methods.

New fields (1)
  • name Char
    string='Name'
Public methods (0)

No public methods.

New fields (1)
  • move_id Many2one → test_new_api.move
    ondelete='cascade' required=True args: 'test_new_api.move'
Public methods (0)

No public methods.

New fields (5)
  • active Boolean
    default=True
  • birthday Date
  • employer_id Many2one → test_new_api.employer
    args: 'test_new_api.employer'
  • lesson_ids Many2many → test_new_api.lesson
    args: 'test_new_api.lesson', 'course_id'
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (3)
  • activation_date Date
  • login Char
  • person_id Many2one → test_new_api.person
    ondelete='cascade' required=True args: 'test_new_api.person'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    args: 'Name'
  • ship_ids Many2many → test_new_api.ship
    args: 'test_new_api.ship', 'test_new_api_crew', 'pirate_id', 'ship_id'
Public methods (0)

No public methods.

New fields (8)
  • commercial_id Many2one → res.partner
    compute='_compute_commercial_id' precompute=True store=True args: 'res.partner'
  • line_ids One2many → test_new_api.precompute.line
    args: 'test_new_api.precompute.line', 'parent_id'
  • lower Char
    compute='_compute_names' precompute=True store=True
  • lowup Char
    compute='_compute_lowup' precompute=True store=True
  • name Char
    required=True
  • partner_id Many2one → res.partner
    args: 'res.partner'
  • size Integer
    compute='_compute_size' precompute=True store=True
  • upper Char
    compute='_compute_names' precompute=True store=True
Public methods (0)

No public methods.

New fields (4)
  • editer Char
    compute='_compute_editer' precompute=True readonly=False store=True
  • name Char
  • reader Char
    compute='_compute_reader' precompute=True store=True
  • setter Char
    compute='_compute_setter' inverse='_inverse_setter' precompute=True store=True
Public methods (0)

No public methods.

New fields (4)
  • bar Char
    compute='_compute_bar' precompute=True readonly=False store=True
  • baz Char
    compute='_compute_baz' precompute=True readonly=False store=True
  • baz2 Char
    compute='_compute_baz2' precompute=True store=True
  • foo Char
Public methods (0)

No public methods.

New fields (3)
  • name Char
    required=True
  • parent_id Many2one → test_new_api.precompute
    args: 'test_new_api.precompute'
  • size Integer
    compute='_compute_size' precompute=True store=True
Public methods (0)

No public methods.

New fields (2)
  • amount Monetary
    compute='_compute_amount' precompute=True store=True
  • currency_id Many2one → res.currency
    compute='_compute_currency_id' precompute=True store=True args: 'res.currency'
Public methods (0)

No public methods.

New fields (4)
  • bar Char
    compute='_compute_bar' precompute=True readonly=True store=True
  • baz Char
    compute='_compute_baz' precompute=True readonly=False store=True
  • foo Char
  • state Selection
    default='draft' args: [('draft', 'Draft'), ('confirmed', 'Confirmed')]
Public methods (0)

No public methods.

New fields (2)
  • name Char
    precompute=True related='partner_id.name' required=True store=True
  • partner_id Many2one → res.partner
    required=True args: 'res.partner'
Public methods (0)

No public methods.

New fields (11)
  • description Char
    translate=True args: 'Description'
  • gretel Char
    prefetch='Hansel and Gretel' args: 'Gretel'
  • hansel Integer
    prefetch='Hansel and Gretel' args: 'Hansel'
  • harry Integer
    prefetch='Harry Potter' args: 'Harry Potter'
  • hermione Char
    prefetch='Harry Potter' args: 'Hermione Granger'
  • html_description Html
    translate=True args: 'Styled description'
  • line_ids One2many → test_new_api.prefetch.line
    args: 'test_new_api.prefetch.line', 'prefetch_id'
  • name Char
    translate=True args: 'Name'
  • rare_description Char
    prefetch=False translate=True args: 'Rare Description'
  • rare_html_description Html
    prefetch=False translate=True args: 'Rare Styled description'
  • ron Float
    prefetch='Harry Potter' args: 'Ron Weasley'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    args: 'Name'
  • ship_ids Many2many → test_new_api.ship
    args: 'test_new_api.ship', 'test_new_api_crew', 'prisoner_id', 'ship_id'
Public methods (0)

No public methods.

New fields (5)
  • context_dependent_name Char
    compute='_compute_context_dependent_name' recursive=True
  • display_name Char
    compute='_compute_display_name' recursive=True store=True
  • full_name Char
    compute='_compute_full_name' recursive=True
  • name Char
    required=True
  • parent Many2one → test_new_api.recursive
    ondelete='cascade' args: 'test_new_api.recursive'
Public methods (0)

No public methods.

New fields (4)
  • children_ids One2many → test_new_api.recursive.tree
    args: 'test_new_api.recursive.tree', 'parent_id'
  • display_name Char
    compute='_compute_display_name' recursive=True store=True
  • name Char
    required=True
  • parent_id Many2one → test_new_api.recursive.tree
    ondelete='cascade' args: 'test_new_api.recursive.tree'
Public methods (0)

No public methods.

New fields (17)
  • foo_bar_id Many2one
    related='foo_id.bar_id' related_sudo=False string='foo_bar_id'
  • foo_bar_id_name Char
    related='foo_bar_id.name' related_sudo=False args: 'foo_bar_id_name'
  • foo_bar_name Char
    related='foo_id.bar_id.name' related_sudo=False args: 'foo_bar_name'
  • foo_bar_name_sudo Char
    related='foo_id.bar_id.name' related_sudo=True args: 'foo_bar_name_sudo'
  • foo_bar_sudo_id Many2one
    related='foo_id.bar_id' related_sudo=True string='foo_bar_sudo_id'
  • foo_bar_sudo_id_name Char
    related='foo_bar_sudo_id.name' related_sudo=False args: 'foo_bar_sudo_id_name'
  • foo_float_id Float
    related='foo_id.test_float'
  • foo_id Many2one → test_new_api.related_foo
    args: 'test_new_api.related_foo'
  • foo_id_bar_name Char
    related='foo_id.bar_name' related_sudo=False args: 'foo_id_bar_name'
  • foo_name Char
    related='foo_id.name' related_sudo=False args: 'foo_name'
  • foo_name_sudo Char
    related='foo_id.name' related_sudo=True args: 'foo_name_sudo'
  • message Many2one → test_new_api.message
    args: 'test_new_api.message'
  • message_currency Many2one
    related='message.author' string='Message Author'
  • message_name Text
    related='message.body' related_sudo=False string='Message Body'
  • name Char
  • related_name Char
    readonly=False related='name' string='A related on Name'
  • related_related_name Char
    readonly=False related='related_name' string='A related on a related on Name'
Public methods (0)

No public methods.

New fields (2)
  • html Html
    translate=html_translate args: 'HTML'
  • name Char
    translate=True args: 'Name'
Public methods (0)

No public methods.

New fields (6)
  • computed_html Char
    compute='_compute_html' args: 'HTML Computed'
  • computed_name Char
    compute='_compute_name' args: 'Name Computed'
  • html Html
    readonly=False related='related_id.html' args: 'HTML Related'
  • name Char
    readonly=False related='related_id.name' args: 'Name Related'
  • name_en Char
    compute='_compute_name_en' args: 'Name EN'
  • related_id Many2one → test_new_api.related_translation_1
    string='Parent Model' args: 'test_new_api.related_translation_1'
Public methods (0)

No public methods.

New fields (3)
  • html Html
    readonly=False related='related_id.html' args: 'HTML Related'
  • name Char
    readonly=False related='related_id.name' args: 'Name Related'
  • related_id Many2one → test_new_api.related_translation_2
    string='Parent Model' args: 'test_new_api.related_translation_2'
Public methods (0)

No public methods.

New fields (2)
  • bar Many2one → res.country
    required=True args: 'res.country'
  • foo Many2one → res.currency
    ondelete='cascade' required=True args: 'res.currency'
Public methods (0)

No public methods.

New fields (2)
  • bar Many2one → res.country
    required=True args: 'res.country'
  • foo Many2one → res.currency
    ondelete='restrict' required=True args: 'res.currency'
Public methods (0)

No public methods.

New fields (2)
  • other Selection
    args: [('foo', 'Foo'), ('bar', 'Bar')]
  • state Selection
    args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (3)
  • name Char
    args: 'Name'
  • pirate_ids Many2many → test_new_api.pirate
    args: 'test_new_api.pirate', 'test_new_api_crew', 'ship_id', 'pirate_id'
  • prisoner_ids Many2many → test_new_api.prisoner
    args: 'test_new_api.prisoner', 'test_new_api_crew', 'ship_id', 'prisoner_id'
Public methods (0)

No public methods.

New fields (1)
  • state Selection
    args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('done', 'Done')]
Public methods (0)

No public methods.

New fields (3)
  • member_ids One2many → test_new_api.team.member
    args: 'test_new_api.team.member', 'team_id'
  • name Char
  • parent_id Many2one → test_new_api.team
    args: 'test_new_api.team'
Public methods (0)

No public methods.

New fields (3)
  • name Char
    args: 'Name'
  • parent_id Many2one → test_new_api.team
    related='team_id.parent_id' args: 'test_new_api.team'
  • team_id Many2one → test_new_api.team
    args: 'test_new_api.team'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • middle_ids One2many → test_new_api.trigger.middle
    args: 'test_new_api.trigger.middle', 'left_id'
  • right_id Many2one
    related='middle_ids.right_id' store=True
Public methods (0)

No public methods.

New fields (2)
  • left_id Many2one → test_new_api.trigger.left
    required=True args: 'test_new_api.trigger.left'
  • right_id Many2one → test_new_api.trigger.right
    required=True args: 'test_new_api.trigger.right'
Public methods (0)

No public methods.

New fields (2)
  • left_ids One2many → test_new_api.trigger.left
    args: 'test_new_api.trigger.left', 'right_id'
  • left_size Integer
    compute='_compute_left_size' store=True
Public methods (0)

No public methods.

New fields (4)
  • child_ids One2many → test_new_api.unsearchable.o2m
    args: 'test_new_api.unsearchable.o2m', 'parent_id'
  • name Char
    args: 'Name'
  • parent_id Many2one → test_new_api.unsearchable.o2m
    compute='_compute_parent_id' store=False args: 'test_new_api.unsearchable.o2m'
  • stored_parent_id Many2one → test_new_api.unsearchable.o2m
    store=True args: 'test_new_api.unsearchable.o2m'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/test_new_api
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden/Tests
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Martin Trigaux, Thibault Delavallée, Denis Ledoux, Nicolas Lempereur, Géry Debongnie, Aaron Bohy, Lucas Perais (lpe), Yannick Tivisse, Romain Derie, Christophe Monniez, Jorge Pinna Puissant, Julien Castiaux, Aurélien Warnon, Xavier-Do, Joseph Caburnay, Vincent Schippefilt, std-odoo, Nasreddin Boulif (bon), Rémy Voet (ryv), Gorash, Pierre Paridans, Romain Estievenart, Yolann Sabaux, Abdelouahab (abla), gawa-odoo, Julien Banken, Louis Wicket (wil), Adrien Widart (awt), nda, Pierre-Yves Dufays, Antoine (ande), Michael (mcm), Chong Wang (cwg), tong-odoo, Ivan Rasputin, Louis (loti), Pierre Pulinckx (pipu), Krzysztof Magusiak (krma), cro, saurabh
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - web
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
A module to test the API.

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
category_form category form view test_new_api.category form New
category_tree category tree view test_new_api.category tree New
compute_editable_form test_new_api.compute_editable.form test_new_api.compute_editable form New
discussion_form discussion form view test_new_api.discussion form New
discussion_form_2 discussion form view test_new_api.discussion form New
discussion_form_3 discussion form view test_new_api.discussion form New
message_form message form view test_new_api.message form New
message_tree message tree view test_new_api.message tree New
model_parent_form model parent form view test_new_api.model_parent_m2o form New
model_shared_cache_compute_parent_view_form model_shared_cache_compute_parent_view_form test_new_api.model_shared_cache_compute_parent form New
multi_form multi form view test_new_api.multi form New
multi_tree multi tree view test_new_api.multi tree New
Models touched (118)

New fields (3)
  • float Float
  • float_2 Float
    digits=(16, 2)
  • float_4 Float
    digits=(16, 4)
Public methods (0)

No public methods.

New fields (3)
  • bool_false Boolean
    default=False args: 'b2'
  • bool_true Boolean
    default=True args: 'b1'
  • bool_undefined Boolean
    args: 'b3'
Public methods (0)

No public methods.

New fields (4)
  • link_sibling_id Many2one → test_new_api.any.child
    args: 'test_new_api.any.child'
  • parent_id Many2one → test_new_api.any.parent
    ondelete='cascade' required=True args: 'test_new_api.any.parent'
  • quantity Integer
  • tag_ids Many2many → test_new_api.any.tag
    args: 'test_new_api.any.tag'
Public methods (0)

No public methods.

New fields (2)
  • child_ids One2many → test_new_api.any.child
    args: 'test_new_api.any.child', 'parent_id'
  • name Char
Public methods (0)

No public methods.

New fields (2)
  • child_ids Many2many → test_new_api.any.child
    args: 'test_new_api.any.child'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • name Char
    compute='_compute_name' compute_sudo=True store=True
  • res_id Integer
    required=True
  • res_model Char
    required=True
Public methods (1)
  • modified(self, fnames, *args, **kwargs)

New fields (1)
  • attachment_ids One2many → test_new_api.attachment
    auto_join=True domain=<expr> args: 'test_new_api.attachment', 'res_id'
Public methods (0)

No public methods.

New fields (6)
  • foo Many2one → test_new_api.foo
    compute='_compute_foo' search='_search_foo' args: 'test_new_api.foo'
  • name Char
  • text1 Char
    readonly=False related='foo.text' args: 'Text1'
  • text2 Char
    readonly=False related='foo.text' trim=True args: 'Text2'
  • value1 Integer
    readonly=False related='foo.value1'
  • value2 Integer
    readonly=False related='foo.value2'
Public methods (0)

No public methods.

New fields (4)
  • image_attachment Binary
    attachment=True
  • image_wo_attachment Binary
    attachment=False
  • image_wo_attachment_related Binary
    attachment=False related='image_wo_attachment' store=True args: 'image wo attachment'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar'
  • baz Char
    compute='_compute_baz' store=True
  • foo Char
Public methods (0)

No public methods.

New fields (9)
  • color Integer
    args: 'Color Index'
  • depth Integer
    compute='_compute_depth'
  • discussions Many2many → test_new_api.discussion
    args: 'test_new_api.discussion', 'test_new_api_discussion_category', 'category', 'discussion'
  • display_name Char
    compute='_compute_display_name' inverse='_inverse_display_name' recursive=True
  • dummy Char
    store=False
  • name Char
    required=True
  • parent Many2one → test_new_api.category
    ondelete='cascade' args: 'test_new_api.category'
  • parent_path Char
    index=True unaccent=False
  • root_categ Many2one
    compute='_compute_root_categ' args: _name
Public methods (0)

No public methods.

New fields (2)
  • country_id Many2one → test_new_api.country
    args: 'test_new_api.country'
  • name Char
Public methods (0)

No public methods.

New fields (9)
  • count Integer
    company_dependent=True
  • date Date
    company_dependent=True
  • foo Char
    company_dependent=True
  • html1 Html
    company_dependent=True sanitize=False
  • html2 Html
    company_dependent=True sanitize_attributes=True strip_classes=True strip_style=True
  • moment Datetime
    company_dependent=True
  • phi Float
    company_dependent=True digits=(2, 5)
  • tag_id Many2one → test_new_api.multi.tag
    company_dependent=True args: 'test_new_api.multi.tag'
  • truth Boolean
    company_dependent=True
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar' store=True
  • company Many2one → test_new_api.company
    args: 'test_new_api.company'
  • quantity Integer
Public methods (0)

No public methods.

New fields (4)
  • full_name Char
    compute='_compute_full_name'
  • name1 Char
  • name2 Char
  • name3 Char
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar' inverse='_inverse_bar' store=True
  • baz Char
  • foo Char
Public methods (0)

No public methods.

New fields (7)
  • active Boolean
  • bar Char
    compute='_compute_bar' store=True
  • baz Char
    compute='_compute_baz' readonly=False store=True
  • count Integer
    default=0
  • foo Char
  • line_ids One2many → test_new_api.compute.onchange.line
    compute='_compute_line_ids' readonly=False store=True args: 'test_new_api.compute.onchange.line', 'record_id'
  • tag_ids Many2many → test_new_api.multi.tag
    compute='_compute_tag_ids' readonly=False store=True args: 'test_new_api.multi.tag'
Public methods (1)
  • copy(self, default=None)

New fields (3)
  • bar Char
    compute='_compute_bar'
  • foo Char
  • record_id Many2one → test_new_api.compute.onchange
    ondelete='cascade' args: 'test_new_api.compute.onchange'
Public methods (0)

No public methods.

New fields (2)
  • bar Char
    compute='_compute_bar' store=True
  • foo Char
    default=''
Public methods (0)

No public methods.

New fields (2)
  • bar Char
    compute='_compute_bar' readonly=False store=True
  • foo Char
Public methods (0)

No public methods.

New fields (5)
  • bar Char
    compute='_compute_bar'
  • bare Char
    compute='_compute_bare' readonly=False
  • bares Char
    compute='_compute_bares' readonly=False store=True
  • bars Char
    compute='_compute_bars' store=True
  • foo Char
Public methods (0)

No public methods.

New fields (1)
  • name Char
Public methods (0)

No public methods.

New fields (7)
  • author_id Many2one → test_new_api.person
    args: 'test_new_api.person'
  • lesson_ids One2many → test_new_api.lesson
    args: 'test_new_api.lesson', 'course_id'
  • m2o_reference_id Many2oneReference
    model_field='m2o_reference_model' string='reference to lesson too'
  • m2o_reference_model Char
    string='reference to the model for m2o_reference'
  • name Char
    args: 'Name'
  • private_field Char
    groups='base.group_no_one'
  • reference Reference
    selection='_selection_reference_model' string='reference to lesson'
Public methods (0)

No public methods.

New fields (2)
  • editions One2many → test_new_api.creativework.edition
    domain=[('res_model', '=', _name)] args: 'test_new_api.creativework.edition', 'res_id'
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • name Char
  • res_id Integer
    required=True
  • res_model Char
    readonly=False related='res_model_id.model' store=True
  • res_model_id Many2one → ir.model
    ondelete='cascade' required=True args: 'ir.model'
Public methods (0)

No public methods.

New fields (2)
  • editions One2many → test_new_api.creativework.edition
    domain=[('res_model', '=', _name)] args: 'test_new_api.creativework.edition', 'res_id'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • pirate_id Many2one → test_new_api.pirate
    args: 'test_new_api.pirate'
  • prisoner_id Many2one → test_new_api.prisoner
    args: 'test_new_api.prisoner'
  • ship_id Many2one → test_new_api.ship
    args: 'test_new_api.ship'
Public methods (0)

No public methods.

New fields (12)
  • attributes_definition PropertiesDefinition
    args: 'Message Properties'
  • categories Many2many → test_new_api.category
    args: 'test_new_api.category', 'test_new_api_discussion_category', 'discussion', 'category'
  • emails One2many → test_new_api.emailmessage
    args: 'test_new_api.emailmessage', 'discussion'
  • history Json
    default={'delete_messages': []} args: 'History'
  • important_emails One2many → test_new_api.emailmessage
    domain=[('important', '=', True)] args: 'test_new_api.emailmessage', 'discussion'
  • important_messages One2many → test_new_api.message
    domain=[('important', '=', True)] args: 'test_new_api.message', 'discussion'
  • message_concat Text
    string='Message concatenate'
  • messages One2many → test_new_api.message
    copy=True args: 'test_new_api.message', 'discussion'
  • moderator Many2one → res.users
    args: 'res.users'
  • name Char
    help='Description of discussion.' required=True string='Title'
  • participants Many2many → res.users
    context={'active_test': False} args: 'res.users'
  • very_important_messages One2many → test_new_api.message
    domain=<expr> args: 'test_new_api.message', 'discussion'
Public methods (0)

No public methods.

New fields (1)
  • display_name Char
    compute='_compute_display_name' store=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • active Boolean
    related='message.active' related_sudo=False store=True args: 'Active Message'
  • email_to Char
    args: 'To'
  • message Many2one → test_new_api.message
    ondelete='cascade' required=True args: 'test_new_api.message', 'Message'
Public methods (0)

No public methods.

New fields (3)
  • all_employee_ids One2many → test_new_api.person
    context={'active_test': False} args: 'test_new_api.person', 'employer_id'
  • employee_ids One2many → test_new_api.person
    args: 'test_new_api.person', 'employer_id'
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (1)
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (1)
  • pArTneR_321_id Many2one → res.partner
    args: 'res.partner'
Public methods (0)

No public methods.

New fields (4)
  • name Char
  • text Char
    trim=False
  • value1 Integer
    change_default=True
  • value2 Integer
Public methods (0)

No public methods.

New fields (1)
  • name Text
    index='trigram' translate=True args: 'Name trigram'
Public methods (0)

No public methods.

New fields (3)
  • model_computed_ids One2many → test_new_api.model_many2one_reference
    compute='_compute_model_computed_ids' string='Models Computed' args: 'test_new_api.model_many2one_reference'
  • model_ids One2many → test_new_api.model_many2one_reference
    string='Models' args: 'test_new_api.model_many2one_reference', 'res_id'
  • model_ids_count Integer
    compute='_compute_model_ids_count' args: 'Count'
Public methods (0)

No public methods.

New fields (5)
  • attendee_ids Many2many → test_new_api.person
    context={'active_test': False} args: 'test_new_api.person', 'lesson_ids'
  • course_id Many2one → test_new_api.course
    args: 'test_new_api.course'
  • date Date
  • name Char
    args: 'Name'
  • teacher_id Many2one → test_new_api.person
    args: 'test_new_api.person'
Public methods (0)

No public methods.

New fields (15)
  • active Boolean
    default=True
  • attributes Properties
    definition='discussion.attributes_definition' string='Properties'
  • author Many2one → res.users
    default=<expr> args: 'res.users'
  • author_partner Many2one → res.partner
    compute='_compute_author_partner' search='_search_author_partner' args: 'res.partner'
  • body Text
    index='trigram'
  • discussion Many2one → test_new_api.discussion
    ondelete='cascade' args: 'test_new_api.discussion'
  • discussion_name Char
    readonly=False related='discussion.name' string='Discussion Name'
  • display_name Char
    compute='_compute_display_name' string='Abstract'
  • double_size Integer
    compute='_compute_double_size'
  • has_important_sibling Boolean
    compute='_compute_has_important_sibling'
  • important Boolean
  • label Char
    translate=True
  • name Char
    compute='_compute_name' store=True string='Title'
  • priority Integer
  • size Integer
    compute='_compute_size' search='_search_size'
Public methods (1)
  • write(self, vals)

New fields (14)
  • amount Monetary
  • comment1 Html
    sanitize=False
  • comment2 Html
    sanitize_attributes=True strip_classes=False
  • comment3 Html
    sanitize_attributes=True strip_classes=True
  • comment4 Html
    sanitize_attributes=True strip_style=True
  • comment5 Html
    sanitize_attributes=False sanitize_overridable=True
  • currency_id Many2one → res.currency
    default=<expr> args: 'res.currency'
  • date Date
  • lang Selection
    selection='_get_lang' string='Language'
  • moment Datetime
  • now Datetime
    compute='_compute_now'
  • number Float
    default=3.14 digits=(10, 2)
  • number2 Float
    digits='New API Precision'
  • reference Reference
    selection='_reference_models' string='Related Document'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • a_restricted_b_ids Many2many → test_new_api.model_b
    relation='rel_model_a_model_b_1' args: 'test_new_api.model_b'
  • b_restricted_b_ids Many2many → test_new_api.model_b
    ondelete='restrict' relation='rel_model_a_model_b_2' args: 'test_new_api.model_b'
  • name Char
Public methods (0)

No public methods.

New fields (7)
  • active Boolean
    default=True
  • active_children_ids One2many → test_new_api.model_active_field
    context={'active_test': True} args: 'test_new_api.model_active_field', 'parent_id'
  • all_children_ids One2many → test_new_api.model_active_field
    context={'active_test': False} args: 'test_new_api.model_active_field', 'parent_id'
  • children_ids One2many → test_new_api.model_active_field
    args: 'test_new_api.model_active_field', 'parent_id'
  • name Char
  • parent_active Boolean
    related='parent_id.active' store=True string='Active Parent'
  • parent_id Many2one → test_new_api.model_active_field
    args: 'test_new_api.model_active_field'
Public methods (0)

No public methods.

New fields (3)
  • a_restricted_a_ids Many2many → test_new_api.model_a
    ondelete='restrict' relation='rel_model_a_model_b_1' args: 'test_new_api.model_a'
  • b_restricted_a_ids Many2many → test_new_api.model_a
    relation='rel_model_a_model_b_2' args: 'test_new_api.model_a'
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • binary Binary
  • binary_computed Binary
    compute='_compute_binary'
  • binary_related_no_store Binary
    readonly=False related='binary' store=False args: 'Binary Related No Store'
  • binary_related_store Binary
    readonly=False related='binary' store=True args: 'Binary Related Store'
Public methods (0)

No public methods.

New fields (4)
  • company_id Many2one → res.company
    args: 'res.company'
  • name Char
  • parent_id Many2one → test_new_api.model_parent
    check_company=True string='Parent' args: 'test_new_api.model_parent'
  • parent_ids Many2many → test_new_api.model_parent
    check_company=True string='Parents' args: 'test_new_api.model_parent'
Public methods (0)

No public methods.

New fields (5)
  • cost Integer
    compute='_compute_cost' readonly=False store=True
  • name Char
    args: 'Name'
  • parent_id Many2one → test_new_api.model_parent_m2o
    ondelete='cascade' args: 'test_new_api.model_parent_m2o'
  • size1 Integer
    compute='_compute_sizes' store=True
  • size2 Integer
    compute='_compute_sizes' store=True
Public methods (1)
  • write(self, vals)

New fields (3)
  • company_id Many2one → res.company
    args: 'res.company'
  • name Char
  • parent_id Many2one → test_new_api.model_parent
    check_company=False args: 'test_new_api.model_parent'
Public methods (0)

No public methods.

New fields (2)
  • bar Integer
  • foo Char
Public methods (0)

No public methods.

New fields (6)
  • image Image
  • image_128 Image
    max_height=128 max_width=128 args: 'Image 128'
  • image_256 Image
    max_height=256 max_width=256 readonly=False related='image' store=False args: 'Image 256'
  • image_512 Image
    max_height=512 max_width=512 readonly=False related='image' store=True args: 'Image 512'
  • image_64 Image
    attachment=False max_height=64 max_width=64 readonly=False related='image' store=True args: 'Image 64'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (3)
  • const Boolean
    default=True
  • res_id Many2oneReference
    model_field='res_model' args: 'Resource ID'
  • res_model Char
    args: 'Resource Model'
Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • child_ids One2many → test_new_api.model_child_m2o
    string='Children' args: 'test_new_api.model_child_m2o', 'parent_id'
  • cost Integer
    compute='_compute_cost' store=True
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'quux': 'set null'} selection_add=[('quux', 'Quux')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    selection_add=[('ham', 'Ham')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    store=False args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (2)
  • related_selection Selection
    related='selection_id.my_selection'
  • selection_id Many2one → test_new_api.model_selection_base
    comodel_name='test_new_api.model_selection_base' required=True
Public methods (0)

No public methods.

New fields (2)
  • related_selection Selection
    readonly=False related='selection_id.my_selection'
  • selection_id Many2one → test_new_api.model_selection_base
    comodel_name='test_new_api.model_selection_base' required=True
Public methods (0)

No public methods.

New fields (2)
  • active Boolean
    default=True
  • my_selection Selection
    default='foo' required=True args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'baz': 'set default'} selection_add=[('baz', 'Baz')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'eggs': 'cascade'} selection_add=[('eggs', 'Eggs')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'bacon': 'set bar'} selection_add=[('bacon', 'Bacon')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'pikachu': 'set default', 'eevee': <expr>} selection_add=[('pikachu', 'Pikachu'), ('eevee', 'Eevee')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'knickers': <expr>} selection_add=[('knickers', 'Oh la la')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    default='foo' required=True args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'divinity': 'set default'} selection_add=[('divinity', 'Divinity: Original Sin 2')]
Public methods (1)
  • write(self, vals)

New fields (3)
  • amount Integer
  • parent_id Many2one → test_new_api.model_shared_cache_compute_parent
    args: 'test_new_api.model_shared_cache_compute_parent'
  • user_id Many2one → res.users
    default=<expr> args: 'res.users'
Public methods (0)

No public methods.

New fields (3)
  • line_ids One2many → test_new_api.model_shared_cache_compute_line
    string='Timesheets' args: 'test_new_api.model_shared_cache_compute_line', 'parent_id'
  • name Char
    string='Task Name'
  • total_amount Integer
    compute='_compute_total_amount' compute_sudo=True store=True
Public methods (0)

No public methods.

New fields (3)
  • line_ids One2many → test_new_api.modified.line
    args: 'test_new_api.modified.line', 'modified_id'
  • name Char
    args: 'Name'
  • total_quantity Integer
    compute='_compute_total_quantity'
Public methods (0)

No public methods.

New fields (8)
  • child_ids One2many → test_new_api.modified.line
    args: 'test_new_api.modified.line', 'parent_id'
  • modified_id Many2one → test_new_api.modified
    args: 'test_new_api.modified'
  • modified_name Char
    related='modified_id.name'
  • parent_id Many2one → test_new_api.modified.line
    args: 'test_new_api.modified.line'
  • price Float
  • quantity Integer
  • total_price Float
    compute='_compute_total_quantity' recursive=True
  • total_price_quantity Float
    compute='_compute_total_price_quantity'
Public methods (0)

No public methods.

New fields (2)
  • amount Monetary
    currency_field='base_currency_id'
  • base_currency_id Many2one → res.currency
    args: 'res.currency'
Public methods (0)

No public methods.

New fields (3)
  • monetary_id Many2one → test_new_api.monetary_base
    args: 'test_new_api.monetary_base'
  • x_amount Monetary
    related='monetary_id.amount'
  • x_currency_id Many2one → res.currency
    related='monetary_id.base_currency_id' args: 'res.currency'
Public methods (0)

No public methods.

New fields (2)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • monetary_id Many2one → test_new_api.monetary_base
    ondelete='cascade' required=True args: 'test_new_api.monetary_base'
Public methods (0)

No public methods.

New fields (3)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • line_ids One2many → test_new_api.monetary_order_line
    args: 'test_new_api.monetary_order_line', 'order_id'
  • total Monetary
    compute='_compute_total' store=True
Public methods (0)

No public methods.

New fields (2)
  • order_id Many2one → test_new_api.monetary_order
    ondelete='cascade' required=True args: 'test_new_api.monetary_order'
  • subtotal Float
    digits=(10, 2)
Public methods (0)

No public methods.

New fields (4)
  • amount Monetary
    related='monetary_id.amount'
  • currency_id Many2one → res.currency
    related='monetary_id.base_currency_id' args: 'res.currency'
  • monetary_id Many2one → test_new_api.monetary_base
    args: 'test_new_api.monetary_base'
  • total Monetary
Public methods (0)

No public methods.

New fields (7)
  • line_ids One2many → test_new_api.move_line
    domain=[('visible', '=', True)] args: 'test_new_api.move_line', 'move_id'
  • payment_ids One2many → test_new_api.payment
    args: 'test_new_api.payment', 'move_id'
  • quantity Integer
    compute='_compute_quantity' store=True
  • tag_id Many2one → test_new_api.multi.tag
    args: 'test_new_api.multi.tag'
  • tag_name Char
    related='tag_id.name'
  • tag_repeat Integer
  • tag_string Char
    compute='_compute_tag_string'
Public methods (0)

No public methods.

New fields (3)
  • move_id Many2one → test_new_api.move
    ondelete='cascade' required=True args: 'test_new_api.move'
  • quantity Integer
  • visible Boolean
    default=True
Public methods (0)

No public methods.

New fields (5)
  • lines One2many → test_new_api.multi.line
    args: 'test_new_api.multi.line', 'multi'
  • name Char
    readonly=True related='partner.name'
  • partner Many2one → res.partner
    args: 'res.partner'
  • partners One2many
    related='partner.child_ids'
  • tags Many2many → test_new_api.multi.tag
    domain=[('name', 'ilike', 'a')] args: 'test_new_api.multi.tag'
Public methods (0)

No public methods.

New fields (4)
  • multi Many2one → test_new_api.multi
    ondelete='cascade' args: 'test_new_api.multi'
  • name Char
  • partner Many2one
    related='multi.partner' store=True
  • tags Many2many → test_new_api.multi.tag
    args: 'test_new_api.multi.tag'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • display_name Char
    compute='_compute_display_name'
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • bar1 Char
    compute='_compute_bars' inverse='_inverse_bar1' store=True
  • bar2 Char
    compute='_compute_bars' inverse='_inverse_bar23' store=True
  • bar3 Char
    compute='_compute_bars' inverse='_inverse_bar23' store=True
  • foo Char
    default='' required=True
Public methods (0)

No public methods.

New fields (2)
  • line_ids One2many → test_new_api.one2many.line
    compute='_compute_line_ids' domain=[('count', '>', 0)] readonly=False store=True args: 'test_new_api.one2many.line', 'container_id'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • container_id Many2one → test_new_api.one2many
    required=True args: 'test_new_api.one2many'
  • count Integer
    default=1
  • name Char
Public methods (0)

No public methods.

New fields (1)
  • name Char
    string='Name'
Public methods (0)

No public methods.

New fields (1)
  • move_id Many2one → test_new_api.move
    ondelete='cascade' required=True args: 'test_new_api.move'
Public methods (0)

No public methods.

New fields (4)
  • active Boolean
    default=True
  • employer_id Many2one → test_new_api.employer
    args: 'test_new_api.employer'
  • lesson_ids Many2many → test_new_api.lesson
    args: 'test_new_api.lesson', 'course_id'
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (2)
  • login Char
  • person_id Many2one → test_new_api.person
    ondelete='cascade' required=True args: 'test_new_api.person'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    args: 'Name'
  • ship_ids Many2many → test_new_api.ship
    args: 'test_new_api.ship', 'test_new_api_crew', 'pirate_id', 'ship_id'
Public methods (0)

No public methods.

New fields (8)
  • commercial_id Many2one → res.partner
    compute='_compute_commercial_id' precompute=True store=True args: 'res.partner'
  • line_ids One2many → test_new_api.precompute.line
    args: 'test_new_api.precompute.line', 'parent_id'
  • lower Char
    compute='_compute_names' precompute=True store=True
  • lowup Char
    compute='_compute_lowup' precompute=True store=True
  • name Char
    required=True
  • partner_id Many2one → res.partner
    args: 'res.partner'
  • size Integer
    compute='_compute_size' precompute=True store=True
  • upper Char
    compute='_compute_names' precompute=True store=True
Public methods (0)

No public methods.

New fields (4)
  • editer Char
    compute='_compute_editer' precompute=True readonly=False store=True
  • name Char
  • reader Char
    compute='_compute_reader' precompute=True store=True
  • setter Char
    compute='_compute_setter' inverse='_inverse_setter' precompute=True store=True
Public methods (0)

No public methods.

New fields (4)
  • bar Char
    compute='_compute_bar' precompute=True readonly=False store=True
  • baz Char
    compute='_compute_baz' precompute=True readonly=False store=True
  • baz2 Char
    compute='_compute_baz2' precompute=True store=True
  • foo Char
Public methods (0)

No public methods.

New fields (3)
  • name Char
    required=True
  • parent_id Many2one → test_new_api.precompute
    args: 'test_new_api.precompute'
  • size Integer
    compute='_compute_size' precompute=True store=True
Public methods (0)

No public methods.

New fields (2)
  • amount Monetary
    compute='_compute_amount' precompute=True store=True
  • currency_id Many2one → res.currency
    compute='_compute_currency_id' precompute=True store=True args: 'res.currency'
Public methods (0)

No public methods.

New fields (4)
  • bar Char
    compute='_compute_bar' precompute=True readonly=True store=True
  • baz Char
    compute='_compute_baz' precompute=True readonly=False store=True
  • foo Char
  • state Selection
    default='draft' args: [('draft', 'Draft'), ('confirmed', 'Confirmed')]
Public methods (0)

No public methods.

New fields (2)
  • name Char
    precompute=True related='partner_id.name' required=True store=True
  • partner_id Many2one → res.partner
    required=True args: 'res.partner'
Public methods (0)

No public methods.

New fields (10)
  • description Char
    translate=True args: 'Description'
  • gretel Char
    prefetch='Hansel and Gretel' args: 'Gretel'
  • hansel Integer
    prefetch='Hansel and Gretel' args: 'Hansel'
  • harry Integer
    prefetch='Harry Potter' args: 'Harry Potter'
  • hermione Char
    prefetch='Harry Potter' args: 'Hermione Granger'
  • html_description Html
    translate=True args: 'Styled description'
  • name Char
    translate=True args: 'Name'
  • rare_description Char
    prefetch=False translate=True args: 'Rare Description'
  • rare_html_description Html
    prefetch=False translate=True args: 'Rare Styled description'
  • ron Float
    prefetch='Harry Potter' args: 'Ron Weasley'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    args: 'Name'
  • ship_ids Many2many → test_new_api.ship
    args: 'test_new_api.ship', 'test_new_api_crew', 'prisoner_id', 'ship_id'
Public methods (0)

No public methods.

New fields (5)
  • context_dependent_name Char
    compute='_compute_context_dependent_name' recursive=True
  • display_name Char
    compute='_compute_display_name' recursive=True store=True
  • full_name Char
    compute='_compute_full_name' recursive=True
  • name Char
    required=True
  • parent Many2one → test_new_api.recursive
    ondelete='cascade' args: 'test_new_api.recursive'
Public methods (0)

No public methods.

New fields (4)
  • children_ids One2many → test_new_api.recursive.tree
    args: 'test_new_api.recursive.tree', 'parent_id'
  • display_name Char
    compute='_compute_display_name' recursive=True store=True
  • name Char
    required=True
  • parent_id Many2one → test_new_api.recursive.tree
    ondelete='cascade' args: 'test_new_api.recursive.tree'
Public methods (0)

No public methods.

New fields (6)
  • message Many2one → test_new_api.message
    args: 'test_new_api.message'
  • message_currency Many2one
    related='message.author' string='Message Author'
  • message_name Text
    related='message.body' related_sudo=False string='Message Body'
  • name Char
  • related_name Char
    readonly=False related='name' string='A related on Name'
  • related_related_name Char
    readonly=False related='related_name' string='A related on a related on Name'
Public methods (0)

No public methods.

New fields (2)
  • html Html
    translate=html_translate args: 'HTML'
  • name Char
    translate=True args: 'Name'
Public methods (0)

No public methods.

New fields (6)
  • computed_html Char
    compute='_compute_html' args: 'HTML Computed'
  • computed_name Char
    compute='_compute_name' args: 'Name Computed'
  • html Html
    readonly=False related='related_id.html' args: 'HTML Related'
  • name Char
    readonly=False related='related_id.name' args: 'Name Related'
  • name_en Char
    compute='_compute_name_en' args: 'Name EN'
  • related_id Many2one → test_new_api.related_translation_1
    string='Parent Model' args: 'test_new_api.related_translation_1'
Public methods (0)

No public methods.

New fields (3)
  • html Html
    readonly=False related='related_id.html' args: 'HTML Related'
  • name Char
    readonly=False related='related_id.name' args: 'Name Related'
  • related_id Many2one → test_new_api.related_translation_2
    string='Parent Model' args: 'test_new_api.related_translation_2'
Public methods (0)

No public methods.

New fields (2)
  • bar Many2one → res.country
    required=True args: 'res.country'
  • foo Many2one → res.currency
    ondelete='cascade' required=True args: 'res.currency'
Public methods (0)

No public methods.

New fields (2)
  • bar Many2one → res.country
    required=True args: 'res.country'
  • foo Many2one → res.currency
    ondelete='restrict' required=True args: 'res.currency'
Public methods (0)

No public methods.

New fields (2)
  • other Selection
    args: [('foo', 'Foo'), ('bar', 'Bar')]
  • state Selection
    args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (3)
  • name Char
    args: 'Name'
  • pirate_ids Many2many → test_new_api.pirate
    args: 'test_new_api.pirate', 'test_new_api_crew', 'ship_id', 'pirate_id'
  • prisoner_ids Many2many → test_new_api.prisoner
    args: 'test_new_api.prisoner', 'test_new_api_crew', 'ship_id', 'prisoner_id'
Public methods (0)

No public methods.

New fields (1)
  • state Selection
    args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('done', 'Done')]
Public methods (0)

No public methods.

New fields (3)
  • member_ids One2many → test_new_api.team.member
    args: 'test_new_api.team.member', 'team_id'
  • name Char
  • parent_id Many2one → test_new_api.team
    args: 'test_new_api.team'
Public methods (0)

No public methods.

New fields (3)
  • name Char
    args: 'Name'
  • parent_id Many2one → test_new_api.team
    related='team_id.parent_id' args: 'test_new_api.team'
  • team_id Many2one → test_new_api.team
    args: 'test_new_api.team'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • middle_ids One2many → test_new_api.trigger.middle
    args: 'test_new_api.trigger.middle', 'left_id'
  • right_id Many2one
    related='middle_ids.right_id' store=True
Public methods (0)

No public methods.

New fields (2)
  • left_id Many2one → test_new_api.trigger.left
    required=True args: 'test_new_api.trigger.left'
  • right_id Many2one → test_new_api.trigger.right
    required=True args: 'test_new_api.trigger.right'
Public methods (0)

No public methods.

New fields (2)
  • left_ids One2many → test_new_api.trigger.left
    args: 'test_new_api.trigger.left', 'right_id'
  • left_size Integer
    compute='_compute_left_size' store=True
Public methods (0)

No public methods.

New fields (4)
  • child_ids One2many → test_new_api.unsearchable.o2m
    args: 'test_new_api.unsearchable.o2m', 'parent_id'
  • name Char
    args: 'Name'
  • parent_id Many2one → test_new_api.unsearchable.o2m
    compute='_compute_parent_id' store=False args: 'test_new_api.unsearchable.o2m'
  • stored_parent_id Many2one → test_new_api.unsearchable.o2m
    store=True args: 'test_new_api.unsearchable.o2m'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/test_new_api
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden/Tests
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Martin Trigaux, Fabien Pinckaers, Thibault Delavallée, Denis Ledoux, Xavier Morel, Nicolas Lempereur, Géry Debongnie, Jeremy Kersten, Lucas Perais (lpe), Yannick Tivisse, Romain Derie, Christophe Monniez, Jorge Pinna Puissant, Julien Castiaux, Aurélien Warnon, Xavier-Do, Romeo Fragomeli, Victor Feyens, std-odoo, Nasreddin Boulif (bon), Rémy Voet (ryv), Romain Estievenart, william-andre, Florian Charlier, Abdelouahab (abla), gawa-odoo, Julien Banken, Adrien Widart (awt), nda, Tom De Caluwé, Bruno Boi, Michael (mcm), Chong Wang (cwg), Ivan Rasputin, Krzysztof Magusiak (krma)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:55
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - web
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
A module to test the API.

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
category_form category form view test_new_api.category form New
category_tree category tree view test_new_api.category tree New
compute_editable_form test_new_api.compute_editable.form test_new_api.compute_editable form New
discussion_form discussion form view test_new_api.discussion form New
discussion_form_2 discussion form view test_new_api.discussion form New
discussion_form_3 discussion form view test_new_api.discussion form New
message_form message form view test_new_api.message form New
message_tree message tree view test_new_api.message tree New
model_parent_form model parent form view test_new_api.model_parent_m2o form New
model_shared_cache_compute_parent_view_form model_shared_cache_compute_parent_view_form test_new_api.model_shared_cache_compute_parent form New
multi_form multi form view test_new_api.multi form New
multi_tree multi tree view test_new_api.multi tree New
Models touched (112)

New fields (3)
  • float Float
  • float_2 Float
    digits=(16, 2)
  • float_4 Float
    digits=(16, 4)
Public methods (0)

No public methods.

New fields (3)
  • bool_false Boolean
    default=False args: 'b2'
  • bool_true Boolean
    default=True args: 'b1'
  • bool_undefined Boolean
    args: 'b3'
Public methods (0)

No public methods.

New fields (3)
  • name Char
    compute='_compute_name' compute_sudo=True store=True
  • res_id Integer
    required=True
  • res_model Char
    required=True
Public methods (1)
  • modified(self, fnames, *args, **kwargs)

New fields (1)
  • attachment_ids One2many → test_new_api.attachment
    auto_join=True domain=<expr> args: 'test_new_api.attachment', 'res_id'
Public methods (0)

No public methods.

New fields (6)
  • foo Many2one → test_new_api.foo
    compute='_compute_foo' search='_search_foo' args: 'test_new_api.foo'
  • name Char
  • text1 Char
    readonly=False related='foo.text' args: 'Text1'
  • text2 Char
    readonly=False related='foo.text' trim=True args: 'Text2'
  • value1 Integer
    readonly=False related='foo.value1'
  • value2 Integer
    readonly=False related='foo.value2'
Public methods (0)

No public methods.

New fields (3)
  • image_attachment Binary
    attachment=True
  • image_wo_attachment Binary
    attachment=False
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar'
  • baz Char
    compute='_compute_baz' store=True
  • foo Char
Public methods (0)

No public methods.

New fields (9)
  • color Integer
    args: 'Color Index'
  • depth Integer
    compute='_compute_depth'
  • discussions Many2many → test_new_api.discussion
    args: 'test_new_api.discussion', 'test_new_api_discussion_category', 'category', 'discussion'
  • display_name Char
    compute='_compute_display_name' inverse='_inverse_display_name' recursive=True
  • dummy Char
    store=False
  • name Char
    required=True
  • parent Many2one → test_new_api.category
    ondelete='cascade' args: 'test_new_api.category'
  • parent_path Char
    index=True unaccent=False
  • root_categ Many2one
    compute='_compute_root_categ' args: _name
Public methods (0)

No public methods.

New fields (2)
  • country_id Many2one → test_new_api.country
    args: 'test_new_api.country'
  • name Char
Public methods (0)

No public methods.

New fields (7)
  • count Integer
    company_dependent=True
  • date Date
    company_dependent=True
  • foo Char
    company_dependent=True
  • moment Datetime
    company_dependent=True
  • phi Float
    company_dependent=True digits=(2, 5)
  • tag_id Many2one → test_new_api.multi.tag
    company_dependent=True args: 'test_new_api.multi.tag'
  • truth Boolean
    company_dependent=True
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar' store=True
  • company Many2one → test_new_api.company
    args: 'test_new_api.company'
  • quantity Integer
Public methods (0)

No public methods.

New fields (4)
  • full_name Char
    compute='_compute_full_name'
  • name1 Char
  • name2 Char
  • name3 Char
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar' inverse='_inverse_bar' store=True
  • baz Char
  • foo Char
Public methods (0)

No public methods.

New fields (7)
  • active Boolean
  • bar Char
    compute='_compute_bar' store=True
  • baz Char
    compute='_compute_baz' readonly=False store=True
  • count Integer
    default=0
  • foo Char
  • line_ids One2many → test_new_api.compute.onchange.line
    compute='_compute_line_ids' readonly=False store=True args: 'test_new_api.compute.onchange.line', 'record_id'
  • tag_ids Many2many → test_new_api.multi.tag
    compute='_compute_tag_ids' readonly=False store=True args: 'test_new_api.multi.tag'
Public methods (1)
  • copy(self, default=None)

New fields (3)
  • bar Char
    compute='_compute_bar'
  • foo Char
  • record_id Many2one → test_new_api.compute.onchange
    ondelete='cascade' args: 'test_new_api.compute.onchange'
Public methods (0)

No public methods.

New fields (2)
  • bar Char
    compute='_compute_bar' store=True
  • foo Char
    default=''
Public methods (0)

No public methods.

New fields (2)
  • bar Char
    compute='_compute_bar' readonly=False store=True
  • foo Char
Public methods (0)

No public methods.

New fields (5)
  • bar Char
    compute='_compute_bar'
  • bare Char
    compute='_compute_bare' readonly=False
  • bares Char
    compute='_compute_bares' readonly=False store=True
  • bars Char
    compute='_compute_bars' store=True
  • foo Char
Public methods (0)

No public methods.

New fields (1)
  • name Char
Public methods (0)

No public methods.

New fields (2)
  • editions One2many → test_new_api.creativework.edition
    domain=[('res_model', '=', _name)] args: 'test_new_api.creativework.edition', 'res_id'
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • name Char
  • res_id Integer
    required=True
  • res_model Char
    readonly=False related='res_model_id.model' store=True
  • res_model_id Many2one → ir.model
    ondelete='cascade' required=True args: 'ir.model'
Public methods (0)

No public methods.

New fields (2)
  • editions One2many → test_new_api.creativework.edition
    domain=[('res_model', '=', _name)] args: 'test_new_api.creativework.edition', 'res_id'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • pirate_id Many2one → test_new_api.pirate
    args: 'test_new_api.pirate'
  • prisoner_id Many2one → test_new_api.prisoner
    args: 'test_new_api.prisoner'
  • ship_id Many2one → test_new_api.ship
    args: 'test_new_api.ship'
Public methods (0)

No public methods.

New fields (12)
  • attributes_definition PropertiesDefinition
    args: 'Message Properties'
  • categories Many2many → test_new_api.category
    args: 'test_new_api.category', 'test_new_api_discussion_category', 'discussion', 'category'
  • emails One2many → test_new_api.emailmessage
    args: 'test_new_api.emailmessage', 'discussion'
  • history Json
    default={'delete_messages': []} args: 'History'
  • important_emails One2many → test_new_api.emailmessage
    domain=[('important', '=', True)] args: 'test_new_api.emailmessage', 'discussion'
  • important_messages One2many → test_new_api.message
    domain=[('important', '=', True)] args: 'test_new_api.message', 'discussion'
  • message_concat Text
    string='Message concatenate'
  • messages One2many → test_new_api.message
    copy=True args: 'test_new_api.message', 'discussion'
  • moderator Many2one → res.users
    args: 'res.users'
  • name Char
    help='Description of discussion.' required=True string='Title'
  • participants Many2many → res.users
    context={'active_test': False} args: 'res.users'
  • very_important_messages One2many → test_new_api.message
    domain=<expr> args: 'test_new_api.message', 'discussion'
Public methods (0)

No public methods.

New fields (1)
  • display_name Char
    compute='_compute_display_name' store=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • active Boolean
    related='message.active' related_sudo=False store=True args: 'Active Message'
  • email_to Char
    args: 'To'
  • message Many2one → test_new_api.message
    ondelete='cascade' required=True args: 'test_new_api.message', 'Message'
Public methods (0)

No public methods.

New fields (1)
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (1)
  • pArTneR_321_id Many2one → res.partner
    args: 'res.partner'
Public methods (0)

No public methods.

New fields (4)
  • name Char
  • text Char
    trim=False
  • value1 Integer
    change_default=True
  • value2 Integer
Public methods (0)

No public methods.

New fields (1)
  • name Text
    index='trigram' translate=True args: 'Name trigram'
Public methods (0)

No public methods.

New fields (3)
  • model_computed_ids One2many → test_new_api.model_many2one_reference
    compute='_compute_model_computed_ids' string='Models Computed' args: 'test_new_api.model_many2one_reference'
  • model_ids One2many → test_new_api.model_many2one_reference
    string='Models' args: 'test_new_api.model_many2one_reference', 'res_id'
  • model_ids_count Integer
    compute='_compute_model_ids_count' args: 'Count'
Public methods (0)

No public methods.

New fields (14)
  • active Boolean
    default=True
  • attributes Properties
    definition='discussion.attributes_definition' string='Properties'
  • author Many2one → res.users
    default=<expr> args: 'res.users'
  • author_partner Many2one → res.partner
    compute='_compute_author_partner' search='_search_author_partner' args: 'res.partner'
  • body Text
  • discussion Many2one → test_new_api.discussion
    ondelete='cascade' args: 'test_new_api.discussion'
  • discussion_name Char
    readonly=False related='discussion.name' string='Discussion Name'
  • display_name Char
    compute='_compute_display_name' string='Abstract'
  • double_size Integer
    compute='_compute_double_size'
  • important Boolean
  • label Char
    translate=True
  • name Char
    compute='_compute_name' store=True string='Title'
  • priority Integer
  • size Integer
    compute='_compute_size' search='_search_size'
Public methods (1)
  • write(self, vals)

New fields (14)
  • amount Monetary
  • comment1 Html
    sanitize=False
  • comment2 Html
    sanitize_attributes=True strip_classes=False
  • comment3 Html
    sanitize_attributes=True strip_classes=True
  • comment4 Html
    sanitize_attributes=True strip_style=True
  • comment5 Html
    sanitize_attributes=False sanitize_overridable=True
  • currency_id Many2one → res.currency
    default=<expr> args: 'res.currency'
  • date Date
  • lang Selection
    selection='_get_lang' string='Language'
  • moment Datetime
  • now Datetime
    compute='_compute_now'
  • number Float
    default=3.14 digits=(10, 2)
  • number2 Float
    digits='New API Precision'
  • reference Reference
    selection='_reference_models' string='Related Document'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • a_restricted_b_ids Many2many → test_new_api.model_b
    relation='rel_model_a_model_b_1' args: 'test_new_api.model_b'
  • b_restricted_b_ids Many2many → test_new_api.model_b
    ondelete='restrict' relation='rel_model_a_model_b_2' args: 'test_new_api.model_b'
  • name Char
Public methods (0)

No public methods.

New fields (7)
  • active Boolean
    default=True
  • active_children_ids One2many → test_new_api.model_active_field
    context={'active_test': True} args: 'test_new_api.model_active_field', 'parent_id'
  • all_children_ids One2many → test_new_api.model_active_field
    context={'active_test': False} args: 'test_new_api.model_active_field', 'parent_id'
  • children_ids One2many → test_new_api.model_active_field
    args: 'test_new_api.model_active_field', 'parent_id'
  • name Char
  • parent_active Boolean
    related='parent_id.active' store=True string='Active Parent'
  • parent_id Many2one → test_new_api.model_active_field
    args: 'test_new_api.model_active_field'
Public methods (0)

No public methods.

New fields (3)
  • a_restricted_a_ids Many2many → test_new_api.model_a
    ondelete='restrict' relation='rel_model_a_model_b_1' args: 'test_new_api.model_a'
  • b_restricted_a_ids Many2many → test_new_api.model_a
    relation='rel_model_a_model_b_2' args: 'test_new_api.model_a'
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • binary Binary
  • binary_computed Binary
    compute='_compute_binary'
  • binary_related_no_store Binary
    readonly=False related='binary' store=False args: 'Binary Related No Store'
  • binary_related_store Binary
    readonly=False related='binary' store=True args: 'Binary Related Store'
Public methods (0)

No public methods.

New fields (3)
  • company_id Many2one → res.company
    required=True args: 'res.company'
  • name Char
  • parent_id Many2one → test_new_api.model_parent
    check_company=True args: 'test_new_api.model_parent'
Public methods (0)

No public methods.

New fields (5)
  • cost Integer
    compute='_compute_cost' readonly=False store=True
  • name Char
    args: 'Name'
  • parent_id Many2one → test_new_api.model_parent_m2o
    ondelete='cascade' args: 'test_new_api.model_parent_m2o'
  • size1 Integer
    compute='_compute_sizes' store=True
  • size2 Integer
    compute='_compute_sizes' store=True
Public methods (1)
  • write(self, vals)

New fields (3)
  • company_id Many2one → res.company
    required=True args: 'res.company'
  • name Char
  • parent_id Many2one → test_new_api.model_parent
    check_company=False args: 'test_new_api.model_parent'
Public methods (0)

No public methods.

New fields (2)
  • bar Integer
  • foo Char
Public methods (0)

No public methods.

New fields (5)
  • image Image
  • image_128 Image
    max_height=128 max_width=128 args: 'Image 128'
  • image_256 Image
    max_height=256 max_width=256 readonly=False related='image' store=False args: 'Image 256'
  • image_512 Image
    max_height=512 max_width=512 readonly=False related='image' store=True args: 'Image 512'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (3)
  • const Boolean
    default=True
  • res_id Many2oneReference
    model_field='res_model' args: 'Resource ID'
  • res_model Char
    args: 'Resource Model'
Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    required=True args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • child_ids One2many → test_new_api.model_child_m2o
    string='Children' args: 'test_new_api.model_child_m2o', 'parent_id'
  • cost Integer
    compute='_compute_cost' store=True
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (3)
  • address_id Many2one → res.partner
    check_company=True args: 'res.partner'
  • company_id Many2one → res.company
    required=True args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'quux': 'set null'} selection_add=[('quux', 'Quux')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    selection_add=[('ham', 'Ham')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    store=False args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (2)
  • related_selection Selection
    related='selection_id.my_selection'
  • selection_id Many2one → test_new_api.model_selection_base
    comodel_name='test_new_api.model_selection_base' required=True
Public methods (0)

No public methods.

New fields (2)
  • related_selection Selection
    readonly=False related='selection_id.my_selection'
  • selection_id Many2one → test_new_api.model_selection_base
    comodel_name='test_new_api.model_selection_base' required=True
Public methods (0)

No public methods.

New fields (2)
  • active Boolean
    default=True
  • my_selection Selection
    default='foo' required=True args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'baz': 'set default'} selection_add=[('baz', 'Baz')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'eggs': 'cascade'} selection_add=[('eggs', 'Eggs')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'bacon': 'set bar'} selection_add=[('bacon', 'Bacon')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'pikachu': 'set default', 'eevee': <expr>} selection_add=[('pikachu', 'Pikachu'), ('eevee', 'Eevee')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'knickers': <expr>} selection_add=[('knickers', 'Oh la la')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    default='foo' required=True args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'divinity': 'set default'} selection_add=[('divinity', 'Divinity: Original Sin 2')]
Public methods (1)
  • write(self, vals)

New fields (3)
  • amount Integer
  • parent_id Many2one → test_new_api.model_shared_cache_compute_parent
    args: 'test_new_api.model_shared_cache_compute_parent'
  • user_id Many2one → res.users
    default=<expr> args: 'res.users'
Public methods (0)

No public methods.

New fields (3)
  • line_ids One2many → test_new_api.model_shared_cache_compute_line
    string='Timesheets' args: 'test_new_api.model_shared_cache_compute_line', 'parent_id'
  • name Char
    string='Task Name'
  • total_amount Integer
    compute='_compute_total_amount' compute_sudo=True store=True
Public methods (0)

No public methods.

New fields (3)
  • line_ids One2many → test_new_api.modified.line
    args: 'test_new_api.modified.line', 'modified_id'
  • name Char
    args: 'Name'
  • total_quantity Integer
    compute='_compute_total_quantity'
Public methods (0)

No public methods.

New fields (8)
  • child_ids One2many → test_new_api.modified.line
    args: 'test_new_api.modified.line', 'parent_id'
  • modified_id Many2one → test_new_api.modified
    args: 'test_new_api.modified'
  • modified_name Char
    related='modified_id.name'
  • parent_id Many2one → test_new_api.modified.line
    args: 'test_new_api.modified.line'
  • price Float
  • quantity Integer
  • total_price Float
    compute='_compute_total_quantity' recursive=True
  • total_price_quantity Float
    compute='_compute_total_price_quantity'
Public methods (0)

No public methods.

New fields (2)
  • amount Monetary
    currency_field='base_currency_id'
  • base_currency_id Many2one → res.currency
    args: 'res.currency'
Public methods (0)

No public methods.

New fields (3)
  • monetary_id Many2one → test_new_api.monetary_base
    args: 'test_new_api.monetary_base'
  • x_amount Monetary
    related='monetary_id.amount'
  • x_currency_id Many2one → res.currency
    related='monetary_id.base_currency_id' args: 'res.currency'
Public methods (0)

No public methods.

New fields (2)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • monetary_id Many2one → test_new_api.monetary_base
    ondelete='cascade' required=True args: 'test_new_api.monetary_base'
Public methods (0)

No public methods.

New fields (3)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • line_ids One2many → test_new_api.monetary_order_line
    args: 'test_new_api.monetary_order_line', 'order_id'
  • total Monetary
    compute='_compute_total' store=True
Public methods (0)

No public methods.

New fields (2)
  • order_id Many2one → test_new_api.monetary_order
    ondelete='cascade' required=True args: 'test_new_api.monetary_order'
  • subtotal Float
    digits=(10, 2)
Public methods (0)

No public methods.

New fields (4)
  • amount Monetary
    related='monetary_id.amount'
  • currency_id Many2one → res.currency
    related='monetary_id.base_currency_id' args: 'res.currency'
  • monetary_id Many2one → test_new_api.monetary_base
    args: 'test_new_api.monetary_base'
  • total Monetary
Public methods (0)

No public methods.

New fields (7)
  • line_ids One2many → test_new_api.move_line
    domain=[('visible', '=', True)] args: 'test_new_api.move_line', 'move_id'
  • payment_ids One2many → test_new_api.payment
    args: 'test_new_api.payment', 'move_id'
  • quantity Integer
    compute='_compute_quantity' store=True
  • tag_id Many2one → test_new_api.multi.tag
    args: 'test_new_api.multi.tag'
  • tag_name Char
    related='tag_id.name'
  • tag_repeat Integer
  • tag_string Char
    compute='_compute_tag_string'
Public methods (0)

No public methods.

New fields (3)
  • move_id Many2one → test_new_api.move
    ondelete='cascade' required=True args: 'test_new_api.move'
  • quantity Integer
  • visible Boolean
    default=True
Public methods (0)

No public methods.

New fields (5)
  • lines One2many → test_new_api.multi.line
    args: 'test_new_api.multi.line', 'multi'
  • name Char
    readonly=True related='partner.name'
  • partner Many2one → res.partner
    args: 'res.partner'
  • partners One2many
    related='partner.child_ids'
  • tags Many2many → test_new_api.multi.tag
    domain=[('name', 'ilike', 'a')] args: 'test_new_api.multi.tag'
Public methods (0)

No public methods.

New fields (4)
  • multi Many2one → test_new_api.multi
    ondelete='cascade' args: 'test_new_api.multi'
  • name Char
  • partner Many2one
    related='multi.partner' store=True
  • tags Many2many → test_new_api.multi.tag
    args: 'test_new_api.multi.tag'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • bar1 Char
    compute='_compute_bars' inverse='_inverse_bar1' store=True
  • bar2 Char
    compute='_compute_bars' inverse='_inverse_bar23' store=True
  • bar3 Char
    compute='_compute_bars' inverse='_inverse_bar23' store=True
  • foo Char
    default='' required=True
Public methods (0)

No public methods.

New fields (2)
  • line_ids One2many → test_new_api.one2many.line
    compute='_compute_line_ids' domain=[('count', '>', 0)] readonly=False store=True args: 'test_new_api.one2many.line', 'container_id'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • container_id Many2one → test_new_api.one2many
    required=True args: 'test_new_api.one2many'
  • count Integer
    default=1
  • name Char
Public methods (0)

No public methods.

New fields (1)
  • name Char
    string='Name'
Public methods (0)

No public methods.

New fields (1)
  • move_id Many2one → test_new_api.move
    ondelete='cascade' required=True args: 'test_new_api.move'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    args: 'Name'
  • ship_ids Many2many → test_new_api.ship
    args: 'test_new_api.ship', 'test_new_api_crew', 'pirate_id', 'ship_id'
Public methods (0)

No public methods.

New fields (8)
  • commercial_id Many2one → res.partner
    compute='_compute_commercial_id' precompute=True store=True args: 'res.partner'
  • line_ids One2many → test_new_api.precompute.line
    args: 'test_new_api.precompute.line', 'parent_id'
  • lower Char
    compute='_compute_names' precompute=True store=True
  • lowup Char
    compute='_compute_lowup' precompute=True store=True
  • name Char
    required=True
  • partner_id Many2one → res.partner
    args: 'res.partner'
  • size Integer
    compute='_compute_size' precompute=True store=True
  • upper Char
    compute='_compute_names' precompute=True store=True
Public methods (0)

No public methods.

New fields (4)
  • editer Char
    compute='_compute_editer' precompute=True readonly=False store=True
  • name Char
  • reader Char
    compute='_compute_reader' precompute=True store=True
  • setter Char
    compute='_compute_setter' inverse='_inverse_setter' precompute=True store=True
Public methods (0)

No public methods.

New fields (4)
  • bar Char
    compute='_compute_bar' precompute=True readonly=False store=True
  • baz Char
    compute='_compute_baz' precompute=True readonly=False store=True
  • baz2 Char
    compute='_compute_baz2' precompute=True store=True
  • foo Char
Public methods (0)

No public methods.

New fields (3)
  • name Char
    required=True
  • parent_id Many2one → test_new_api.precompute
    args: 'test_new_api.precompute'
  • size Integer
    compute='_compute_size' precompute=True store=True
Public methods (0)

No public methods.

New fields (2)
  • amount Monetary
    compute='_compute_amount' precompute=True store=True
  • currency_id Many2one → res.currency
    compute='_compute_currency_id' precompute=True store=True args: 'res.currency'
Public methods (0)

No public methods.

New fields (4)
  • bar Char
    compute='_compute_bar' precompute=True readonly=True store=True
  • baz Char
    compute='_compute_baz' precompute=True readonly=True states={'draft': [('readonly', False)]} store=True
  • foo Char
  • state Selection
    default='draft' args: [('draft', 'Draft'), ('confirmed', 'Confirmed')]
Public methods (0)

No public methods.

New fields (2)
  • name Char
    precompute=True related='partner_id.name' required=True store=True
  • partner_id Many2one → res.partner
    required=True args: 'res.partner'
Public methods (0)

No public methods.

New fields (10)
  • description Char
    translate=True args: 'Description'
  • gretel Char
    prefetch='Hansel and Gretel' args: 'Gretel'
  • hansel Integer
    prefetch='Hansel and Gretel' args: 'Hansel'
  • harry Integer
    prefetch='Harry Potter' args: 'Harry Potter'
  • hermione Char
    prefetch='Harry Potter' args: 'Hermione Granger'
  • html_description Html
    translate=True args: 'Styled description'
  • name Char
    translate=True args: 'Name'
  • rare_description Char
    prefetch=False translate=True args: 'Rare Description'
  • rare_html_description Html
    prefetch=False translate=True args: 'Rare Styled description'
  • ron Float
    prefetch='Harry Potter' args: 'Ron Weasley'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    args: 'Name'
  • ship_ids Many2many → test_new_api.ship
    args: 'test_new_api.ship', 'test_new_api_crew', 'prisoner_id', 'ship_id'
Public methods (0)

No public methods.

New fields (5)
  • context_dependent_name Char
    compute='_compute_context_dependent_name' recursive=True
  • display_name Char
    compute='_compute_display_name' recursive=True store=True
  • full_name Char
    compute='_compute_full_name' recursive=True
  • name Char
    required=True
  • parent Many2one → test_new_api.recursive
    ondelete='cascade' args: 'test_new_api.recursive'
Public methods (0)

No public methods.

New fields (4)
  • children_ids One2many → test_new_api.recursive.tree
    args: 'test_new_api.recursive.tree', 'parent_id'
  • display_name Char
    compute='_compute_display_name' recursive=True store=True
  • name Char
    required=True
  • parent_id Many2one → test_new_api.recursive.tree
    ondelete='cascade' args: 'test_new_api.recursive.tree'
Public methods (0)

No public methods.

New fields (6)
  • message Many2one → test_new_api.message
    args: 'test_new_api.message'
  • message_currency Many2one
    related='message.author' string='Message Author'
  • message_name Text
    related='message.body' related_sudo=False string='Message Body'
  • name Char
  • related_name Char
    readonly=False related='name' string='A related on Name'
  • related_related_name Char
    readonly=False related='related_name' string='A related on a related on Name'
Public methods (0)

No public methods.

New fields (2)
  • html Html
    translate=html_translate args: 'HTML'
  • name Char
    translate=True args: 'Name'
Public methods (0)

No public methods.

New fields (5)
  • computed_html Char
    compute='_compute_html' args: 'HTML Computed'
  • computed_name Char
    compute='_compute_name' args: 'Name Computed'
  • html Html
    readonly=False related='parent_id.html' args: 'HTML Related'
  • name Char
    readonly=False related='parent_id.name' args: 'Name Related'
  • parent_id Many2one → test_new_api.related_translation_1
    string='Parent Model' args: 'test_new_api.related_translation_1'
Public methods (0)

No public methods.

New fields (3)
  • html Html
    readonly=False related='parent_id.html' args: 'HTML Related'
  • name Char
    readonly=False related='parent_id.name' args: 'Name Related'
  • parent_id Many2one → test_new_api.related_translation_2
    string='Parent Model' args: 'test_new_api.related_translation_2'
Public methods (0)

No public methods.

New fields (2)
  • bar Many2one → res.country
    required=True args: 'res.country'
  • foo Many2one → res.currency
    ondelete='cascade' required=True args: 'res.currency'
Public methods (0)

No public methods.

New fields (2)
  • bar Many2one → res.country
    required=True args: 'res.country'
  • foo Many2one → res.currency
    ondelete='restrict' required=True args: 'res.currency'
Public methods (0)

No public methods.

New fields (2)
  • other Selection
    args: [('foo', 'Foo'), ('bar', 'Bar')]
  • state Selection
    args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (3)
  • name Char
    args: 'Name'
  • pirate_ids Many2many → test_new_api.pirate
    args: 'test_new_api.pirate', 'test_new_api_crew', 'ship_id', 'pirate_id'
  • prisoner_ids Many2many → test_new_api.prisoner
    args: 'test_new_api.prisoner', 'test_new_api_crew', 'ship_id', 'prisoner_id'
Public methods (0)

No public methods.

New fields (1)
  • state Selection
    args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('done', 'Done')]
Public methods (0)

No public methods.

New fields (3)
  • member_ids One2many → test_new_api.team.member
    args: 'test_new_api.team.member', 'team_id'
  • name Char
  • parent_id Many2one → test_new_api.team
    args: 'test_new_api.team'
Public methods (0)

No public methods.

New fields (3)
  • name Char
    args: 'Name'
  • parent_id Many2one → test_new_api.team
    related='team_id.parent_id' args: 'test_new_api.team'
  • team_id Many2one → test_new_api.team
    args: 'test_new_api.team'
Public methods (0)

No public methods.

New fields (2)
  • middle_ids One2many → test_new_api.trigger.middle
    args: 'test_new_api.trigger.middle', 'left_id'
  • right_id Many2one
    related='middle_ids.right_id' store=True
Public methods (0)

No public methods.

New fields (2)
  • left_id Many2one → test_new_api.trigger.left
    required=True args: 'test_new_api.trigger.left'
  • right_id Many2one → test_new_api.trigger.right
    required=True args: 'test_new_api.trigger.right'
Public methods (0)

No public methods.

New fields (2)
  • left_ids One2many → test_new_api.trigger.left
    args: 'test_new_api.trigger.left', 'right_id'
  • left_size Integer
    compute='_compute_left_size' store=True
Public methods (0)

No public methods.

New fields (1)
  • name Char
    translate=True args: 'Name'
Public methods (0)

No public methods.

New fields (2)
  • container_id Many2one → test_new_api.unlink.container
    args: 'test_new_api.unlink.container'
  • container_name Char
    related='container_id.name' store=True args: 'Container Name'
Public methods (0)

No public methods.

New fields (4)
  • child_ids One2many → test_new_api.unsearchable.o2m
    args: 'test_new_api.unsearchable.o2m', 'parent_id'
  • name Char
    args: 'Name'
  • parent_id Many2one → test_new_api.unsearchable.o2m
    compute='_compute_parent_id' store=False args: 'test_new_api.unsearchable.o2m'
  • stored_parent_id Many2one → test_new_api.unsearchable.o2m
    store=True args: 'test_new_api.unsearchable.o2m'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/15.0/test_new_api
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden/Tests
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Martin Trigaux, Denis Ledoux, Nicolas Lempereur, Aaron Bohy, Jeremy Kersten, Yannick Tivisse, Christophe Monniez, Adrian Torres, Xavier-Do, Julien Mougenot, svs-odoo, Nasreddin Boulif (bon), william-andre, Michael Mattiello (mcm), Adrien Widart (awt), Bruno Boi, Ivan Rasputin
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25:30
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - web
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
A module to test the API.

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
category_form category form view test_new_api.category form New
category_tree category tree view test_new_api.category tree New
compute_editable_form test_new_api.compute_editable.form test_new_api.compute_editable form New
discussion_form discussion form view test_new_api.discussion form New
discussion_form_2 discussion form view test_new_api.discussion form New
discussion_form_3 discussion form view test_new_api.discussion form New
message_form message form view test_new_api.message form New
message_tree message tree view test_new_api.message tree New
model_parent_form model parent form view test_new_api.model_parent_m2o form New
model_shared_cache_compute_parent_view_form model_shared_cache_compute_parent_view_form test_new_api.model_shared_cache_compute_parent form New
multi_form multi form view test_new_api.multi form New
multi_tree multi tree view test_new_api.multi tree New
Models touched (91)

New fields (3)
  • float Float
  • float_2 Float
    digits=(16, 2)
  • float_4 Float
    digits=(16, 4)
Public methods (0)

No public methods.

New fields (3)
  • bool_false Boolean
    default=False args: 'b2'
  • bool_true Boolean
    default=True args: 'b1'
  • bool_undefined Boolean
    args: 'b3'
Public methods (0)

No public methods.

New fields (3)
  • name Char
    compute='_compute_name' compute_sudo=True store=True
  • res_id Integer
    required=True
  • res_model Char
    required=True
Public methods (1)
  • modified(self, fnames, *args, **kwargs)

New fields (1)
  • attachment_ids One2many → test_new_api.attachment
    auto_join=True domain=<expr> args: 'test_new_api.attachment', 'res_id'
Public methods (0)

No public methods.

New fields (6)
  • foo Many2one → test_new_api.foo
    compute='_compute_foo' search='_search_foo' args: 'test_new_api.foo'
  • name Char
  • text1 Char
    readonly=False related='foo.text' args: 'Text1'
  • text2 Char
    readonly=False related='foo.text' trim=True args: 'Text2'
  • value1 Integer
    readonly=False related='foo.value1'
  • value2 Integer
    readonly=False related='foo.value2'
Public methods (0)

No public methods.

New fields (3)
  • image_attachment Binary
    attachment=True
  • image_wo_attachment Binary
    attachment=False
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar'
  • baz Char
    compute='_compute_baz' store=True
  • foo Char
Public methods (0)

No public methods.

New fields (9)
  • color Integer
    args: 'Color Index'
  • depth Integer
    compute='_compute_depth'
  • discussions Many2many → test_new_api.discussion
    args: 'test_new_api.discussion', 'test_new_api_discussion_category', 'category', 'discussion'
  • display_name Char
    compute='_compute_display_name' inverse='_inverse_display_name' recursive=True
  • dummy Char
    store=False
  • name Char
    required=True
  • parent Many2one → test_new_api.category
    ondelete='cascade' args: 'test_new_api.category'
  • parent_path Char
    index=True
  • root_categ Many2one
    compute='_compute_root_categ' args: _name
Public methods (0)

No public methods.

New fields (2)
  • country_id Many2one → test_new_api.country
    args: 'test_new_api.country'
  • name Char
Public methods (0)

No public methods.

New fields (7)
  • count Integer
    company_dependent=True
  • date Date
    company_dependent=True
  • foo Char
    company_dependent=True
  • moment Datetime
    company_dependent=True
  • phi Float
    company_dependent=True digits=(2, 5)
  • tag_id Many2one → test_new_api.multi.tag
    company_dependent=True args: 'test_new_api.multi.tag'
  • truth Boolean
    company_dependent=True
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar' store=True
  • company Many2one → test_new_api.company
    args: 'test_new_api.company'
  • quantity Integer
Public methods (0)

No public methods.

New fields (4)
  • full_name Char
    compute='_compute_full_name'
  • name1 Char
  • name2 Char
  • name3 Char
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar' inverse='_inverse_bar' store=True
  • baz Char
  • foo Char
Public methods (0)

No public methods.

New fields (7)
  • active Boolean
  • bar Char
    compute='_compute_bar' store=True
  • baz Char
    compute='_compute_baz' readonly=False store=True
  • count Integer
    default=0
  • foo Char
  • line_ids One2many → test_new_api.compute.onchange.line
    compute='_compute_line_ids' readonly=False store=True args: 'test_new_api.compute.onchange.line', 'record_id'
  • tag_ids Many2many → test_new_api.multi.tag
    compute='_compute_tag_ids' readonly=False store=True args: 'test_new_api.multi.tag'
Public methods (1)
  • copy(self, default=None)

New fields (3)
  • bar Char
    compute='_compute_bar'
  • foo Char
  • record_id Many2one → test_new_api.compute.onchange
    ondelete='cascade' args: 'test_new_api.compute.onchange'
Public methods (0)

No public methods.

New fields (2)
  • bar Char
    compute='_compute_bar' store=True
  • foo Char
    default=''
Public methods (0)

No public methods.

New fields (2)
  • bar Char
    compute='_compute_bar' readonly=False store=True
  • foo Char
Public methods (0)

No public methods.

New fields (5)
  • bar Char
    compute='_compute_bar'
  • bare Char
    compute='_compute_bare' readonly=False
  • bares Char
    compute='_compute_bares' readonly=False store=True
  • bars Char
    compute='_compute_bars' store=True
  • foo Char
Public methods (0)

No public methods.

New fields (1)
  • name Char
Public methods (0)

No public methods.

New fields (2)
  • editions One2many → test_new_api.creativework.edition
    domain=[('res_model', '=', _name)] args: 'test_new_api.creativework.edition', 'res_id'
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • name Char
  • res_id Integer
    required=True
  • res_model Char
    readonly=False related='res_model_id.model' store=True
  • res_model_id Many2one → ir.model
    ondelete='cascade' required=True args: 'ir.model'
Public methods (0)

No public methods.

New fields (2)
  • editions One2many → test_new_api.creativework.edition
    domain=[('res_model', '=', _name)] args: 'test_new_api.creativework.edition', 'res_id'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • pirate_id Many2one → test_new_api.pirate
    args: 'test_new_api.pirate'
  • prisoner_id Many2one → test_new_api.prisoner
    args: 'test_new_api.prisoner'
  • ship_id Many2one → test_new_api.ship
    args: 'test_new_api.ship'
Public methods (0)

No public methods.

New fields (10)
  • categories Many2many → test_new_api.category
    args: 'test_new_api.category', 'test_new_api_discussion_category', 'discussion', 'category'
  • emails One2many → test_new_api.emailmessage
    args: 'test_new_api.emailmessage', 'discussion'
  • important_emails One2many → test_new_api.emailmessage
    domain=[('important', '=', True)] args: 'test_new_api.emailmessage', 'discussion'
  • important_messages One2many → test_new_api.message
    domain=[('important', '=', True)] args: 'test_new_api.message', 'discussion'
  • message_concat Text
    string='Message concatenate'
  • messages One2many → test_new_api.message
    copy=True args: 'test_new_api.message', 'discussion'
  • moderator Many2one → res.users
    args: 'res.users'
  • name Char
    help='General description of what this discussion is about.' required=True string='Title'
  • participants Many2many → res.users
    context={'active_test': False} args: 'res.users'
  • very_important_messages One2many → test_new_api.message
    domain=<expr> args: 'test_new_api.message', 'discussion'
Public methods (0)

No public methods.

New fields (1)
  • display_name Char
    compute='_compute_display_name' store=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • email_to Char
    args: 'To'
  • message Many2one → test_new_api.message
    ondelete='cascade' required=True args: 'test_new_api.message', 'Message'
Public methods (0)

No public methods.

New fields (1)
  • pArTneR_321_id Many2one → res.partner
    args: 'res.partner'
Public methods (0)

No public methods.

New fields (4)
  • name Char
  • text Char
    trim=False
  • value1 Integer
    change_default=True
  • value2 Integer
Public methods (0)

No public methods.

New fields (2)
  • model_ids One2many → test_new_api.model_many2one_reference
    string='Models' args: 'test_new_api.model_many2one_reference', 'res_id'
  • model_ids_count Integer
    compute='_compute_model_ids_count' args: 'Count'
Public methods (0)

No public methods.

New fields (12)
  • author Many2one → res.users
    default=<expr> args: 'res.users'
  • author_partner Many2one → res.partner
    compute='_compute_author_partner' search='_search_author_partner' args: 'res.partner'
  • body Text
  • discussion Many2one → test_new_api.discussion
    ondelete='cascade' args: 'test_new_api.discussion'
  • discussion_name Char
    readonly=False related='discussion.name' string='Discussion Name'
  • display_name Char
    compute='_compute_display_name' string='Abstract'
  • double_size Integer
    compute='_compute_double_size'
  • important Boolean
  • label Char
    translate=True
  • name Char
    compute='_compute_name' store=True string='Title'
  • priority Integer
  • size Integer
    compute='_compute_size' search='_search_size'
Public methods (1)
  • write(self, vals)

New fields (13)
  • amount Monetary
  • comment1 Html
    sanitize=False
  • comment2 Html
    sanitize_attributes=True strip_classes=False
  • comment3 Html
    sanitize_attributes=True strip_classes=True
  • comment4 Html
    sanitize_attributes=True strip_style=True
  • currency_id Many2one → res.currency
    default=<expr> args: 'res.currency'
  • date Date
  • lang Selection
    selection='_get_lang' string='Language'
  • moment Datetime
  • now Datetime
    compute='_compute_now'
  • number Float
    default=3.14 digits=(10, 2)
  • number2 Float
    digits='New API Precision'
  • reference Reference
    selection='_reference_models' string='Related Document'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • a_restricted_b_ids Many2many → test_new_api.model_b
    relation='rel_model_a_model_b_1' args: 'test_new_api.model_b'
  • b_restricted_b_ids Many2many → test_new_api.model_b
    ondelete='restrict' relation='rel_model_a_model_b_2' args: 'test_new_api.model_b'
  • name Char
Public methods (0)

No public methods.

New fields (7)
  • active Boolean
    default=True
  • active_children_ids One2many → test_new_api.model_active_field
    context={'active_test': True} args: 'test_new_api.model_active_field', 'parent_id'
  • all_children_ids One2many → test_new_api.model_active_field
    context={'active_test': False} args: 'test_new_api.model_active_field', 'parent_id'
  • children_ids One2many → test_new_api.model_active_field
    args: 'test_new_api.model_active_field', 'parent_id'
  • name Char
  • parent_active Boolean
    related='parent_id.active' store=True string='Active Parent'
  • parent_id Many2one → test_new_api.model_active_field
    args: 'test_new_api.model_active_field'
Public methods (0)

No public methods.

New fields (3)
  • a_restricted_a_ids Many2many → test_new_api.model_a
    ondelete='restrict' relation='rel_model_a_model_b_1' args: 'test_new_api.model_a'
  • b_restricted_a_ids Many2many → test_new_api.model_a
    relation='rel_model_a_model_b_2' args: 'test_new_api.model_a'
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • binary Binary
  • binary_computed Binary
    compute='_compute_binary'
  • binary_related_no_store Binary
    readonly=False related='binary' store=False args: 'Binary Related No Store'
  • binary_related_store Binary
    readonly=False related='binary' store=True args: 'Binary Related Store'
Public methods (0)

No public methods.

New fields (3)
  • company_id Many2one → res.company
    required=True args: 'res.company'
  • name Char
  • parent_id Many2one → test_new_api.model_parent
    check_company=True args: 'test_new_api.model_parent'
Public methods (0)

No public methods.

New fields (5)
  • cost Integer
    compute='_compute_cost' readonly=False store=True
  • name Char
    args: 'Name'
  • parent_id Many2one → test_new_api.model_parent_m2o
    ondelete='cascade' args: 'test_new_api.model_parent_m2o'
  • size1 Integer
    compute='_compute_sizes' store=True
  • size2 Integer
    compute='_compute_sizes' store=True
Public methods (1)
  • write(self, vals)

New fields (3)
  • company_id Many2one → res.company
    required=True args: 'res.company'
  • name Char
  • parent_id Many2one → test_new_api.model_parent
    check_company=False args: 'test_new_api.model_parent'
Public methods (0)

No public methods.

New fields (2)
  • bar Integer
  • foo Char
Public methods (0)

No public methods.

New fields (5)
  • image Image
  • image_128 Image
    max_height=128 max_width=128 args: 'Image 128'
  • image_256 Image
    max_height=256 max_width=256 readonly=False related='image' store=False args: 'Image 256'
  • image_512 Image
    max_height=512 max_width=512 readonly=False related='image' store=True args: 'Image 512'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (2)
  • res_id Many2oneReference
    model_field='res_model' args: 'Resource ID'
  • res_model Char
    args: 'Resource Model'
Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    required=True args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • child_ids One2many → test_new_api.model_child_m2o
    string='Children' args: 'test_new_api.model_child_m2o', 'parent_id'
  • cost Integer
    compute='_compute_cost' store=True
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (3)
  • address_id Many2one → res.partner
    check_company=True args: 'res.partner'
  • company_id Many2one → res.company
    required=True args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'quux': 'set null'} selection_add=[('quux', 'Quux')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    selection_add=[('ham', 'Ham')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    store=False args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (2)
  • active Boolean
    default=True
  • my_selection Selection
    default='foo' required=True args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'baz': 'set default'} selection_add=[('baz', 'Baz')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'eggs': 'cascade'} selection_add=[('eggs', 'Eggs')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'bacon': 'set bar'} selection_add=[('bacon', 'Bacon')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'pikachu': 'set default', 'eevee': <expr>} selection_add=[('pikachu', 'Pikachu'), ('eevee', 'Eevee')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'knickers': <expr>} selection_add=[('knickers', 'Oh la la')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    default='foo' required=True args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'divinity': 'set default'} selection_add=[('divinity', 'Divinity: Original Sin 2')]
Public methods (1)
  • write(self, vals)

New fields (3)
  • amount Integer
  • parent_id Many2one → test_new_api.model_shared_cache_compute_parent
    args: 'test_new_api.model_shared_cache_compute_parent'
  • user_id Many2one → res.users
    default=<expr> args: 'res.users'
Public methods (0)

No public methods.

New fields (3)
  • line_ids One2many → test_new_api.model_shared_cache_compute_line
    string='Timesheets' args: 'test_new_api.model_shared_cache_compute_line', 'parent_id'
  • name Char
    string='Task Name'
  • total_amount Integer
    compute='_compute_total_amount' compute_sudo=True store=True
Public methods (0)

No public methods.

New fields (2)
  • amount Monetary
    currency_field='base_currency_id'
  • base_currency_id Many2one → res.currency
    args: 'res.currency'
Public methods (0)

No public methods.

New fields (3)
  • monetary_id Many2one → test_new_api.monetary_base
    args: 'test_new_api.monetary_base'
  • x_amount Monetary
    related='monetary_id.amount'
  • x_currency_id Many2one → res.currency
    related='monetary_id.base_currency_id' args: 'res.currency'
Public methods (0)

No public methods.

New fields (2)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • monetary_id Many2one → test_new_api.monetary_base
    ondelete='cascade' required=True args: 'test_new_api.monetary_base'
Public methods (0)

No public methods.

New fields (3)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • line_ids One2many → test_new_api.monetary_order_line
    args: 'test_new_api.monetary_order_line', 'order_id'
  • total Monetary
    compute='_compute_total' store=True
Public methods (0)

No public methods.

New fields (2)
  • order_id Many2one → test_new_api.monetary_order
    ondelete='cascade' required=True args: 'test_new_api.monetary_order'
  • subtotal Float
    digits=(10, 2)
Public methods (0)

No public methods.

New fields (4)
  • amount Monetary
    related='monetary_id.amount'
  • currency_id Many2one → res.currency
    related='monetary_id.base_currency_id' args: 'res.currency'
  • monetary_id Many2one → test_new_api.monetary_base
    args: 'test_new_api.monetary_base'
  • total Monetary
Public methods (0)

No public methods.

New fields (7)
  • line_ids One2many → test_new_api.move_line
    domain=[('visible', '=', True)] args: 'test_new_api.move_line', 'move_id'
  • payment_ids One2many → test_new_api.payment
    args: 'test_new_api.payment', 'move_id'
  • quantity Integer
    compute='_compute_quantity' store=True
  • tag_id Many2one → test_new_api.multi.tag
    args: 'test_new_api.multi.tag'
  • tag_name Char
    related='tag_id.name'
  • tag_repeat Integer
  • tag_string Char
    compute='_compute_tag_string'
Public methods (0)

No public methods.

New fields (3)
  • move_id Many2one → test_new_api.move
    ondelete='cascade' required=True args: 'test_new_api.move'
  • quantity Integer
  • visible Boolean
    default=True
Public methods (0)

No public methods.

New fields (5)
  • lines One2many → test_new_api.multi.line
    args: 'test_new_api.multi.line', 'multi'
  • name Char
    readonly=True related='partner.name'
  • partner Many2one → res.partner
    args: 'res.partner'
  • partners One2many
    related='partner.child_ids'
  • tags Many2many → test_new_api.multi.tag
    domain=[('name', 'ilike', 'a')] args: 'test_new_api.multi.tag'
Public methods (0)

No public methods.

New fields (4)
  • multi Many2one → test_new_api.multi
    ondelete='cascade' args: 'test_new_api.multi'
  • name Char
  • partner Many2one
    related='multi.partner' store=True
  • tags Many2many → test_new_api.multi.tag
    args: 'test_new_api.multi.tag'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • bar1 Char
    compute='_compute_bars' inverse='_inverse_bar1' store=True
  • bar2 Char
    compute='_compute_bars' inverse='_inverse_bar23' store=True
  • bar3 Char
    compute='_compute_bars' inverse='_inverse_bar23' store=True
  • foo Char
    default='' required=True
Public methods (0)

No public methods.

New fields (2)
  • line_ids One2many → test_new_api.one2many.line
    compute='_compute_line_ids' domain=[('count', '>', 0)] readonly=False store=True args: 'test_new_api.one2many.line', 'container_id'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • container_id Many2one → test_new_api.one2many
    required=True args: 'test_new_api.one2many'
  • count Integer
    default=1
  • name Char
Public methods (0)

No public methods.

New fields (1)
  • move_id Many2one → test_new_api.move
    ondelete='cascade' required=True args: 'test_new_api.move'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    args: 'Name'
  • ship_ids Many2many → test_new_api.ship
    args: 'test_new_api.ship', 'test_new_api_crew', 'pirate_id', 'ship_id'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    args: 'Name'
  • ship_ids Many2many → test_new_api.ship
    args: 'test_new_api.ship', 'test_new_api_crew', 'prisoner_id', 'ship_id'
Public methods (0)

No public methods.

New fields (4)
  • display_name Char
    compute='_compute_display_name' recursive=True store=True
  • full_name Char
    compute='_compute_full_name' recursive=True
  • name Char
    required=True
  • parent Many2one → test_new_api.recursive
    ondelete='cascade' args: 'test_new_api.recursive'
Public methods (0)

No public methods.

New fields (4)
  • children_ids One2many → test_new_api.recursive.tree
    args: 'test_new_api.recursive.tree', 'parent_id'
  • display_name Char
    compute='_compute_display_name' recursive=True store=True
  • name Char
    required=True
  • parent_id Many2one → test_new_api.recursive.tree
    ondelete='cascade' args: 'test_new_api.recursive.tree'
Public methods (0)

No public methods.

New fields (6)
  • message Many2one → test_new_api.message
    args: 'test_new_api.message'
  • message_currency Many2one
    related='message.author' string='Message Author'
  • message_name Text
    related='message.body' related_sudo=False string='Message Body'
  • name Char
  • related_name Char
    readonly=False related='name' string='A related on Name'
  • related_related_name Char
    readonly=False related='related_name' string='A related on a related on Name'
Public methods (0)

No public methods.

New fields (2)
  • bar Many2one → res.country
    required=True args: 'res.country'
  • foo Many2one → res.currency
    ondelete='cascade' required=True args: 'res.currency'
Public methods (0)

No public methods.

New fields (2)
  • bar Many2one → res.country
    required=True args: 'res.country'
  • foo Many2one → res.currency
    ondelete='restrict' required=True args: 'res.currency'
Public methods (0)

No public methods.

New fields (2)
  • other Selection
    args: [('foo', 'Foo'), ('bar', 'Bar')]
  • state Selection
    args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (3)
  • name Char
    args: 'Name'
  • pirate_ids Many2many → test_new_api.pirate
    args: 'test_new_api.pirate', 'test_new_api_crew', 'ship_id', 'pirate_id'
  • prisoner_ids Many2many → test_new_api.prisoner
    args: 'test_new_api.prisoner', 'test_new_api_crew', 'ship_id', 'prisoner_id'
Public methods (0)

No public methods.

New fields (1)
  • state Selection
    args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('done', 'Done')]
Public methods (0)

No public methods.

New fields (3)
  • member_ids One2many → test_new_api.team.member
    args: 'test_new_api.team.member', 'team_id'
  • name Char
  • parent_id Many2one → test_new_api.team
    args: 'test_new_api.team'
Public methods (0)

No public methods.

New fields (3)
  • name Char
    args: 'Name'
  • parent_id Many2one → test_new_api.team
    related='team_id.parent_id' args: 'test_new_api.team'
  • team_id Many2one → test_new_api.team
    args: 'test_new_api.team'
Public methods (0)

No public methods.

New fields (2)
  • middle_ids One2many → test_new_api.trigger.middle
    args: 'test_new_api.trigger.middle', 'left_id'
  • right_id Many2one
    related='middle_ids.right_id' store=True
Public methods (0)

No public methods.

New fields (2)
  • left_id Many2one → test_new_api.trigger.left
    required=True args: 'test_new_api.trigger.left'
  • right_id Many2one → test_new_api.trigger.right
    required=True args: 'test_new_api.trigger.right'
Public methods (0)

No public methods.

New fields (2)
  • left_ids One2many → test_new_api.trigger.left
    args: 'test_new_api.trigger.left', 'right_id'
  • left_size Integer
    compute='_compute_left_size' store=True
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/14.0/test_new_api
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden/Tests
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Martin Trigaux, Denis Ledoux, Christophe Simonis, Nicolas Lempereur, Jeremy Kersten, GitHub, Lucas Perais (lpe), Yannick Tivisse, Christophe Monniez, Jorge Pinna Puissant, Adrian Torres, Xavier-Do, Victor Feyens, Sébastien Theys, Julien Mougenot, fw-bot, svs-odoo, Nasreddin Boulif (bon), Michael Mattiello (mcm), Adrien Widart (awt), Ivan Rasputin
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:31
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - web
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
A module to test the API.

Code Analysis

Views touched (13)
XML IDNameModelTypeStatus
assets_tests Test New Api Assets Tests ir.ui.view qweb Inherits web.assets_tests
category_form category form view test_new_api.category form New
category_tree category tree view test_new_api.category tree New
compute_editable_form test_new_api.compute_editable.form test_new_api.compute_editable form New
discussion_form discussion form view test_new_api.discussion form New
discussion_form_2 discussion form view test_new_api.discussion form New
discussion_form_3 discussion form view test_new_api.discussion form New
message_form message form view test_new_api.message form New
message_tree message tree view test_new_api.message tree New
model_parent_form model parent form view test_new_api.model_parent_m2o form New
model_shared_cache_compute_parent_view_form model_shared_cache_compute_parent_view_form test_new_api.model_shared_cache_compute_parent form New
multi_form multi form view test_new_api.multi form New
multi_tree multi tree view test_new_api.multi tree New
Models touched (90)

New fields (3)
  • float Float
  • float_2 Float
    digits=(16, 2)
  • float_4 Float
    digits=(16, 4)
Public methods (0)

No public methods.

New fields (3)
  • bool_false Boolean
    default=False args: 'b2'
  • bool_true Boolean
    default=True args: 'b1'
  • bool_undefined Boolean
    args: 'b3'
Public methods (0)

No public methods.

New fields (3)
  • name Char
    compute='_compute_name' compute_sudo=True store=True
  • res_id Integer
    required=True
  • res_model Char
    required=True
Public methods (1)
  • modified(self, fnames, *args, **kwargs)

New fields (1)
  • attachment_ids One2many → test_new_api.attachment
    auto_join=True domain=<expr> args: 'test_new_api.attachment', 'res_id'
Public methods (0)

No public methods.

New fields (6)
  • foo Many2one → test_new_api.foo
    compute='_compute_foo' search='_search_foo' args: 'test_new_api.foo'
  • name Char
  • text1 Char
    readonly=False related='foo.text' args: 'Text1'
  • text2 Char
    readonly=False related='foo.text' trim=True args: 'Text2'
  • value1 Integer
    readonly=False related='foo.value1'
  • value2 Integer
    readonly=False related='foo.value2'
Public methods (0)

No public methods.

New fields (3)
  • image_attachment Binary
    attachment=True
  • image_wo_attachment Binary
    attachment=False
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar'
  • baz Char
    compute='_compute_baz' store=True
  • foo Char
Public methods (0)

No public methods.

New fields (9)
  • color Integer
    args: 'Color Index'
  • depth Integer
    compute='_compute_depth'
  • discussions Many2many → test_new_api.discussion
    args: 'test_new_api.discussion', 'test_new_api_discussion_category', 'category', 'discussion'
  • display_name Char
    compute='_compute_display_name' inverse='_inverse_display_name'
  • dummy Char
    store=False
  • name Char
    required=True
  • parent Many2one → test_new_api.category
    ondelete='cascade' args: 'test_new_api.category'
  • parent_path Char
    index=True
  • root_categ Many2one
    compute='_compute_root_categ' args: _name
Public methods (0)

No public methods.

New fields (2)
  • country_id Many2one → test_new_api.country
    args: 'test_new_api.country'
  • name Char
Public methods (0)

No public methods.

New fields (7)
  • count Integer
    company_dependent=True
  • date Date
    company_dependent=True
  • foo Char
    company_dependent=True
  • moment Datetime
    company_dependent=True
  • phi Float
    company_dependent=True digits=(2, 5)
  • tag_id Many2one → test_new_api.multi.tag
    company_dependent=True args: 'test_new_api.multi.tag'
  • truth Boolean
    company_dependent=True
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar' store=True
  • company Many2one → test_new_api.company
    args: 'test_new_api.company'
  • quantity Integer
Public methods (0)

No public methods.

New fields (4)
  • full_name Char
    compute='_compute_full_name'
  • name1 Char
  • name2 Char
  • name3 Char
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar' inverse='_inverse_bar' store=True
  • baz Char
  • foo Char
Public methods (0)

No public methods.

New fields (7)
  • active Boolean
  • bar Char
    compute='_compute_bar' store=True
  • baz Char
    compute='_compute_baz' readonly=False store=True
  • count Integer
    default=0
  • foo Char
  • line_ids One2many → test_new_api.compute.onchange.line
    compute='_compute_line_ids' readonly=False store=True args: 'test_new_api.compute.onchange.line', 'record_id'
  • tag_ids Many2many → test_new_api.multi.tag
    compute='_compute_tag_ids' readonly=False store=True args: 'test_new_api.multi.tag'
Public methods (1)
  • copy(self, default=None)

New fields (3)
  • bar Char
    compute='_compute_bar'
  • foo Char
  • record_id Many2one → test_new_api.compute.onchange
    ondelete='cascade' args: 'test_new_api.compute.onchange'
Public methods (0)

No public methods.

New fields (2)
  • bar Char
    compute='_compute_bar' store=True
  • foo Char
    default=''
Public methods (0)

No public methods.

New fields (2)
  • bar Char
    compute='_compute_bar' readonly=False store=True
  • foo Char
Public methods (0)

No public methods.

New fields (5)
  • bar Char
    compute='_compute_bar'
  • bare Char
    compute='_compute_bare' readonly=False
  • bares Char
    compute='_compute_bares' readonly=False store=True
  • bars Char
    compute='_compute_bars' store=True
  • foo Char
Public methods (0)

No public methods.

New fields (1)
  • name Char
Public methods (0)

No public methods.

New fields (2)
  • editions One2many → test_new_api.creativework.edition
    domain=[('res_model', '=', _name)] args: 'test_new_api.creativework.edition', 'res_id'
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • name Char
  • res_id Integer
    required=True
  • res_model Char
    readonly=False related='res_model_id.model' store=True
  • res_model_id Many2one → ir.model
    ondelete='cascade' required=True args: 'ir.model'
Public methods (0)

No public methods.

New fields (2)
  • editions One2many → test_new_api.creativework.edition
    domain=[('res_model', '=', _name)] args: 'test_new_api.creativework.edition', 'res_id'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • pirate_id Many2one → test_new_api.pirate
    args: 'test_new_api.pirate'
  • prisoner_id Many2one → test_new_api.prisoner
    args: 'test_new_api.prisoner'
  • ship_id Many2one → test_new_api.ship
    args: 'test_new_api.ship'
Public methods (0)

No public methods.

New fields (10)
  • categories Many2many → test_new_api.category
    args: 'test_new_api.category', 'test_new_api_discussion_category', 'discussion', 'category'
  • emails One2many → test_new_api.emailmessage
    args: 'test_new_api.emailmessage', 'discussion'
  • important_emails One2many → test_new_api.emailmessage
    domain=[('important', '=', True)] args: 'test_new_api.emailmessage', 'discussion'
  • important_messages One2many → test_new_api.message
    domain=[('important', '=', True)] args: 'test_new_api.message', 'discussion'
  • message_concat Text
    string='Message concatenate'
  • messages One2many → test_new_api.message
    copy=True args: 'test_new_api.message', 'discussion'
  • moderator Many2one → res.users
    args: 'res.users'
  • name Char
    help='General description of what this discussion is about.' required=True string='Title'
  • participants Many2many → res.users
    context={'active_test': False} args: 'res.users'
  • very_important_messages One2many → test_new_api.message
    domain=<expr> args: 'test_new_api.message', 'discussion'
Public methods (0)

No public methods.

New fields (1)
  • display_name Char
    compute='_compute_display_name' store=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • email_to Char
    args: 'To'
  • message Many2one → test_new_api.message
    ondelete='cascade' required=True args: 'test_new_api.message', 'Message'
Public methods (0)

No public methods.

New fields (1)
  • pArTneR_321_id Many2one → res.partner
    args: 'res.partner'
Public methods (0)

No public methods.

New fields (4)
  • name Char
  • text Char
    trim=False
  • value1 Integer
    change_default=True
  • value2 Integer
Public methods (0)

No public methods.

New fields (2)
  • model_ids One2many → test_new_api.model_many2one_reference
    string='Models' args: 'test_new_api.model_many2one_reference', 'res_id'
  • model_ids_count Integer
    compute='_compute_model_ids_count' args: 'Count'
Public methods (0)

No public methods.

New fields (12)
  • author Many2one → res.users
    default=<expr> args: 'res.users'
  • author_partner Many2one → res.partner
    compute='_compute_author_partner' search='_search_author_partner' args: 'res.partner'
  • body Text
  • discussion Many2one → test_new_api.discussion
    ondelete='cascade' args: 'test_new_api.discussion'
  • discussion_name Char
    readonly=False related='discussion.name' string='Discussion Name'
  • display_name Char
    compute='_compute_display_name' string='Abstract'
  • double_size Integer
    compute='_compute_double_size'
  • important Boolean
  • label Char
    translate=True
  • name Char
    compute='_compute_name' store=True string='Title'
  • priority Integer
  • size Integer
    compute='_compute_size' search='_search_size'
Public methods (1)
  • write(self, vals)

New fields (13)
  • amount Monetary
  • comment1 Html
    sanitize=False
  • comment2 Html
    sanitize_attributes=True strip_classes=False
  • comment3 Html
    sanitize_attributes=True strip_classes=True
  • comment4 Html
    sanitize_attributes=True strip_style=True
  • currency_id Many2one → res.currency
    default=<expr> args: 'res.currency'
  • date Date
  • lang Selection
    selection='_get_lang' string='Language'
  • moment Datetime
  • now Datetime
    compute='_compute_now'
  • number Float
    default=3.14 digits=(10, 2)
  • number2 Float
    digits='New API Precision'
  • reference Reference
    selection='_reference_models' string='Related Document'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • a_restricted_b_ids Many2many → test_new_api.model_b
    relation='rel_model_a_model_b_1' args: 'test_new_api.model_b'
  • b_restricted_b_ids Many2many → test_new_api.model_b
    ondelete='restrict' relation='rel_model_a_model_b_2' args: 'test_new_api.model_b'
  • name Char
Public methods (0)

No public methods.

New fields (7)
  • active Boolean
    default=True
  • active_children_ids One2many → test_new_api.model_active_field
    context={'active_test': True} args: 'test_new_api.model_active_field', 'parent_id'
  • all_children_ids One2many → test_new_api.model_active_field
    context={'active_test': False} args: 'test_new_api.model_active_field', 'parent_id'
  • children_ids One2many → test_new_api.model_active_field
    args: 'test_new_api.model_active_field', 'parent_id'
  • name Char
  • parent_active Boolean
    related='parent_id.active' store=True string='Active Parent'
  • parent_id Many2one → test_new_api.model_active_field
    args: 'test_new_api.model_active_field'
Public methods (0)

No public methods.

New fields (3)
  • a_restricted_a_ids Many2many → test_new_api.model_a
    ondelete='restrict' relation='rel_model_a_model_b_1' args: 'test_new_api.model_a'
  • b_restricted_a_ids Many2many → test_new_api.model_a
    relation='rel_model_a_model_b_2' args: 'test_new_api.model_a'
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • binary Binary
  • binary_computed Binary
    compute='_compute_binary'
  • binary_related_no_store Binary
    readonly=False related='binary' store=False args: 'Binary Related No Store'
  • binary_related_store Binary
    readonly=False related='binary' store=True args: 'Binary Related Store'
Public methods (0)

No public methods.

New fields (3)
  • company_id Many2one → res.company
    required=True args: 'res.company'
  • name Char
  • parent_id Many2one → test_new_api.model_parent
    check_company=True args: 'test_new_api.model_parent'
Public methods (0)

No public methods.

New fields (5)
  • cost Integer
    compute='_compute_cost' readonly=False store=True
  • name Char
    args: 'Name'
  • parent_id Many2one → test_new_api.model_parent_m2o
    ondelete='cascade' args: 'test_new_api.model_parent_m2o'
  • size1 Integer
    compute='_compute_sizes' store=True
  • size2 Integer
    compute='_compute_sizes' store=True
Public methods (1)
  • write(self, vals)

New fields (3)
  • company_id Many2one → res.company
    required=True args: 'res.company'
  • name Char
  • parent_id Many2one → test_new_api.model_parent
    check_company=False args: 'test_new_api.model_parent'
Public methods (0)

No public methods.

New fields (5)
  • image Image
  • image_128 Image
    max_height=128 max_width=128 args: 'Image 128'
  • image_256 Image
    max_height=256 max_width=256 readonly=False related='image' store=False args: 'Image 256'
  • image_512 Image
    max_height=512 max_width=512 readonly=False related='image' store=True args: 'Image 512'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (2)
  • res_id Many2oneReference
    model_field='res_model' args: 'Resource ID'
  • res_model Char
    args: 'Resource Model'
Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    required=True args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • child_ids One2many → test_new_api.model_child_m2o
    string='Children' args: 'test_new_api.model_child_m2o', 'parent_id'
  • cost Integer
    compute='_compute_cost' store=True
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (3)
  • address_id Many2one → res.partner
    check_company=True args: 'res.partner'
  • company_id Many2one → res.company
    required=True args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'quux': 'set null'} selection_add=[('quux', 'Quux')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    selection_add=[('ham', 'Ham')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    store=False args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (2)
  • active Boolean
    default=True
  • my_selection Selection
    default='foo' required=True args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'baz': 'set default'} selection_add=[('baz', 'Baz')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'eggs': 'cascade'} selection_add=[('eggs', 'Eggs')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'bacon': <expr>} selection_add=[('bacon', 'Bacon')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'pikachu': 'set default', 'eevee': <expr>} selection_add=[('pikachu', 'Pikachu'), ('eevee', 'Eevee')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'knickers': <expr>} selection_add=[('knickers', 'Oh la la')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    default='foo' required=True args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (1)
  • my_selection Selection
    ondelete={'divinity': 'set default'} selection_add=[('divinity', 'Divinity: Original Sin 2')]
Public methods (1)
  • write(self, vals)

New fields (3)
  • amount Integer
  • parent_id Many2one → test_new_api.model_shared_cache_compute_parent
    args: 'test_new_api.model_shared_cache_compute_parent'
  • user_id Many2one → res.users
    default=<expr> args: 'res.users'
Public methods (0)

No public methods.

New fields (3)
  • line_ids One2many → test_new_api.model_shared_cache_compute_line
    string='Timesheets' args: 'test_new_api.model_shared_cache_compute_line', 'parent_id'
  • name Char
    string='Task Name'
  • total_amount Integer
    compute='_compute_total_amount' compute_sudo=True store=True
Public methods (0)

No public methods.

New fields (2)
  • amount Monetary
    currency_field='base_currency_id'
  • base_currency_id Many2one → res.currency
    args: 'res.currency'
Public methods (0)

No public methods.

New fields (3)
  • monetary_id Many2one → test_new_api.monetary_base
    args: 'test_new_api.monetary_base'
  • x_amount Monetary
    related='monetary_id.amount'
  • x_currency_id Many2one → res.currency
    related='monetary_id.base_currency_id' args: 'res.currency'
Public methods (0)

No public methods.

New fields (2)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • monetary_id Many2one → test_new_api.monetary_base
    ondelete='cascade' required=True args: 'test_new_api.monetary_base'
Public methods (0)

No public methods.

New fields (3)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • line_ids One2many → test_new_api.monetary_order_line
    args: 'test_new_api.monetary_order_line', 'order_id'
  • total Monetary
    compute='_compute_total' store=True
Public methods (0)

No public methods.

New fields (2)
  • order_id Many2one → test_new_api.monetary_order
    ondelete='cascade' required=True args: 'test_new_api.monetary_order'
  • subtotal Float
    digits=(10, 2)
Public methods (0)

No public methods.

New fields (4)
  • amount Monetary
    related='monetary_id.amount'
  • currency_id Many2one → res.currency
    related='monetary_id.base_currency_id' args: 'res.currency'
  • monetary_id Many2one → test_new_api.monetary_base
    args: 'test_new_api.monetary_base'
  • total Monetary
Public methods (0)

No public methods.

New fields (4)
  • line_ids One2many → test_new_api.move_line
    domain=[('visible', '=', True)] args: 'test_new_api.move_line', 'move_id'
  • quantity Integer
    compute='_compute_quantity' store=True
  • tag_id Many2one → test_new_api.multi.tag
    args: 'test_new_api.multi.tag'
  • tag_name Char
    related='tag_id.name'
Public methods (0)

No public methods.

New fields (3)
  • move_id Many2one → test_new_api.move
    ondelete='cascade' required=True args: 'test_new_api.move'
  • quantity Integer
  • visible Boolean
    default=True
Public methods (0)

No public methods.

New fields (4)
  • lines One2many → test_new_api.multi.line
    args: 'test_new_api.multi.line', 'multi'
  • name Char
    readonly=True related='partner.name'
  • partner Many2one → res.partner
    args: 'res.partner'
  • partners One2many
    related='partner.child_ids'
Public methods (0)

No public methods.

New fields (4)
  • multi Many2one → test_new_api.multi
    ondelete='cascade' args: 'test_new_api.multi'
  • name Char
  • partner Many2one
    related='multi.partner' store=True
  • tags Many2many → test_new_api.multi.tag
    args: 'test_new_api.multi.tag'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • bar1 Char
    compute='_compute_bars' inverse='_inverse_bar1' store=True
  • bar2 Char
    compute='_compute_bars' inverse='_inverse_bar23' store=True
  • bar3 Char
    compute='_compute_bars' inverse='_inverse_bar23' store=True
  • foo Char
    default='' required=True
Public methods (0)

No public methods.

New fields (2)
  • line_ids One2many → test_new_api.one2many.line
    compute='_compute_line_ids' domain=[('count', '>', 0)] readonly=False store=True args: 'test_new_api.one2many.line', 'container_id'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • container_id Many2one → test_new_api.one2many
    required=True args: 'test_new_api.one2many'
  • count Integer
    default=1
  • name Char
Public methods (0)

No public methods.

New fields (1)
  • move_id Many2one → test_new_api.move
    ondelete='cascade' required=True args: 'test_new_api.move'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    args: 'Name'
  • ship_ids Many2many → test_new_api.ship
    args: 'test_new_api.ship', 'test_new_api_crew', 'pirate_id', 'ship_id'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    args: 'Name'
  • ship_ids Many2many → test_new_api.ship
    args: 'test_new_api.ship', 'test_new_api_crew', 'prisoner_id', 'ship_id'
Public methods (0)

No public methods.

New fields (4)
  • display_name Char
    compute='_compute_display_name' store=True
  • full_name Char
    compute='_compute_full_name'
  • name Char
    required=True
  • parent Many2one → test_new_api.recursive
    ondelete='cascade' args: 'test_new_api.recursive'
Public methods (0)

No public methods.

New fields (4)
  • children_ids One2many → test_new_api.recursive.tree
    args: 'test_new_api.recursive.tree', 'parent_id'
  • display_name Char
    compute='_compute_display_name' store=True
  • name Char
    required=True
  • parent_id Many2one → test_new_api.recursive.tree
    ondelete='cascade' args: 'test_new_api.recursive.tree'
Public methods (0)

No public methods.

New fields (6)
  • message Many2one → test_new_api.message
    args: 'test_new_api.message'
  • message_currency Many2one
    related='message.author' string='Message Author'
  • message_name Text
    related='message.body' related_sudo=False string='Message Body'
  • name Char
  • related_name Char
    readonly=False related='name' string='A related on Name'
  • related_related_name Char
    readonly=False related='related_name' string='A related on a related on Name'
Public methods (0)

No public methods.

New fields (2)
  • bar Many2one → res.country
    required=True args: 'res.country'
  • foo Many2one → res.currency
    ondelete='cascade' required=True args: 'res.currency'
Public methods (0)

No public methods.

New fields (2)
  • bar Many2one → res.country
    required=True args: 'res.country'
  • foo Many2one → res.currency
    ondelete='restrict' required=True args: 'res.currency'
Public methods (0)

No public methods.

New fields (2)
  • other Selection
    args: [('foo', 'Foo'), ('bar', 'Bar')]
  • state Selection
    args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (3)
  • name Char
    args: 'Name'
  • pirate_ids Many2many → test_new_api.pirate
    args: 'test_new_api.pirate', 'test_new_api_crew', 'ship_id', 'pirate_id'
  • prisoner_ids Many2many → test_new_api.prisoner
    args: 'test_new_api.prisoner', 'test_new_api_crew', 'ship_id', 'prisoner_id'
Public methods (0)

No public methods.

New fields (1)
  • state Selection
    args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('done', 'Done')]
Public methods (0)

No public methods.

New fields (3)
  • member_ids One2many → test_new_api.team.member
    args: 'test_new_api.team.member', 'team_id'
  • name Char
  • parent_id Many2one → test_new_api.team
    args: 'test_new_api.team'
Public methods (0)

No public methods.

New fields (3)
  • name Char
    args: 'Name'
  • parent_id Many2one → test_new_api.team
    related='team_id.parent_id' args: 'test_new_api.team'
  • team_id Many2one → test_new_api.team
    args: 'test_new_api.team'
Public methods (0)

No public methods.

New fields (2)
  • middle_ids One2many → test_new_api.trigger.middle
    args: 'test_new_api.trigger.middle', 'left_id'
  • right_id Many2one
    related='middle_ids.right_id' store=True
Public methods (0)

No public methods.

New fields (2)
  • left_id Many2one → test_new_api.trigger.left
    required=True args: 'test_new_api.trigger.left'
  • right_id Many2one → test_new_api.trigger.right
    required=True args: 'test_new_api.trigger.right'
Public methods (0)

No public methods.

New fields (2)
  • left_ids One2many → test_new_api.trigger.left
    args: 'test_new_api.trigger.left', 'right_id'
  • left_size Integer
    compute='_compute_left_size' store=True
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/13.0/test_new_api
VERSION
VERSION 1.0
CATEGORY
CATEGORYTests
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Martin Trigaux, Denis Ledoux, Christophe Simonis, Simon Lejeune, Guewen Baconnier, Nicolas Lempereur, Jeremy Kersten, Lucas Perais (lpe), Yannick Tivisse, Romain Derie, Jorge Pinna Puissant, Adrian Torres, Xavier-Do, Victor Feyens, Sébastien Theys, fja-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:06:44
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - web
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
A module to test the API.

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
assets_tests Test New Api Assets Tests ir.ui.view qweb Inherits web.assets_tests
category_form category form view test_new_api.category form New
category_tree category tree view test_new_api.category tree New
discussion_form discussion form view test_new_api.discussion form New
discussion_form_2 discussion form view test_new_api.discussion form New
discussion_form_3 discussion form view test_new_api.discussion form New
message_form message form view test_new_api.message form New
message_tree message tree view test_new_api.message tree New
model_shared_cache_compute_parent_view_form model_shared_cache_compute_parent_view_form test_new_api.model_shared_cache_compute_parent form New
multi_form multi form view test_new_api.multi form New
multi_tree multi tree view test_new_api.multi tree New
Models touched (67)

New fields (3)
  • float Float
  • float_2 Float
    digits=(16, 2)
  • float_4 Float
    digits=(16, 4)
Public methods (0)

No public methods.

New fields (3)
  • bool_false Boolean
    default=False args: 'b2'
  • bool_true Boolean
    default=True args: 'b1'
  • bool_undefined Boolean
    args: 'b3'
Public methods (0)

No public methods.

New fields (3)
  • name Char
    compute='_compute_name' compute_sudo=True store=True
  • res_id Integer
    required=True
  • res_model Char
    required=True
Public methods (1)
  • modified(self, fnames, *args, **kwargs)

New fields (1)
  • attachment_ids One2many → test_new_api.attachment
    auto_join=True domain=<expr> args: 'test_new_api.attachment', 'res_id'
Public methods (0)

No public methods.

New fields (6)
  • foo Many2one → test_new_api.foo
    compute='_compute_foo' search='_search_foo' args: 'test_new_api.foo'
  • name Char
  • text1 Char
    readonly=False related='foo.text' args: 'Text1'
  • text2 Char
    readonly=False related='foo.text' trim=True args: 'Text2'
  • value1 Integer
    readonly=False related='foo.value1'
  • value2 Integer
    readonly=False related='foo.value2'
Public methods (0)

No public methods.

New fields (3)
  • image_attachment Binary
    attachment=True
  • image_wo_attachment Binary
    attachment=False
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar'
  • baz Char
    compute='_compute_baz' store=True
  • foo Char
Public methods (0)

No public methods.

New fields (9)
  • color Integer
    args: 'Color Index'
  • depth Integer
    compute='_compute_depth'
  • discussions Many2many → test_new_api.discussion
    args: 'test_new_api.discussion', 'test_new_api_discussion_category', 'category', 'discussion'
  • display_name Char
    compute='_compute_display_name' inverse='_inverse_display_name'
  • dummy Char
    store=False
  • name Char
    required=True
  • parent Many2one → test_new_api.category
    ondelete='cascade' args: 'test_new_api.category'
  • parent_path Char
    index=True
  • root_categ Many2one
    compute='_compute_root_categ' args: _name
Public methods (0)

No public methods.

New fields (2)
  • country_id Many2one → test_new_api.country
    args: 'test_new_api.country'
  • name Char
Public methods (0)

No public methods.

New fields (7)
  • count Integer
    company_dependent=True
  • date Date
    company_dependent=True
  • foo Char
    company_dependent=True
  • moment Datetime
    company_dependent=True
  • phi Float
    company_dependent=True digits=(2, 5)
  • tag_id Many2one → test_new_api.multi.tag
    company_dependent=True args: 'test_new_api.multi.tag'
  • truth Boolean
    company_dependent=True
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar' store=True
  • company Many2one → test_new_api.company
    args: 'test_new_api.company'
  • quantity Integer
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar' inverse='_inverse_bar' store=True
  • baz Char
  • foo Char
Public methods (0)

No public methods.

New fields (4)
  • active Boolean
  • bar Char
    compute='_compute_bar' store=True
  • baz Char
    compute='_compute_baz' readonly=False store=True
  • foo Char
Public methods (0)

No public methods.

New fields (2)
  • bar Char
    compute='_compute_bar' store=True
  • foo Char
    default=''
Public methods (0)

No public methods.

New fields (1)
  • name Char
Public methods (0)

No public methods.

New fields (2)
  • editions One2many → test_new_api.creativework.edition
    domain=[('res_model', '=', _name)] args: 'test_new_api.creativework.edition', 'res_id'
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • name Char
  • res_id Integer
    required=True
  • res_model Char
    readonly=False related='res_model_id.model' store=True
  • res_model_id Many2one → ir.model
    required=True args: 'ir.model'
Public methods (0)

No public methods.

New fields (2)
  • editions One2many → test_new_api.creativework.edition
    domain=[('res_model', '=', _name)] args: 'test_new_api.creativework.edition', 'res_id'
  • name Char
Public methods (0)

No public methods.

New fields (10)
  • categories Many2many → test_new_api.category
    args: 'test_new_api.category', 'test_new_api_discussion_category', 'discussion', 'category'
  • emails One2many → test_new_api.emailmessage
    args: 'test_new_api.emailmessage', 'discussion'
  • important_emails One2many → test_new_api.emailmessage
    domain=[('important', '=', True)] args: 'test_new_api.emailmessage', 'discussion'
  • important_messages One2many → test_new_api.message
    domain=[('important', '=', True)] args: 'test_new_api.message', 'discussion'
  • message_concat Text
    string='Message concatenate'
  • messages One2many → test_new_api.message
    copy=True args: 'test_new_api.message', 'discussion'
  • moderator Many2one → res.users
    args: 'res.users'
  • name Char
    help='General description of what this discussion is about.' required=True string='Title'
  • participants Many2many → res.users
    context={'active_test': False} args: 'res.users'
  • very_important_messages One2many → test_new_api.message
    domain=<expr> args: 'test_new_api.message', 'discussion'
Public methods (0)

No public methods.

New fields (1)
  • display_name Char
    compute='_compute_display_name' store=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • email_to Char
    args: 'To'
  • message Many2one → test_new_api.message
    ondelete='cascade' required=True args: 'test_new_api.message', 'Message'
Public methods (0)

No public methods.

New fields (1)
  • pArTneR_321_id Many2one → res.partner
    args: 'res.partner'
Public methods (0)

No public methods.

New fields (4)
  • name Char
  • text Char
    trim=False
  • value1 Integer
    change_default=True
  • value2 Integer
Public methods (0)

No public methods.

New fields (2)
  • model_ids One2many → test_new_api.model_many2one_reference
    string='Models' args: 'test_new_api.model_many2one_reference', 'res_id'
  • model_ids_count Integer
    compute='_compute_model_ids_count' args: 'Count'
Public methods (0)

No public methods.

New fields (12)
  • author Many2one → res.users
    default=<expr> args: 'res.users'
  • author_partner Many2one → res.partner
    compute='_compute_author_partner' search='_search_author_partner' args: 'res.partner'
  • body Text
  • discussion Many2one → test_new_api.discussion
    ondelete='cascade' args: 'test_new_api.discussion'
  • discussion_name Char
    readonly=False related='discussion.name' string='Discussion Name'
  • display_name Char
    compute='_compute_display_name' string='Abstract'
  • double_size Integer
    compute='_compute_double_size'
  • important Boolean
  • label Char
    translate=True
  • name Char
    compute='_compute_name' store=True string='Title'
  • priority Integer
  • size Integer
    compute='_compute_size' search='_search_size'
Public methods (1)
  • write(self, vals)

New fields (13)
  • amount Monetary
  • comment1 Html
    sanitize=False
  • comment2 Html
    sanitize_attributes=True strip_classes=False
  • comment3 Html
    sanitize_attributes=True strip_classes=True
  • comment4 Html
    sanitize_attributes=True strip_style=True
  • currency_id Many2one → res.currency
    default=<expr> args: 'res.currency'
  • date Date
  • lang Selection
    selection='_get_lang' string='Language'
  • moment Datetime
  • now Datetime
    compute='_compute_now'
  • number Float
    default=3.14 digits=(10, 2)
  • number2 Float
    digits='New API Precision'
  • reference Reference
    selection='_reference_models' string='Related Document'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • a_restricted_b_ids Many2many → test_new_api.model_b
    relation='rel_model_a_model_b_1' args: 'test_new_api.model_b'
  • b_restricted_b_ids Many2many → test_new_api.model_b
    ondelete='restrict' relation='rel_model_a_model_b_2' args: 'test_new_api.model_b'
  • name Char
Public methods (0)

No public methods.

New fields (6)
  • active Boolean
    default=True
  • active_children_ids One2many → test_new_api.model_active_field
    context={'active_test': True} args: 'test_new_api.model_active_field', 'parent_id'
  • all_children_ids One2many → test_new_api.model_active_field
    context={'active_test': False} args: 'test_new_api.model_active_field', 'parent_id'
  • children_ids One2many → test_new_api.model_active_field
    args: 'test_new_api.model_active_field', 'parent_id'
  • parent_active Boolean
    related='parent_id.active' store=True string='Active Parent'
  • parent_id Many2one → test_new_api.model_active_field
    args: 'test_new_api.model_active_field'
Public methods (0)

No public methods.

New fields (3)
  • a_restricted_a_ids Many2many → test_new_api.model_a
    ondelete='restrict' relation='rel_model_a_model_b_1' args: 'test_new_api.model_a'
  • b_restricted_a_ids Many2many → test_new_api.model_a
    relation='rel_model_a_model_b_2' args: 'test_new_api.model_a'
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • binary Binary
  • binary_computed Binary
    compute='_compute_binary'
  • binary_related_no_store Binary
    readonly=False related='binary' store=False args: 'Binary Related No Store'
  • binary_related_store Binary
    readonly=False related='binary' store=True args: 'Binary Related Store'
Public methods (0)

No public methods.

New fields (3)
  • company_id Many2one → res.company
    required=True args: 'res.company'
  • name Char
  • parent_id Many2one → test_new_api.model_parent
    check_company=True args: 'test_new_api.model_parent'
Public methods (0)

No public methods.

New fields (4)
  • name Char
    args: 'Name'
  • parent_id Many2one → test_new_api.model_parent_m2o
    ondelete='cascade' args: 'test_new_api.model_parent_m2o'
  • size1 Integer
    compute='_compute_sizes' store=True
  • size2 Integer
    compute='_compute_sizes' store=True
Public methods (1)
  • write(self, vals)

New fields (3)
  • company_id Many2one → res.company
    required=True args: 'res.company'
  • name Char
  • parent_id Many2one → test_new_api.model_parent
    check_company=False args: 'test_new_api.model_parent'
Public methods (0)

No public methods.

New fields (5)
  • image Image
  • image_128 Image
    max_height=128 max_width=128 args: 'Image 128'
  • image_256 Image
    max_height=256 max_width=256 readonly=False related='image' store=False args: 'Image 256'
  • image_512 Image
    max_height=512 max_width=512 readonly=False related='image' store=True args: 'Image 512'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (2)
  • res_id Many2oneReference
    model_field='res_model' args: 'Resource ID'
  • res_model Char
    args: 'Resource Model'
Public methods (0)

No public methods.

New fields (2)
  • company_id Many2one → res.company
    required=True args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (2)
  • child_ids One2many → test_new_api.model_child_m2o
    string='Children' args: 'test_new_api.model_child_m2o', 'parent_id'
  • name Char
    args: 'Name'
Public methods (0)

No public methods.

New fields (3)
  • address_id Many2one → res.partner
    check_company=True args: 'res.partner'
  • company_id Many2one → res.company
    required=True args: 'res.company'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • amount Integer
  • parent_id Many2one → test_new_api.model_shared_cache_compute_parent
    args: 'test_new_api.model_shared_cache_compute_parent'
  • user_id Many2one → res.users
    default=<expr> args: 'res.users'
Public methods (0)

No public methods.

New fields (3)
  • line_ids One2many → test_new_api.model_shared_cache_compute_line
    string='Timesheets' args: 'test_new_api.model_shared_cache_compute_line', 'parent_id'
  • name Char
    string='Task Name'
  • total_amount Integer
    compute='_compute_total_amount' compute_sudo=True store=True
Public methods (0)

No public methods.

New fields (2)
  • amount Monetary
    currency_field='base_currency_id'
  • base_currency_id Many2one → res.currency
    args: 'res.currency'
Public methods (0)

No public methods.

New fields (3)
  • monetary_id Many2one → test_new_api.monetary_base
    args: 'test_new_api.monetary_base'
  • x_amount Monetary
    related='monetary_id.amount'
  • x_currency_id Many2one → res.currency
    related='monetary_id.base_currency_id' args: 'res.currency'
Public methods (0)

No public methods.

New fields (2)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • monetary_id Many2one → test_new_api.monetary_base
    ondelete='cascade' required=True args: 'test_new_api.monetary_base'
Public methods (0)

No public methods.

New fields (3)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • line_ids One2many → test_new_api.monetary_order_line
    args: 'test_new_api.monetary_order_line', 'order_id'
  • total Monetary
    compute='_compute_total' store=True
Public methods (0)

No public methods.

New fields (2)
  • order_id Many2one → test_new_api.monetary_order
    ondelete='cascade' required=True args: 'test_new_api.monetary_order'
  • subtotal Float
    digits=(10, 2)
Public methods (0)

No public methods.

New fields (3)
  • amount Monetary
    related='monetary_id.amount'
  • currency_id Many2one → res.currency
    related='monetary_id.base_currency_id' args: 'res.currency'
  • monetary_id Many2one → test_new_api.monetary_base
    args: 'test_new_api.monetary_base'
Public methods (0)

No public methods.

New fields (2)
  • line_ids One2many → test_new_api.move_line
    domain=[('visible', '=', True)] args: 'test_new_api.move_line', 'move_id'
  • quantity Integer
    compute='_compute_quantity' store=True
Public methods (0)

No public methods.

New fields (3)
  • move_id Many2one → test_new_api.move
    ondelete='cascade' required=True args: 'test_new_api.move'
  • quantity Integer
  • visible Boolean
    default=True
Public methods (0)

No public methods.

New fields (4)
  • lines One2many → test_new_api.multi.line
    args: 'test_new_api.multi.line', 'multi'
  • name Char
    readonly=True related='partner.name'
  • partner Many2one → res.partner
    args: 'res.partner'
  • partners One2many
    related='partner.child_ids'
Public methods (0)

No public methods.

New fields (4)
  • multi Many2one → test_new_api.multi
    ondelete='cascade' args: 'test_new_api.multi'
  • name Char
  • partner Many2one → res.partner
    args: 'res.partner'
  • tags Many2many → test_new_api.multi.tag
    args: 'test_new_api.multi.tag'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • bar1 Char
    compute='_compute_bars' inverse='_inverse_bar1' store=True
  • bar2 Char
    compute='_compute_bars' inverse='_inverse_bar23' store=True
  • bar3 Char
    compute='_compute_bars' inverse='_inverse_bar23' store=True
  • foo Char
    default='' required=True
Public methods (0)

No public methods.

New fields (2)
  • line_ids One2many → test_new_api.one2many.line
    compute='_compute_line_ids' domain=[('count', '>', 0)] readonly=False store=True args: 'test_new_api.one2many.line', 'container_id'
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • container_id Many2one → test_new_api.one2many
    required=True args: 'test_new_api.one2many'
  • count Integer
    default=1
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • display_name Char
    compute='_compute_display_name' store=True
  • full_name Char
    compute='_compute_full_name'
  • name Char
    required=True
  • parent Many2one → test_new_api.recursive
    ondelete='cascade' args: 'test_new_api.recursive'
Public methods (0)

No public methods.

New fields (4)
  • children_ids One2many → test_new_api.recursive.tree
    args: 'test_new_api.recursive.tree', 'parent_id'
  • display_name Char
    compute='_compute_display_name' store=True
  • name Char
    required=True
  • parent_id Many2one → test_new_api.recursive.tree
    ondelete='cascade' args: 'test_new_api.recursive.tree'
Public methods (0)

No public methods.

New fields (6)
  • message Many2one → test_new_api.message
    args: 'test_new_api.message'
  • message_currency Many2one
    related='message.author' string='Message Author'
  • message_name Text
    related='message.body' related_sudo=False string='Message Body'
  • name Char
  • related_name Char
    readonly=False related='name' string='A related on Name'
  • related_related_name Char
    readonly=False related='related_name' string='A related on a related on Name'
Public methods (0)

No public methods.

New fields (2)
  • bar Many2one → res.country
    required=True args: 'res.country'
  • foo Many2one → res.currency
    ondelete='cascade' required=True args: 'res.currency'
Public methods (0)

No public methods.

New fields (2)
  • bar Many2one → res.country
    required=True args: 'res.country'
  • foo Many2one → res.currency
    ondelete='restrict' required=True args: 'res.currency'
Public methods (0)

No public methods.

New fields (2)
  • other Selection
    args: [('foo', 'Foo'), ('bar', 'Bar')]
  • state Selection
    args: [('foo', 'Foo'), ('bar', 'Bar')]
Public methods (0)

No public methods.

New fields (1)
  • state Selection
    args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('done', 'Done')]
Public methods (0)

No public methods.

New fields (2)
  • middle_ids One2many → test_new_api.trigger.middle
    args: 'test_new_api.trigger.middle', 'left_id'
  • right_id Many2one
    related='middle_ids.right_id' store=True
Public methods (0)

No public methods.

New fields (2)
  • left_id Many2one → test_new_api.trigger.left
    required=True args: 'test_new_api.trigger.left'
  • right_id Many2one → test_new_api.trigger.right
    required=True args: 'test_new_api.trigger.right'
Public methods (0)

No public methods.

New fields (2)
  • left_ids One2many → test_new_api.trigger.left
    args: 'test_new_api.trigger.left', 'right_id'
  • left_size Integer
    compute='_compute_left_size' store=True
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/12.0/test_new_api
VERSION
VERSION 1.0
CATEGORY
CATEGORYTests
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Christophe Matthieu, Martin Trigaux, Olivier Dony, Thibault Delavallée, Christophe Simonis, Xavier Morel, GitHub, Lucas Perais (lpe), Yannick Tivisse, qsm-odoo, Christophe Monniez, Jorge Pinna Puissant, Alexandre Kühn, Adrian Torres, Xavier-Do, Kinjal Mehta, Quentin Smetz (qsm)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:57:02
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - web
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
A module to test the API.

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
assets_backend test_new_api backend assets ir.ui.view qweb Inherits web.assets_backend
category_form category form view test_new_api.category form New
category_tree category tree view test_new_api.category tree New
discussion_form discussion form view test_new_api.discussion form New
discussion_form_2 discussion form view test_new_api.discussion form New
discussion_form_3 discussion form view test_new_api.discussion form New
message_form message form view test_new_api.message form New
message_tree message tree view test_new_api.message tree New
multi_form multi form view test_new_api.multi form New
multi_tree multi tree view test_new_api.multi tree New
Models touched (28)

New fields (3)
  • bool_false Boolean
    default=False args: 'b2'
  • bool_true Boolean
    default=True args: 'b1'
  • bool_undefined Boolean
    args: 'b3'
Public methods (0)

No public methods.

New fields (4)
  • foo Many2one → test_new_api.foo
    compute='_compute_foo' args: 'test_new_api.foo'
  • name Char
  • value1 Integer
    readonly=False related='foo.value1'
  • value2 Integer
    readonly=False related='foo.value2'
Public methods (0)

No public methods.

New fields (3)
  • image_attachment Binary
    attachment=True
  • image_wo_attachment Binary
    attachment=False
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar'
  • baz Char
    compute='_compute_baz' store=True
  • foo Char
Public methods (0)

No public methods.

New fields (8)
  • color Integer
    args: 'Color Index'
  • discussions Many2many → test_new_api.discussion
    args: 'test_new_api.discussion', 'test_new_api_discussion_category', 'category', 'discussion'
  • display_name Char
    compute='_compute_display_name' inverse='_inverse_display_name'
  • dummy Char
    store=False
  • name Char
    required=True
  • parent Many2one → test_new_api.category
    ondelete='cascade' args: 'test_new_api.category'
  • parent_path Char
    index=True
  • root_categ Many2one
    compute='_compute_root_categ' args: _name
Public methods (1)
  • read(self, fields=None, load='_classic_read')
    @api.multi

New fields (4)
  • date Date
    company_dependent=True
  • foo Char
    company_dependent=True
  • moment Datetime
    company_dependent=True
  • tag_id Many2one → test_new_api.multi.tag
    company_dependent=True args: 'test_new_api.multi.tag'
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar' store=True
  • company Many2one → test_new_api.company
    args: 'test_new_api.company'
  • quantity Integer
Public methods (0)

No public methods.

New fields (2)
  • bar Char
    compute='_compute_bar' inverse='_inverse_bar' store=True
  • foo Char
Public methods (0)

No public methods.

New fields (2)
  • bar Char
    compute='_compute_bar' store=True
  • foo Char
    default=''
Public methods (0)

No public methods.

New fields (2)
  • editions One2many → test_new_api.creativework.edition
    domain=[('res_model', '=', _name)] args: 'test_new_api.creativework.edition', 'res_id'
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • name Char
  • res_id Integer
    required=True
  • res_model Char
    readonly=False related='res_model_id.model' store=True
  • res_model_id Many2one → ir.model
    required=True args: 'ir.model'
Public methods (0)

No public methods.

New fields (2)
  • editions One2many → test_new_api.creativework.edition
    domain=[('res_model', '=', _name)] args: 'test_new_api.creativework.edition', 'res_id'
  • name Char
Public methods (0)

No public methods.

New fields (10)
  • categories Many2many → test_new_api.category
    args: 'test_new_api.category', 'test_new_api_discussion_category', 'discussion', 'category'
  • emails One2many → test_new_api.emailmessage
    args: 'test_new_api.emailmessage', 'discussion'
  • important_emails One2many → test_new_api.emailmessage
    domain=[('important', '=', True)] args: 'test_new_api.emailmessage', 'discussion'
  • important_messages One2many → test_new_api.message
    domain=[('important', '=', True)] args: 'test_new_api.message', 'discussion'
  • message_concat Text
    string='Message concatenate'
  • messages One2many → test_new_api.message
    copy=True args: 'test_new_api.message', 'discussion'
  • moderator Many2one → res.users
    args: 'res.users'
  • name Char
    help='General description of what this discussion is about.' required=True string='Title'
  • participants Many2many → res.users
    context={'active_test': False} args: 'res.users'
  • very_important_messages One2many → test_new_api.message
    domain=<expr> args: 'test_new_api.message', 'discussion'
Public methods (0)

No public methods.

New fields (2)
  • email_to Char
    args: 'To'
  • message Many2one → test_new_api.message
    ondelete='cascade' required=True args: 'test_new_api.message', 'Message'
Public methods (0)

No public methods.

New fields (1)
  • pArTneR_321_id Many2one → res.partner
    args: 'res.partner'
Public methods (0)

No public methods.

New fields (3)
  • name Char
  • value1 Integer
    change_default=True
  • value2 Integer
Public methods (0)

No public methods.

New fields (11)
  • author Many2one → res.users
    default=<expr> args: 'res.users'
  • author_partner Many2one → res.partner
    compute='_compute_author_partner' search='_search_author_partner' args: 'res.partner'
  • body Text
  • discussion Many2one → test_new_api.discussion
    ondelete='cascade' args: 'test_new_api.discussion'
  • discussion_name Char
    readonly=False related='discussion.name' string='Discussion Name'
  • display_name Char
    compute='_compute_display_name' string='Abstract'
  • double_size Integer
    compute='_compute_double_size'
  • important Boolean
  • label Char
    translate=True
  • name Char
    compute='_compute_name' store=True string='Title'
  • size Integer
    compute='_compute_size' search='_search_size'
Public methods (0)

No public methods.

New fields (11)
  • amount Monetary
  • comment1 Html
    sanitize=False
  • comment2 Html
    sanitize_attributes=True strip_classes=False
  • comment3 Html
    sanitize_attributes=True strip_classes=True
  • comment4 Html
    sanitize_attributes=True strip_style=True
  • currency_id Many2one → res.currency
    default=<expr> args: 'res.currency'
  • date Date
  • lang Selection
    selection='_get_lang' string='Language'
  • now Datetime
    compute='_compute_now'
  • number Float
    default=3.14 digits=(10, 2)
  • reference Reference
    selection='_reference_models' string='Related Document'
Public methods (0)

No public methods.

New fields (2)
  • amount Monetary
    currency_field='base_currency_id'
  • base_currency_id Many2one → res.currency
    args: 'res.currency'
Public methods (0)

No public methods.

New fields (3)
  • monetary_id Many2one → test_new_api.monetary_base
    args: 'test_new_api.monetary_base'
  • x_amount Monetary
    related='monetary_id.amount'
  • x_currency_id Many2one → res.currency
    related='monetary_id.base_currency_id' args: 'res.currency'
Public methods (0)

No public methods.

New fields (2)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • monetary_id Many2one → test_new_api.monetary_base
    ondelete='cascade' required=True args: 'test_new_api.monetary_base'
Public methods (0)

No public methods.

New fields (3)
  • amount Monetary
    related='monetary_id.amount'
  • currency_id Many2one → res.currency
    related='monetary_id.base_currency_id' args: 'res.currency'
  • monetary_id Many2one → test_new_api.monetary_base
    args: 'test_new_api.monetary_base'
Public methods (0)

No public methods.

New fields (3)
  • lines One2many → test_new_api.multi.line
    args: 'test_new_api.multi.line', 'multi'
  • name Char
    readonly=True related='partner.name'
  • partner Many2one → res.partner
    args: 'res.partner'
Public methods (0)

No public methods.

New fields (4)
  • multi Many2one → test_new_api.multi
    ondelete='cascade' args: 'test_new_api.multi'
  • name Char
  • partner Many2one → res.partner
    args: 'res.partner'
  • tags Many2many → test_new_api.multi.tag
    args: 'test_new_api.multi.tag'
Public methods (0)

No public methods.

New fields (2)
  • active Boolean
    default=True
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • bar1 Char
    compute='_compute_bars' inverse='_inverse_bar1' store=True
  • bar2 Char
    compute='_compute_bars' inverse='_inverse_bar23' store=True
  • bar3 Char
    compute='_compute_bars' inverse='_inverse_bar23' store=True
  • foo Char
    default='' required=True
Public methods (0)

No public methods.

New fields (3)
  • display_name Char
    compute='_compute_display_name' store=True
  • name Char
    required=True
  • parent Many2one → test_new_api.recursive
    ondelete='cascade' args: 'test_new_api.recursive'
Public methods (0)

No public methods.

New fields (6)
  • message Many2one → test_new_api.message
    args: 'test_new_api.message'
  • message_currency Many2one
    readonly=False related='message.author' string='Message Author'
  • message_name Text
    readonly=False related='message.body' related_sudo=False string='Message Body'
  • name Char
  • related_name Char
    readonly=False related='name' string='A related on Name'
  • related_related_name Char
    readonly=False related='related_name' string='A related on a related on Name'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/11.0/test_new_api
VERSION
VERSION 1.0
CATEGORY
CATEGORYTests
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Christophe Matthieu, Olivier Dony, Christophe Simonis, Xavier Morel, Nicolas Lempereur, qdp-odoo, Aaron Bohy, GitHub, Lucas Perais (lpe), qsm-odoo, Martin Geubelle, Adrian Torres, mreficent, kujiu, nle-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:53:44
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - web
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
A module to test the API.

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
assets_backend test_new_api backend assets ir.ui.view qweb Inherits web.assets_backend
category_form category form view test_new_api.category form New
category_tree category tree view test_new_api.category tree New
discussion_form discussion form view test_new_api.discussion form New
discussion_form_2 discussion form view test_new_api.discussion form New
discussion_form_3 discussion form view test_new_api.discussion form New
message_form message form view test_new_api.message form New
message_tree message tree view test_new_api.message tree New
multi_form multi form view test_new_api.multi form New
multi_tree multi tree view test_new_api.multi tree New
Models touched (21)

New fields (3)
  • bool_false Boolean
    default=False args: 'b2'
  • bool_true Boolean
    default=True args: 'b1'
  • bool_undefined Boolean
    args: 'b3'
Public methods (0)

No public methods.

New fields (4)
  • foo Many2one → test_new_api.foo
    compute='_compute_foo' args: 'test_new_api.foo'
  • name Char
  • value1 Integer
    related='foo.value1'
  • value2 Integer
    related='foo.value2'
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar'
  • baz Char
    compute='_compute_baz' store=True
  • foo Char
Public methods (0)

No public methods.

New fields (7)
  • color Integer
    args: 'Color Index'
  • discussions Many2many → test_new_api.discussion
    args: 'test_new_api.discussion', 'test_new_api_discussion_category', 'category', 'discussion'
  • display_name Char
    compute='_compute_display_name' inverse='_inverse_display_name'
  • dummy Char
    store=False
  • name Char
    required=True
  • parent Many2one → test_new_api.category
    args: 'test_new_api.category'
  • root_categ Many2one
    compute='_compute_root_categ' args: _name
Public methods (1)
  • read(self, fields=None, load='_classic_read')
    @api.multi

New fields (4)
  • date Date
    company_dependent=True
  • foo Char
    company_dependent=True
  • moment Datetime
    company_dependent=True
  • tag_id Many2one → test_new_api.multi.tag
    company_dependent=True args: 'test_new_api.multi.tag'
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar' store=True
  • company Many2one → test_new_api.company
    args: 'test_new_api.company'
  • quantity Integer
Public methods (0)

No public methods.

New fields (2)
  • bar Char
    compute='_compute_bar' inverse='_inverse_bar' store=True
  • foo Char
Public methods (0)

No public methods.

New fields (2)
  • bar Char
    compute='_compute_bar' store=True
  • foo Char
    default=''
Public methods (0)

No public methods.

New fields (2)
  • editions One2many → test_new_api.creativework.edition
    domain=[('res_model', '=', _name)] args: 'test_new_api.creativework.edition', 'res_id'
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • name Char
  • res_id Integer
    required=True
  • res_model Char
    related='res_model_id.model' store=True
  • res_model_id Many2one → ir.model
    required=True args: 'ir.model'
Public methods (0)

No public methods.

New fields (2)
  • editions One2many → test_new_api.creativework.edition
    domain=[('res_model', '=', _name)] args: 'test_new_api.creativework.edition', 'res_id'
  • name Char
Public methods (0)

No public methods.

New fields (10)
  • categories Many2many → test_new_api.category
    args: 'test_new_api.category', 'test_new_api_discussion_category', 'discussion', 'category'
  • emails One2many → test_new_api.emailmessage
    args: 'test_new_api.emailmessage', 'discussion'
  • important_emails One2many → test_new_api.emailmessage
    domain=[('important', '=', True)] args: 'test_new_api.emailmessage', 'discussion'
  • important_messages One2many → test_new_api.message
    domain=[('important', '=', True)] args: 'test_new_api.message', 'discussion'
  • message_concat Text
    string='Message concatenate'
  • messages One2many → test_new_api.message
    args: 'test_new_api.message', 'discussion'
  • moderator Many2one → res.users
    args: 'res.users'
  • name Char
    help='General description of what this discussion is about.' required=True string='Title'
  • participants Many2many → res.users
    args: 'res.users'
  • very_important_messages One2many → test_new_api.message
    domain=<expr> args: 'test_new_api.message', 'discussion'
Public methods (0)

No public methods.

New fields (2)
  • email_to Char
    args: 'To'
  • message Many2one → test_new_api.message
    ondelete='cascade' required=True args: 'test_new_api.message', 'Message'
Public methods (0)

No public methods.

New fields (3)
  • name Char
  • value1 Integer
    change_default=True
  • value2 Integer
Public methods (0)

No public methods.

New fields (10)
  • author Many2one → res.users
    default=<expr> args: 'res.users'
  • author_partner Many2one → res.partner
    compute='_compute_author_partner' search='_search_author_partner' args: 'res.partner'
  • body Text
  • discussion Many2one → test_new_api.discussion
    ondelete='cascade' args: 'test_new_api.discussion'
  • discussion_name Char
    related='discussion.name' string='Discussion Name'
  • display_name Char
    compute='_compute_display_name' string='Abstract'
  • double_size Integer
    compute='_compute_double_size'
  • important Boolean
  • name Char
    compute='_compute_name' store=True string='Title'
  • size Integer
    compute='_compute_size' search='_search_size'
Public methods (0)

No public methods.

New fields (11)
  • amount Monetary
  • comment1 Html
    sanitize=False
  • comment2 Html
    sanitize_attributes=True strip_classes=False
  • comment3 Html
    sanitize_attributes=True strip_classes=True
  • comment4 Html
    sanitize_attributes=True strip_style=True
  • currency_id Many2one → res.currency
    default=<expr> args: 'res.currency'
  • date Date
  • lang Selection
    selection='_get_lang' string='Language'
  • now Datetime
    compute='_compute_now'
  • number Float
    default=3.14 digits=(10, 2)
  • reference Reference
    selection='_reference_models' string='Related Document'
Public methods (0)

No public methods.

New fields (3)
  • lines One2many → test_new_api.multi.line
    args: 'test_new_api.multi.line', 'multi'
  • name Char
    readonly=True related='partner.name'
  • partner Many2one → res.partner
    args: 'res.partner'
Public methods (0)

No public methods.

New fields (4)
  • multi Many2one → test_new_api.multi
    ondelete='cascade' args: 'test_new_api.multi'
  • name Char
  • partner Many2one → res.partner
    args: 'res.partner'
  • tags Many2many → test_new_api.multi.tag
    args: 'test_new_api.multi.tag'
Public methods (0)

No public methods.

New fields (1)
  • name Char
Public methods (0)

No public methods.

New fields (3)
  • display_name Char
    compute='_compute_display_name' store=True
  • name Char
    required=True
  • parent Many2one → test_new_api.recursive
    ondelete='cascade' args: 'test_new_api.recursive'
Public methods (0)

No public methods.

New fields (6)
  • message Many2one → test_new_api.message
    args: 'test_new_api.message'
  • message_currency Many2one
    related='message.author' string='Message Author'
  • message_name Text
    related='message.body' related_sudo=False string='Message Body'
  • name Char
  • related_name Char
    related='name'
  • related_related_name Char
    related='related_name'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/10.0/test_new_api
VERSION
VERSION 1.0
CATEGORY
CATEGORYTests
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Olivier Dony, Christophe Simonis, Nicolas Martinelli, Nicolas Lempereur, GitHub, Julien Castiaux, Xavier-Do
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:50:49
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - web
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
A module to test the API.

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
assets_backend test_new_api backend assets ir.ui.view qweb Inherits web.assets_backend
category_form category form view test_new_api.category form New
category_tree category tree view test_new_api.category tree New
discussion_form discussion form view test_new_api.discussion form New
discussion_form_2 discussion form view test_new_api.discussion form New
discussion_form_3 discussion form view test_new_api.discussion form New
message_form message form view test_new_api.message form New
message_tree message tree view test_new_api.message tree New
multi_form multi form view test_new_api.multi form New
multi_tree multi tree view test_new_api.multi tree New
Models touched (20)

New fields (3)
  • bool_false Boolean
    default=False args: 'b2'
  • bool_true Boolean
    default=True args: 'b1'
  • bool_undefined Boolean
    args: 'b3'
Public methods (0)

No public methods.

New fields (4)
  • foo Many2one → test_new_api.foo
    compute='_compute_foo' args: 'test_new_api.foo'
  • name Char
  • value1 Integer
    related='foo.value1'
  • value2 Integer
    related='foo.value2'
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar'
  • baz Char
    compute='_compute_baz' store=True
  • foo Char
Public methods (0)

No public methods.

New fields (7)
  • color Integer
    args: 'Color Index'
  • discussions Many2many → test_new_api.discussion
    args: 'test_new_api.discussion', 'test_new_api_discussion_category', 'category', 'discussion'
  • display_name Char
    compute='_compute_display_name' inverse='_inverse_display_name'
  • dummy Char
    store=False
  • name Char
    required=True
  • parent Many2one → test_new_api.category
    args: 'test_new_api.category'
  • root_categ Many2one
    compute='_compute_root_categ' args: _name
Public methods (1)
  • read(self, fields=None, load='_classic_read')
    @api.multi

New fields (1)
  • foo Char
    company_dependent=True
Public methods (0)

No public methods.

New fields (3)
  • bar Char
    compute='_compute_bar' store=True
  • company Many2one → test_new_api.company
    args: 'test_new_api.company'
  • quantity Integer
Public methods (0)

No public methods.

New fields (2)
  • bar Char
    compute='_compute_bar' inverse='_inverse_bar' store=True
  • foo Char
Public methods (0)

No public methods.

New fields (2)
  • editions One2many → test_new_api.creativework.edition
    domain=[('res_model', '=', _name)] args: 'test_new_api.creativework.edition', 'res_id'
  • name Char
Public methods (0)

No public methods.

New fields (4)
  • name Char
  • res_id Integer
    required=True
  • res_model Char
    related='res_model_id.model' store=True
  • res_model_id Many2one → ir.model
    required=True args: 'ir.model'
Public methods (0)

No public methods.

New fields (2)
  • editions One2many → test_new_api.creativework.edition
    domain=[('res_model', '=', _name)] args: 'test_new_api.creativework.edition', 'res_id'
  • name Char
Public methods (0)

No public methods.

New fields (10)
  • categories Many2many → test_new_api.category
    args: 'test_new_api.category', 'test_new_api_discussion_category', 'discussion', 'category'
  • emails One2many → test_new_api.emailmessage
    args: 'test_new_api.emailmessage', 'discussion'
  • important_emails One2many → test_new_api.emailmessage
    domain=[('important', '=', True)] args: 'test_new_api.emailmessage', 'discussion'
  • important_messages One2many → test_new_api.message
    domain=[('important', '=', True)] args: 'test_new_api.message', 'discussion'
  • message_concat Text
    string='Message concatenate'
  • messages One2many → test_new_api.message
    args: 'test_new_api.message', 'discussion'
  • moderator Many2one → res.users
    args: 'res.users'
  • name Char
    help='General description of what this discussion is about.' required=True string='Title'
  • participants Many2many → res.users
    args: 'res.users'
  • very_important_messages One2many → test_new_api.message
    domain=<expr> args: 'test_new_api.message', 'discussion'
Public methods (0)

No public methods.

New fields (2)
  • email_to Char
    args: 'To'
  • message Many2one → test_new_api.message
    ondelete='cascade' required=True args: 'test_new_api.message', 'Message'
Public methods (0)

No public methods.

New fields (3)
  • name Char
  • value1 Integer
  • value2 Integer
Public methods (0)

No public methods.

New fields (10)
  • author Many2one → res.users
    default=<expr> args: 'res.users'
  • author_partner Many2one → res.partner
    compute='_compute_author_partner' search='_search_author_partner' args: 'res.partner'
  • body Text
  • discussion Many2one → test_new_api.discussion
    ondelete='cascade' args: 'test_new_api.discussion'
  • discussion_name Char
    related='discussion.name' string='Discussion Name'
  • display_name Char
    compute='_compute_display_name' string='Abstract'
  • double_size Integer
    compute='_compute_double_size'
  • important Boolean
  • name Char
    compute='_compute_name' store=True string='Title'
  • size Integer
    compute='_compute_size' search='_search_size'
Public methods (0)

No public methods.

New fields (11)
  • amount Monetary
  • comment1 Html
    sanitize=False
  • comment2 Html
    sanitize_attributes=True strip_classes=False
  • comment3 Html
    sanitize_attributes=True strip_classes=True
  • comment4 Html
    sanitize_attributes=True strip_style=True
  • currency_id Many2one → res.currency
    default=<expr> args: 'res.currency'
  • date Date
  • lang Selection
    selection='_get_lang' string='Language'
  • now Datetime
    compute='_compute_now'
  • number Float
    default=3.14 digits=(10, 2)
  • reference Reference
    selection='_reference_models' string='Related Document'
Public methods (0)

No public methods.

New fields (3)
  • lines One2many → test_new_api.multi.line
    args: 'test_new_api.multi.line', 'multi'
  • name Char
    readonly=True related='partner.name'
  • partner Many2one → res.partner
    args: 'res.partner'
Public methods (0)

No public methods.

New fields (3)
  • multi Many2one → test_new_api.multi
    ondelete='cascade' args: 'test_new_api.multi'
  • name Char
  • partner Many2one → res.partner
    args: 'res.partner'
Public methods (0)

No public methods.

New fields (3)
  • display_name Char
    compute='_compute_display_name' store=True
  • name Char
    required=True
  • parent Many2one → test_new_api.recursive
    args: 'test_new_api.recursive'
Public methods (0)

No public methods.

New fields (3)
  • name Char
  • related_name Char
    related='name'
  • related_related_name Char
    related='related_name'
Public methods (0)

No public methods.

New fields (7)
  • boolean Boolean
    sparse='data'
  • char Char
    sparse='data'
  • data Serialized
  • float Float
    sparse='data'
  • integer Integer
    sparse='data'
  • partner Many2one → res.partner
    sparse='data' args: 'res.partner'
  • selection Selection
    sparse='data' args: [('one', 'One'), ('two', 'Two')]
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/9.0/test_new_api
VERSION
VERSION 1.0
CATEGORY
CATEGORYTests
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Christophe Matthieu, Martin Trigaux, Antony Lesuisse, Olivier Dony, Denis Ledoux, Christophe Simonis, Nicolas Martinelli, Nicolas Lempereur, Géry Debongnie, Aaron Bohy, Jeremy Kersten, Yannick Tivisse, Martin Geubelle
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:48:31
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
A module to test the API.

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
category_form category form view test_new_api.category form New
category_tree category tree view test_new_api.category tree New
discussion_form discussion form view test_new_api.discussion form New
discussion_form_2 discussion form view test_new_api.discussion form New
message_form message form view test_new_api.message form New
message_tree message tree view test_new_api.message tree New
multi_form multi form view test_new_api.multi form New
multi_tree multi tree view test_new_api.multi tree New
Models touched (15)

New fields (3)
  • bool_false Boolean
    default=False args: 'b2'
  • bool_true Boolean
    default=True args: 'b1'
  • bool_undefined Boolean
    args: 'b3'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (4)
  • foo Many2one → test_new_api.foo
    compute='_compute_foo' args: 'test_new_api.foo'
  • name Char
  • value1 Integer
    related='foo.value1'
  • value2 Integer
    related='foo.value2'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (7)
  • color Integer
    args: 'Color Index'
  • discussions Many2many → test_new_api.discussion
    args: 'test_new_api.discussion', 'test_new_api_discussion_category', 'category', 'discussion'
  • display_name Char
    compute='_compute_display_name' inverse='_inverse_display_name'
  • dummy Char
    store=False
  • name Char
    required=True
  • parent Many2one → test_new_api.category
    args: 'test_new_api.category'
  • root_categ Many2one
    compute='_compute_root_categ' args: _name
Public methods (1)
  • read(self, fields=None, load='_classic_read')
    @api.multi

New fields (10)
  • categories Many2many → test_new_api.category
    args: 'test_new_api.category', 'test_new_api_discussion_category', 'discussion', 'category'
  • emails One2many → test_new_api.emailmessage
    args: 'test_new_api.emailmessage', 'discussion'
  • important_emails One2many → test_new_api.emailmessage
    domain=[('important', '=', True)] args: 'test_new_api.emailmessage', 'discussion'
  • important_messages One2many → test_new_api.message
    domain=[('important', '=', True)] args: 'test_new_api.message', 'discussion'
  • message_concat Text
    string='Message concatenate'
  • messages One2many → test_new_api.message
    args: 'test_new_api.message', 'discussion'
  • moderator Many2one → res.users
    args: 'res.users'
  • name Char
    help='General description of what this discussion is about.' required=True string='Title'
  • participants Many2many → res.users
    args: 'res.users'
  • very_important_messages One2many → test_new_api.message
    domain=<expr> args: 'test_new_api.message', 'discussion'
Public methods (0)

No public methods.

New fields (2)
  • email_to Char
    args: 'To'
  • message Many2one → test_new_api.message
    ondelete='cascade' required=True args: 'test_new_api.message', 'Message'
Public methods (0)

No public methods.

New fields (3)
  • name Char
  • value1 Integer
  • value2 Integer
Public methods (0)

No public methods.

New fields (10)
  • author Many2one → res.users
    default=<expr> args: 'res.users'
  • author_partner Many2one → res.partner
    compute='_compute_author_partner' search='_search_author_partner' args: 'res.partner'
  • body Text
  • discussion Many2one → test_new_api.discussion
    ondelete='cascade' args: 'test_new_api.discussion'
  • discussion_name Char
    related='discussion.name'
  • display_name Char
    compute='_compute_display_name' string='Abstract'
  • double_size Integer
    compute='_compute_double_size'
  • important Boolean
  • name Char
    compute='_compute_name' store=True string='Title'
  • size Integer
    compute='_compute_size' search='_search_size'
Public methods (0)

No public methods.

New fields (5)
  • date Date
  • lang Selection
    selection='_get_lang' string='Language'
  • now Datetime
    compute='_compute_now'
  • number Float
    default=3.14 digits=(10, 2)
  • reference Reference
    selection='_reference_models' string='Related Document'
Public methods (0)

No public methods.

New fields (3)
  • lines One2many → test_new_api.multi.line
    args: 'test_new_api.multi.line', 'multi'
  • name Char
    readonly=True related='partner.name'
  • partner Many2one → res.partner
    args: 'res.partner'
Public methods (0)

No public methods.

New fields (3)
  • multi Many2one → test_new_api.multi
    ondelete='cascade' args: 'test_new_api.multi'
  • name Char
  • partner Many2one → res.partner
    args: 'res.partner'
Public methods (0)

No public methods.

New fields (3)
  • display_name Char
    compute='_compute_display_name' store=True
  • name Char
    required=True
  • parent Many2one → test_new_api.recursive
    args: 'test_new_api.recursive'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/8.0/test_new_api
VERSION
VERSION 1.0
CATEGORY
CATEGORYTests
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSRaphael Collet, Antony Lesuisse, Olivier Dony, Denis Ledoux, Christophe Simonis, Xavier Morel, Holger Brunn, Jeremy Kersten, Cédric Pigeon
WEBSITE
WEBSITEhttp://www.openerp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:45:40
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
A module to test the API.

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
category_form category form view test_new_api.category form New
category_tree category tree view test_new_api.category tree New
discussion_form discussion form view test_new_api.discussion form New
message_form message form view test_new_api.message form New
message_tree message tree view test_new_api.message tree New
multi_form multi form view test_new_api.multi form New
multi_tree multi tree view test_new_api.multi tree New
Models touched (13)

New fields (3)
  • bool_false Boolean
    default=False args: 'b2'
  • bool_true Boolean
    default=True args: 'b1'
  • bool_undefined Boolean
    args: 'b3'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (4)
  • foo Many2one → test_new_api.foo
    compute='_compute_foo' args: 'test_new_api.foo'
  • name Char
  • value1 Integer
    related='foo.value1'
  • value2 Integer
    related='foo.value2'
Public methods (0)

No public methods.

New fields (4)
  • discussions Many2many → test_new_api.discussion
    args: 'test_new_api.discussion', 'test_new_api_discussion_category', 'category', 'discussion'
  • display_name Char
    compute='_compute_display_name' inverse='_inverse_display_name'
  • name Char
    required=True
  • parent Many2one → test_new_api.category
    args: 'test_new_api.category'
Public methods (1)
  • read(self, fields=None, load='_classic_read')

New fields (10)
  • categories Many2many → test_new_api.category
    args: 'test_new_api.category', 'test_new_api_discussion_category', 'discussion', 'category'
  • emails One2many → test_new_api.emailmessage
    args: 'test_new_api.emailmessage', 'discussion'
  • important_emails One2many → test_new_api.emailmessage
    domain=[('important', '=', True)] args: 'test_new_api.emailmessage', 'discussion'
  • important_messages One2many → test_new_api.message
    domain=[('important', '=', True)] args: 'test_new_api.message', 'discussion'
  • message_changes Integer
    string='Message changes'
  • messages One2many → test_new_api.message
    args: 'test_new_api.message', 'discussion'
  • moderator Many2one → res.users
    args: 'res.users'
  • name Char
    help='General description of what this discussion is about.' required=True string='Title'
  • participants Many2many → res.users
    args: 'res.users'
  • very_important_messages One2many → test_new_api.message
    domain=<expr> args: 'test_new_api.message', 'discussion'
Public methods (0)

No public methods.

New fields (2)
  • email_to Char
    args: 'To'
  • message Many2one → test_new_api.message
    ondelete='cascade' required=True args: 'test_new_api.message', 'Message'
Public methods (0)

No public methods.

New fields (3)
  • name Char
  • value1 Integer
  • value2 Integer
Public methods (0)

No public methods.

New fields (10)
  • author Many2one → res.users
    default=<expr> args: 'res.users'
  • author_partner Many2one → res.partner
    compute='_compute_author_partner' search='_search_author_partner' args: 'res.partner'
  • body Text
  • discussion Many2one → test_new_api.discussion
    ondelete='cascade' args: 'test_new_api.discussion'
  • discussion_name Char
    related='discussion.name'
  • display_name Char
    compute='_compute_display_name' string='Abstract'
  • double_size Integer
    compute='_compute_double_size'
  • important Boolean
  • name Char
    compute='_compute_name' store=True string='Title'
  • size Integer
    compute='_compute_size' search='_search_size'
Public methods (0)

No public methods.

New fields (5)
  • date Date
  • lang Selection
    selection='_get_lang' string='Language'
  • now Datetime
    compute='_compute_now'
  • number Float
    default=3.14 digits=(10, 2)
  • reference Reference
    selection='_reference_models' string='Related Document'
Public methods (0)

No public methods.

New fields (3)
  • lines One2many → test_new_api.multi.line
    args: 'test_new_api.multi.line', 'multi'
  • name Char
    readonly=True related='partner.name'
  • partner Many2one → res.partner
    args: 'res.partner'
Public methods (0)

No public methods.

New fields (3)
  • multi Many2one → test_new_api.multi
    ondelete='cascade' args: 'test_new_api.multi'
  • name Char
  • partner Many2one → res.partner
    args: 'res.partner'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.