chore: import enterprise addons 19.0 bulk snapshot

This commit is contained in:
1b-agent committed 2026-09-16 10:13:08 +00:00
commit ca4af030d3
39951 files changed
+15570005

No files matched your search

@@ -0,0 +1,3 @@
from . import test_sale_order_spreadsheet
from . import test_controller
from . import test_session_info
@@ -0,0 +1,22 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import json
from odoo.tests.common import HttpCase, new_test_user
class SaleOrderSpreadsheet(HttpCase):
def test_create_spreadsheet(self):
raoul = new_test_user(self.env, login='raoul', groups='sales_team.group_sale_salesman')
self.authenticate(raoul.login, raoul.password)
spreadsheet = self.env['sale.order.spreadsheet'].create({'name': 'spreadsheet'})
response = self.url_open('/spreadsheet/data/sale.order.spreadsheet/%s' % spreadsheet.id)
data = response.json()['data']
self.assertTrue(data['lists'])
self.assertTrue(data['globalFilters'])
revision = spreadsheet.spreadsheet_revision_ids
self.assertEqual(len(revision), 1)
commands = json.loads(revision.commands)['commands']
self.assertEqual(commands[0]['type'], 'RE_INSERT_ODOO_LIST')
self.assertEqual(commands[1]['type'], 'CREATE_TABLE')
@@ -0,0 +1,165 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.tests import Form
from odoo.tests.common import new_test_user
from odoo.addons.spreadsheet_edition.tests.spreadsheet_test_case import SpreadsheetTestCase
class SaleOrderSpreadsheet(SpreadsheetTestCase):
def test_sale_order_action_open(self):
spreadsheet = self.env["sale.order.spreadsheet"].create({"name": "spreadsheet"})
quotation_template = self.env["sale.order.template"].create({
"name": "Test template",
"spreadsheet_template_id": spreadsheet.id
})
sale_order = self.env["sale.order"].create({
"partner_id": self.env.user.partner_id.id,
"sale_order_template_id": quotation_template.id
})
self.assertFalse(sale_order.spreadsheet_ids)
action = sale_order.action_open_sale_order_spreadsheet()
self.assertEqual(action["tag"], "action_sale_order_spreadsheet")
self.assertTrue(sale_order.spreadsheet_ids)
self.assertEqual(sale_order.spreadsheet_ids.id, action["params"]["spreadsheet_id"])
def test_sale_order_action_open_twice(self):
spreadsheet = self.env["sale.order.spreadsheet"].create({"name": "spreadsheet"})
quotation_template = self.env["sale.order.template"].create({
"name": "Test template",
"spreadsheet_template_id": spreadsheet.id
})
sale_order = self.env["sale.order"].create({
"partner_id": self.env.user.partner_id.id,
"sale_order_template_id": quotation_template.id
})
sale_order.action_open_sale_order_spreadsheet()
spreadsheets = sale_order.spreadsheet_ids
sale_order.action_open_sale_order_spreadsheet()
self.assertEqual(sale_order.spreadsheet_ids, spreadsheets, "it should be the same spreadsheet")
def test_get_selector_spreadsheet_models(self):
user = new_test_user(self.env, login="Raoul")
result = self.env["spreadsheet.mixin"].with_user(user).get_selector_spreadsheet_models()
self.assertFalse(any(r["model"] == "sale.order.spreadsheet" for r in result))
user.group_ids |= self.env.ref("sales_team.group_sale_salesman")
result = self.env["spreadsheet.mixin"].with_user(user).get_selector_spreadsheet_models()
self.assertTrue(any(r["model"] == "sale.order.spreadsheet" for r in result))
def test_sale_order_spreadsheet_deleted_with_related_order(self):
spreadsheet = self.env["sale.order.spreadsheet"].create({"name": "spreadsheet"})
quotation_template = self.env["sale.order.template"].create({
"name": "Test template",
"spreadsheet_template_id": spreadsheet.id
})
sale_order = self.env["sale.order"].create({
"partner_id": self.env.user.partner_id.id,
"sale_order_template_id": quotation_template.id
})
sale_order.action_open_sale_order_spreadsheet()
so_spreadsheet = sale_order.spreadsheet_ids
sale_order.unlink()
self.assertFalse(so_spreadsheet.exists(), "spreadsheet should be deleted with the related order")
self.assertTrue(spreadsheet.exists(), "Original spreadsheet should be unaltered")
def test_copy_so_copies_spreadsheet_revision(self):
spreadsheet = self.env["sale.order.spreadsheet"].create({"name": "spreadsheet"})
quotation_template = self.env["sale.order.template"].create({
"name": "Test template",
"spreadsheet_template_id": spreadsheet.id
})
sale_order = self.env["sale.order"].create({
"partner_id": self.env.user.partner_id.id,
"sale_order_template_id": quotation_template.id
})
sale_order.action_open_sale_order_spreadsheet()
so_spreadsheet = sale_order.spreadsheet_ids
# dispatch a revision to the spreadsheet
revision = self.new_revision_data(spreadsheet)
spreadsheet.dispatch_spreadsheet_message(revision)
new_so = sale_order.copy()
new_so_spreadsheet = new_so.spreadsheet_ids
self.assertEqual(
so_spreadsheet.spreadsheet_revision_ids.commands,
new_so_spreadsheet.spreadsheet_revision_ids.commands,
"revision should be copied"
)
self.assertNotEqual(so_spreadsheet.id, new_so_spreadsheet.id, "spreadsheet id should be different")
def test_access(self):
salesman = new_test_user(self.env, login="Alice", groups="sales_team.group_sale_salesman")
other_salesman = new_test_user(self.env, login="Bob", groups="sales_team.group_sale_salesman")
template_spreadsheet = self.env["sale.order.spreadsheet"].create({"name": "spreadsheet"})
quotation_template = self.env["sale.order.template"].create({
"name": "Test template",
"spreadsheet_template_id": template_spreadsheet.id
})
sale_order = self.env["sale.order"].with_user(salesman).create({
"partner_id": self.env.user.partner_id.id,
"sale_order_template_id": quotation_template.id,
"user_id": salesman.id
})
sale_order.action_open_sale_order_spreadsheet()
spreadsheet = sale_order.spreadsheet_id
# user access for his own sale order
self.assertTrue(sale_order.has_access("read"))
self.assertTrue(sale_order.has_access("write"))
self.assertFalse(sale_order.has_access("unlink"))
self.assertTrue(spreadsheet.has_access("read"))
self.assertTrue(spreadsheet.has_access("write"))
self.assertTrue(spreadsheet.has_access("unlink"))
# other users don't have access by default
self.assertFalse(sale_order.with_user(other_salesman).has_access("read"))
self.assertFalse(sale_order.with_user(other_salesman).has_access("write"))
self.assertFalse(sale_order.with_user(other_salesman).has_access("unlink"))
self.assertFalse(spreadsheet.with_user(other_salesman).has_access("read"))
self.assertFalse(spreadsheet.with_user(other_salesman).has_access("write"))
self.assertFalse(spreadsheet.with_user(other_salesman).has_access("unlink"))
# add access to all orders
other_salesman.group_ids |= self.env.ref("sales_team.group_sale_salesman_all_leads")
self.assertTrue(sale_order.with_user(other_salesman).has_access("read"))
self.assertTrue(sale_order.with_user(other_salesman).has_access("write"))
self.assertFalse(sale_order.with_user(other_salesman).has_access("unlink"))
self.assertTrue(spreadsheet.with_user(other_salesman).has_access("read"))
self.assertTrue(spreadsheet.with_user(other_salesman).has_access("write"))
self.assertTrue(spreadsheet.with_user(other_salesman).has_access("unlink"))
def test_sale_order_template_change_after_open(self):
"""
Test ensures that spreadsheet template is changed on changing sale order template,
once spreadsheet has been opened.
"""
# Ensure user has access to sale order templates
self.env.user.group_ids += self.env.ref('sale_management.group_sale_order_template')
spreadsheet = self.env["sale.order.spreadsheet"].create({"name": "spreadsheet"})
spreadsheet2 = self.env["sale.order.spreadsheet"].create({"name": "spreadsheet2"})
quotation_templates = self.env["sale.order.template"].create(
[
{"name": "Test template1", "spreadsheet_template_id": spreadsheet.id},
{"name": "Test template2", "spreadsheet_template_id": spreadsheet2.id},
]
)
sale_order = self.env["sale.order"].create(
{
"partner_id": self.env.user.partner_id.id,
"sale_order_template_id": quotation_templates[0].id,
}
)
self.assertFalse(sale_order.spreadsheet_ids)
sale_order.action_open_sale_order_spreadsheet()
so_spreadsheets = sale_order.spreadsheet_ids
self.assertEqual(sale_order.spreadsheet_id.name, "spreadsheet")
with Form(sale_order) as so:
so.sale_order_template_id = quotation_templates[1]
self.assertFalse(so.spreadsheet_id)
self.assertFalse(so_spreadsheets.exists(), "previous spreadsheet should not exist")
self.assertEqual(sale_order.sale_order_template_id.spreadsheet_template_id.name, "spreadsheet2")
@@ -0,0 +1,39 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.tests import common
class TestSessionInfo(common.HttpCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.user_password = "password"
cls.user_no_right = common.new_test_user(
cls.env,
"user_no_right",
email="user_no_right@example.com",
password=cls.user_password,
tz="UTC")
cls.user_with_right = common.new_test_user(
cls.env,
"user_with_right",
email="user_with_right@example.com",
password=cls.user_password,
tz="UTC",
groups="sales_team.group_sale_manager")
def test_session_info_can_insert_in_spreadsheet(self):
cases = [
(self.user_no_right, False),
(self.user_with_right, True),
]
for user, expected in cases:
with self.subTest(user=user.login):
self.authenticate(user.login, self.user_password)
session_info = self.make_jsonrpc_request("/web/session/get_session_info")
self.assertEqual(
session_info["can_insert_in_spreadsheet"],
expected,
f"The session_info['can_insert_in_spreadsheet'] should be {expected}",
)