TIP: You can type at any time to perform a new search.
Project No Portal
project_no_portal · OCA/project
- 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 ID | Name | Model | Type | Status |
|---|---|---|---|---|
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_visibilitySelectiondefault=<expr>
-
action_open_share_project_wizard(self)
New fields (1)
-
portal_share_blockedBooleancompute='_compute_portal_share_blocked'
No public methods.
New fields (1)
-
block_project_portal_accessBooleandefault=Falsehelp='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'
-
write(self, vals)
New fields (1)
-
block_project_portal_accessBooleanhelp='When enabled, portal users of the selected company cannot read its projects or tasks, and portal visibility cannot be set on them.'readonly=Falserelated='company_id.block_project_portal_access'string='Block portal access to projects and tasks'
No public methods.