Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FIX] [16.0] project_administrator_restricted_visibility: Restricted Project Manager always can manage its own projects #1393

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions project_administrator_restricted_visibility/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ Contributors
* `Moduon <https://www.moduon.team>`_:

* Eduardo López
* Eduardo de Miguel

Maintainers
~~~~~~~~~~~
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@
* `Moduon <https://www.moduon.team>`_:

* Eduardo López
* Eduardo de Miguel
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@
eval="[(3, ref('project.project_project_manager_rule'))]"
/>
</record>
<!-- Restricted Project Manager are allowed to manage its own projects -->
<record model="ir.rule" id="project_project_restricted_manage_own_project_rule">
<field name="name">Project: Can manage its own projects</field>
<field name="model_id" ref="project.model_project_project" />
<field name="domain_force">[('user_id', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('project.group_project_manager'))]" />
</record>
<!-- Create a new 'Project Administrator' access group with
the original 'Project Administrator' access rule for project -->
<record id="group_full_project_manager" model="res.groups">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@

/*
:Author: David Goodger ([email protected])
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.

Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.

See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
Expand Down Expand Up @@ -274,7 +275,7 @@
margin-left: 2em ;
margin-right: 2em }

pre.code .ln { color: grey; } /* line numbers */
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
Expand All @@ -300,7 +301,7 @@
span.pre {
white-space: pre }

span.problematic {
span.problematic, pre.problematic {
color: red }

span.section-subtitle {
Expand Down Expand Up @@ -426,14 +427,17 @@ <h2><a class="toc-backref" href="#toc-entry-6">Contributors</a></h2>
</li>
<li><a class="reference external" href="https://www.moduon.team">Moduon</a>:<ul>
<li>Eduardo López</li>
<li>Eduardo de Miguel</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-7">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ class TestProjectAdministratorRestrictedVisibility(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.project_obj = cls.env["project.project"]
cls.user_admin = cls.env.ref("base.user_admin")
cls.user_user_padmin = new_test_user(
cls.env,
Expand All @@ -33,12 +32,28 @@ def setUpClass(cls):
}
)

def _create_defaults(self):
"""Define default field values"""
self.env["ir.default"].sudo().create(
{
"field_id": self.env.ref(
"project.field_project_project__privacy_visibility"
).id,
"json_value": '"followers"',
"user_id": self.env.user.id,
}
)

@users("restricted-project-admin", "project-admin")
def test_create_new_project(self):
"""'Restricted project administrator' can create
projects like a 'Project administrator'.
"""
self.project_obj.create({"name": "Another project"})
self._create_defaults()
project = self.env["project.project"].create({"name": "Another project"})
self.assertEqual(project.privacy_visibility, "followers")
project.write({"name": "Another test project"})
project.unlink()

@users("restricted-project-admin", "project-user")
def test_cant_see_restricted_projects(self):
Expand All @@ -47,3 +62,9 @@ def test_cant_see_restricted_projects(self):
"""
all_project = self.env["project.project"].search([])
self.assertNotIn(self.restricted_project, all_project)

@users("project-admin")
def test_can_see_all_projects(self):
"""'Full project administrator' can see all projects."""
all_project = self.env["project.project"].search([])
self.assertIn(self.restricted_project, all_project)
Loading