TIP: You can type at any time to perform a new search.
Privacy - Consent
privacy_consent · OCA/data-protection
- Repository
- OCA/data-protection · module folder · Try on Runboat
- Module version
- 1.0.0
- Category
- Privacy
- Folder size
- 0.29 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/data-protection
- Last tracking update
- 2026-08-07 08:43:01
- Authors
- Odoo Community Association (OCA), initOS GmbH, Tecnativa
- Maintainers
- Odoo Community Association (OCA), initOS GmbH, Tecnativa
- Committers
- Weblate, OCA-git-bot, oca-ci, michelerusti
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- None
- Description
This module allows the user to define a set of subjects (partners) affected by any data processing activity, and establish a process to ask them for consent to include them in that activity. For those that need explicit consent as a lawfulness base for personal data processing, as required by GDPR (article 6.1.a), this module provides the needed tools to automate it.
Code Analysis ⓘ
Views touched (6)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
activity_form |
Add consent fields | privacy.activity | form | Inherits privacy.activity_form |
consent_form |
Privacy Consent Form | privacy.consent | form | New |
consent_list |
Privacy Consent List | privacy.consent | list | New |
consent_search |
Privacy Consent Search | privacy.consent | search | New |
form |
Consent response processed | ir.ui.view | qweb | New |
view_partner_form |
Add consent smart button | res.partner | form | Inherits base.view_partner_form |
HTTP endpoints (1)
| Route(s) | Handler | Auth | Type | Methods | Flags |
|---|---|---|---|---|---|
/privacy/consent/<any(accept,reject):choice>/<int:consent_id>/<token> |
ConsentController.consent |
public | http | ALL | sudo website |
Models touched (5)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (8)
-
consent_countIntegercompute='_compute_consent_count'string='Consents count' -
consent_idsOne2many → privacy.consentcomodel_name='privacy.consent'inverse_name='activity_id'string='Consents' -
consent_requiredSelectionhelp='Enable if you need to track any kind of consent from the affected subjects'selection=[('auto', 'Automatically'), ('manual', 'Manually')]string='Ask subjects for consent' -
consent_template_default_body_htmlTextcompute='_compute_consent_template_defaults' -
consent_template_default_subjectCharcompute='_compute_consent_template_defaults' -
consent_template_idMany2one → mail.templatecomodel_name='mail.template'default=<expr>domain=[('model', '=', 'privacy.consent')]help='Email to be sent to subjects to ask for consent. A good template should include details about the current consent request status, how to change it, and where to get more information.'string='Email template' -
default_consentBooleanhelp='Should we assume the subject has accepted if we receive no response?'string='Accepted by default' -
server_action_idMany2one → ir.actions.servercomodel_name='ir.actions.server'domain=[('model_id.model', '=', 'privacy.consent')]help='Run this action when a new consent request is created or its acceptance status is updated.'string='Server action'
-
action_new_consents(self)Generate new consent requests.
New fields (6)
-
acceptedBooleanhelp="Indicates current acceptance status, which can come from subject's last answer, or from the default specified in the related data processing activity."tracking=True -
activeBooleandefault=Trueindex=True -
activity_idMany2one → privacy.activitycomodel_name='privacy.activity'required=Truestring='Activity'tracking=True -
last_metadataTexthelp='Metadata from the last acceptance or rejection by the subject'tracking=True -
partner_idMany2one → res.partnercomodel_name='res.partner'help='Subject asked for consent.'required=Truestring='Subject'tracking=True -
stateSelectiondefault='draft'required=Trueselection=[('draft', 'Draft'), ('sent', 'Awaiting response'), ('answered', 'Answered')]tracking=True
-
action_answer(self, answer, metadata=False)Process answer. :param bool answer: Did the subject accept? :param str metadata: Metadata from last user acceptance or rejection request. -
action_auto_ask(self)Automatically ask for consent. -
action_manual_ask(self)Let user manually ask for consent. -
create(self, vals_list)@api.model_create_multiRun server action on create. -
write(self, vals)Run server action on update.
New fields (2)
-
privacy_consent_countIntegercompute='_compute_privacy_consent_count'help='Privacy consent requests amount'string='Consents' -
privacy_consent_idsOne2many → privacy.consentcomodel_name='privacy.consent'inverse_name='partner_id'string='Privacy consents'
No public methods.
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
- Status
- Open migration PR — not merged yet for this version
- CI status
- checks failing
- Open since
- 17 days ago
- Last activity
- 17 days ago
- Repository
- OCA/data-protection
- Pull request
- [19.0][MIG] privacy_consent: Migration to 19.0 (#97)