mirror of
https://github.com/bringout/oca-ocb-project.git
synced 2026-04-22 11:22:06 +02:00
19.0 vanilla
This commit is contained in:
parent
a2f74aefd8
commit
4a4d12c333
844 changed files with 212348 additions and 270090 deletions
|
|
@ -4,10 +4,11 @@
|
|||
from odoo import Command
|
||||
from odoo.addons.project.tests.test_access_rights import TestProjectPortalCommon
|
||||
from odoo.exceptions import AccessError
|
||||
from odoo.tests import HttpCase
|
||||
from odoo.tools import mute_logger
|
||||
|
||||
|
||||
class TestPortalProject(TestProjectPortalCommon):
|
||||
class TestPortalProject(TestProjectPortalCommon, HttpCase):
|
||||
@mute_logger('odoo.addons.base.models.ir_model')
|
||||
def test_portal_project_access_rights(self):
|
||||
pigs = self.project_pigs
|
||||
|
|
@ -45,11 +46,12 @@ class TestPortalProject(TestProjectPortalCommon):
|
|||
self.project_pigs.privacy_visibility = 'portal'
|
||||
self.assertFalse(self.project_pigs.access_token, 'The access token should not yet available since the project has not been shared yet.')
|
||||
wizard = self.env['project.share.wizard'].create({
|
||||
'access_mode': 'read',
|
||||
'res_model': 'project.project',
|
||||
'res_id': self.project_pigs.id,
|
||||
'partner_ids': [
|
||||
Command.link(self.partner_1.id),
|
||||
'collaborator_ids': [
|
||||
Command.create({
|
||||
'partner_id': self.partner_1.id,
|
||||
}),
|
||||
]
|
||||
})
|
||||
wizard.action_send_mail()
|
||||
|
|
@ -81,3 +83,74 @@ class TestPortalProject(TestProjectPortalCommon):
|
|||
self.project_pigs.privacy_visibility = 'employees'
|
||||
self.assertFalse(self.project_pigs.access_token, 'The access token should no longer be set since now the project is only available by internal users.')
|
||||
self.assertFalse(all(self.project_pigs.tasks.mapped('access_token')), 'The access token should no longer be set in any tasks linked to the project since now the project is only available by internal users.')
|
||||
|
||||
def test_search_validates_results(self):
|
||||
project_manager = self.env['res.users'].search([
|
||||
('group_ids', 'in', [self.env.ref('project.group_project_manager').id])
|
||||
],limit=1)
|
||||
self.authenticate(project_manager.login, project_manager.login)
|
||||
self.project_1 = self.env['project.project'].create({'name': 'Portal Search Project 1'})
|
||||
self.project_2 = self.env['project.project'].create({'name': 'Portal Search Project 2'})
|
||||
self.task_1 = self.env['project.task'].create({
|
||||
'name': 'Test Task Name Match',
|
||||
'project_id': self.project_1.id,
|
||||
'user_ids': project_manager,
|
||||
})
|
||||
|
||||
self.task_2 = self.env['project.task'].create({
|
||||
'name': 'Another Task For Searching',
|
||||
'project_id': self.project_2.id,
|
||||
'user_ids': project_manager,
|
||||
})
|
||||
|
||||
url = '/my/tasks'
|
||||
response = self.url_open(url)
|
||||
self.assertIn(self.task_1.name, response.text)
|
||||
self.assertIn(self.task_2.name, response.text)
|
||||
|
||||
url = '/my/tasks?search_in=name&search=Test+Task+Name+Match'
|
||||
response = self.url_open(url)
|
||||
self.assertIn(self.task_1.name, response.text)
|
||||
self.assertNotIn(self.task_2.name, response.text)
|
||||
|
||||
url = '/my/tasks?search_in=project_id&search=%s' % (self.project_1.name)
|
||||
response = self.url_open(url)
|
||||
self.assertIn(self.task_1.name, response.text)
|
||||
self.assertNotIn(self.task_2.name, response.text)
|
||||
|
||||
def test_task_templates_visibility_portal(self):
|
||||
"""
|
||||
Verify that a portal user can see regular tasks but not task templates or their subtasks.
|
||||
"""
|
||||
self.authenticate(self.user_portal.login, self.user_portal.login)
|
||||
portal_project = self.env['project.project'].create({'name': 'Portal Project'})
|
||||
portal_project.message_subscribe(partner_ids=[self.user_portal.partner_id.id])
|
||||
task, task_template = self.env['project.task'].create([
|
||||
{
|
||||
'name': 'Visible Task',
|
||||
'project_id': portal_project.id,
|
||||
},
|
||||
{
|
||||
'name': 'Invisible Template Task',
|
||||
'project_id': portal_project.id,
|
||||
'is_template': True,
|
||||
'child_ids': [
|
||||
Command.create({'name': 'Sub Task of Template Task 1'}),
|
||||
Command.create({'name': 'Sub Task of Template Task 2'}),
|
||||
]
|
||||
}
|
||||
])
|
||||
|
||||
# Check the portal my tasks page
|
||||
my_tasks_response = self.url_open('/my/tasks')
|
||||
self.assertIn(task.name, my_tasks_response.text)
|
||||
self.assertNotIn(task_template.name, my_tasks_response.text)
|
||||
self.assertNotIn(task_template.child_ids[0].name, my_tasks_response.text)
|
||||
self.assertNotIn(task_template.child_ids[1].name, my_tasks_response.text)
|
||||
|
||||
# Check the tasks page for the specific project
|
||||
project_tasks_response = self.url_open('/my/projects/%s' % (portal_project.id))
|
||||
self.assertIn(task.name, project_tasks_response.text)
|
||||
self.assertNotIn(task_template.name, project_tasks_response.text)
|
||||
self.assertNotIn(task_template.child_ids[0].name, project_tasks_response.text)
|
||||
self.assertNotIn(task_template.child_ids[1].name, project_tasks_response.text)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue