Repository
OCA/project · module folder · Try on Runboat
Module version
1.0.0
Category
Project
Folder size
0.06 MB
License
AGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/project
Last tracking update
2026-08-07 08:42:45
Authors
Camptocamp, Odoo Community Association (OCA)
Maintainers
Camptocamp, Odoo Community Association (OCA)
Committers
Weblate, OCA-git-bot, oca-ci, David Gallay
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
None
Description
This module add per-company switch block_project_portal_access under Settings > Project.
Active by default.

For a blocking company:

- A constraint forbids privacy_visibility = 'portal' (default becomes employees).
- A post_init_hook migrates existing portal projects. This alone removes portal read access.
- A mixin on project.project/project.task also denies portal users in _search/_check_access.
  This adds an additional security without deleting existing ir.model.access
- The "Share Project" / "Share Task" actions are unbound.
  Calling them, for example from the code, raises an error.
  An uninstall_hook restores them.

Scoped per company (multi-company friendly) and fully reversible.

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
res_config_settings_view_form res.config.settings.form.inherit.project.no.portal res.config.settings form Inherits project.res_config_settings_view_form
view_task_kanban project.task.kanban.no.portal project.task kanban Inherits project.view_task_kanban
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (6)

New fields (0)

No new fields.

Public methods (1)
  • default_get(self, fields_list)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • privacy_visibility Selection
    default=<expr>
Public methods (1)
  • action_open_share_project_wizard(self)

New fields (1)
  • portal_share_blocked Boolean
    compute='_compute_portal_share_blocked'
Public methods (0)

No public methods.

New fields (1)
  • block_project_portal_access Boolean
    default=False help='When enabled, portal users of this company cannot read its projects or tasks, and portal visibility cannot be set on them.' string='Block portal access to projects and tasks'
Public methods (1)
  • write(self, vals)

New fields (1)
  • block_project_portal_access Boolean
    help='When enabled, portal users of the selected company cannot read its projects or tasks, and portal visibility cannot be set on them.' readonly=False related='company_id.block_project_portal_access' string='Block portal access to projects and tasks'
Public methods (0)

No public methods.