91 lines
2.7 KiB
Python
91 lines
2.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, fields, models
|
|
from odoo.tools.translate import html_translate
|
|
|
|
|
|
class Website(models.Model):
|
|
_inherit = "website"
|
|
|
|
name_translated = fields.Char(translate=True)
|
|
|
|
|
|
class TestModel(models.Model):
|
|
_name = 'test.model'
|
|
_inherit = [
|
|
'website.seo.metadata',
|
|
'website.published.mixin',
|
|
'website.searchable.mixin',
|
|
]
|
|
_description = 'Website Model Test'
|
|
|
|
name = fields.Char(required=True, translate=True)
|
|
submodel_ids = fields.One2many('test.submodel', 'test_model_id', "Submodels")
|
|
website_description = fields.Html(
|
|
string="Description for the website",
|
|
translate=html_translate,
|
|
sanitize_overridable=True,
|
|
sanitize_attributes=False,
|
|
sanitize_form=False,
|
|
)
|
|
tag_id = fields.Many2one('test.tag')
|
|
|
|
@api.model
|
|
def _search_get_detail(self, website, order, options):
|
|
return {
|
|
'model': 'test.model',
|
|
'base_domain': [],
|
|
'search_fields': ['name', 'submodel_ids.name', 'submodel_ids.tag_id.name'],
|
|
'fetch_fields': ['name'],
|
|
'mapping': {
|
|
'name': {'name': 'name', 'type': 'text', 'match': True},
|
|
'website_url': {'name': 'name', 'type': 'text', 'truncate': False},
|
|
},
|
|
'icon': 'fa-check-square-o',
|
|
'order': 'name asc, id desc',
|
|
}
|
|
|
|
|
|
class TestSubModel(models.Model):
|
|
_name = 'test.submodel'
|
|
_description = 'Website Submodel Test'
|
|
|
|
name = fields.Char(required=True)
|
|
test_model_id = fields.Many2one('test.model')
|
|
tag_id = fields.Many2one('test.tag')
|
|
|
|
|
|
class TestTag(models.Model):
|
|
_name = 'test.tag'
|
|
_description = 'Website Tag Test'
|
|
|
|
name = fields.Char(required=True)
|
|
|
|
|
|
class TestModelMultiWebsite(models.Model):
|
|
_name = 'test.model.multi.website'
|
|
_inherit = [
|
|
'website.published.multi.mixin',
|
|
]
|
|
_description = 'Multi Website Model Test'
|
|
|
|
name = fields.Char(required=True)
|
|
# `cascade` is needed as there is demo data for this model which are bound
|
|
# to website 2 (demo website). But some tests are unlinking the website 2,
|
|
# which would fail if the `cascade` is not set. Note that the website 2 is
|
|
# never set on any records in all other modules.
|
|
website_id = fields.Many2one('website', string='Website', ondelete='cascade')
|
|
|
|
|
|
class TestModelExposed(models.Model):
|
|
_name = "test.model.exposed"
|
|
_inherit = [
|
|
'website.seo.metadata',
|
|
'website.published.mixin',
|
|
]
|
|
_description = 'Website Model Test Exposed'
|
|
_rec_name = "name"
|
|
|
|
name = fields.Char()
|