67 lines
2.6 KiB
Python
67 lines
2.6 KiB
Python
from odoo import Command
|
|
from odoo.addons.ai_fields.tools import ai_field_insert
|
|
from odoo.tests import TransactionCase, Form
|
|
|
|
|
|
class TestAiDocumentsCommon(TransactionCase):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.user_internal = cls.env['res.users'].create({
|
|
'name': 'user_test',
|
|
'login': 'user_test',
|
|
'group_ids': [
|
|
Command.set(cls.env.ref('base.group_user').ids),
|
|
],
|
|
})
|
|
cls.ir_action_tools_childs = cls.env["ir.actions.server"].create([{
|
|
"model_id": cls.env["ir.model"]._get_id("documents.document"),
|
|
"state": "code",
|
|
"name": "Write Name",
|
|
"code": "record.write({'name': new_name})",
|
|
}, {
|
|
"model_id": cls.env["ir.model"]._get_id("documents.document"),
|
|
"state": "code",
|
|
"name": "Return Count",
|
|
"code": "ai['result'] = 'action return value'",
|
|
}])
|
|
|
|
cls.folder, cls.target_folder, cls.other_folder = cls.env['documents.document'].create([{
|
|
'name': 'Folder',
|
|
'type': 'folder',
|
|
}, {
|
|
'name': 'Target Folder',
|
|
'type': 'folder',
|
|
}, {
|
|
'name': 'Other Folder',
|
|
'type': 'folder',
|
|
}])
|
|
|
|
def setUp(self):
|
|
super().setUp()
|
|
|
|
# Test using both at the same type (to test "multi" type server actions)
|
|
self.ir_action_tool = self.env["ir.actions.server"].create({
|
|
"model_id": self.env["ir.model"]._get_id("documents.document"),
|
|
"state": "multi",
|
|
"name": "Rename and return count",
|
|
"use_in_ai": False, # Will be forced by the wizard
|
|
"child_ids": self.ir_action_tools_childs.ids,
|
|
})
|
|
|
|
# Configure the prompt using the wizard
|
|
Doc = self.env['documents.document']
|
|
sort_wizard = Form(self.env['ai_documents.sort'].with_context(default_folder_id=self.folder.id))
|
|
sort_wizard.ai_sort_prompt = f"Execute the action then move in {Doc._ai_folder_insert(self.target_folder.id)} here is the name {ai_field_insert('name', 'Name')}"
|
|
sort_wizard.ai_tool_ids.add(self.ir_action_tool)
|
|
sort_wizard.save().action_setup_folder()
|
|
self.env['base.automation']._unregister_hook()
|
|
self.env['base.automation']._register_hook()
|
|
|
|
def tearDown(self):
|
|
super().tearDown()
|
|
self.env['base.automation'].search([('ai_autosort_folder_id', '!=', False)]).unlink()
|
|
self.env['base.automation']._unregister_hook()
|
|
self.env['base.automation']._register_hook()
|