Mass mailing unsubscription metadata

mass_mailing_custom_unsubscribe
REPOSITORY
REPOSITORYOCA/mass-mailing
GIT
GIThttps://github.com/OCA/mass-mailing.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/mass-mailing/tree/18.0/mass_mailing_custom_unsubscribe
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSCarlos Lopez, Weblate, OCA-git-bot, oca-ci, Eduardo de Miguel
WEBSITE
WEBSITEhttps://github.com/OCA/mass-mailing
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:18
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mass_mailing
    - contacts
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - utm
    - link_tracker
    - web_editor
    - social_media
    - digest
    - portal
    - http_routing
    - auth_signup
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This addon extends the Odoo subscription engine to provide proof on why you are sending
mass mailings to a given contact, as required by the GDPR in Europe.
Also, when you unsubscribe from a specific list, it allows you to be redirected to the
subscription lists form where the reasons for unsubscribing are visible.

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
mailing_subscription_view_form mailing.subscription group Inherits mass_mailing.mailing_subscription_view_form
Models touched (2)

New fields (1)
  • metadata Text
Public methods (0)

No public methods.

New fields (1)
  • metadata Text
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)
REPOSITORY
REPOSITORYOCA/social
GIT
GIThttps://github.com/OCA/social.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/social/tree/17.0/mass_mailing_custom_unsubscribe
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSPedro M. Baeza, OCA-git-bot, David, oca-ci, Eduardo de Miguel, FernandoRomera
WEBSITE
WEBSITEhttps://github.com/OCA/social
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:09
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mass_mailing
    - contacts
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - utm
    - link_tracker
    - web_editor
    - social_media
    - digest
    - portal
    - http_routing
    - auth_signup
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This addon extends the Odoo subscription engine to provide proof on why you are sending
mass mailings to a given contact, as required by the GDPR in Europe.

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
mailing_subscription_view_form mailing.subscription group Inherits mass_mailing.mailing_subscription_view_form
Models touched (2)

New fields (1)
  • metadata Text
Public methods (0)

No public methods.

New fields (1)
  • metadata Text
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)
REPOSITORY
REPOSITORYOCA/social
GIT
GIThttps://github.com/OCA/social.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/social/tree/16.0/mass_mailing_custom_unsubscribe
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, David, oca-ci, pilarvargas-tecnativa, AlexPForgeFlow
WEBSITE
WEBSITEhttps://github.com/OCA/social
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:55
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mass_mailing
    - contacts
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - utm
    - link_tracker
    - web_editor
    - web_kanban_gauge
    - social_media
    - digest
    - portal
    - http_routing
    - auth_signup
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (13)
XML IDNameModelTypeStatus
mail_unsubscription_reason_view_form Mail Unsubscription Reason Form mail.unsubscription.reason form New
mail_unsubscription_reason_view_search Mail Unsubscription Reason Search mail.unsubscription.reason search New
mail_unsubscription_reason_view_tree Mail Unsubscription Reason Tree mail.unsubscription.reason tree New
mail_unsubscription_view_form Mail Unsubscription Form mail.unsubscription form New
mail_unsubscription_view_graph Mail Unsubscription Graph mail.unsubscription graph New
mail_unsubscription_view_pivot Mail Unsubscription Pivot mail.unsubscription pivot New
mail_unsubscription_view_search Mail Unsubscription Search mail.unsubscription search New
mail_unsubscription_view_tree Mail Unsubscription Tree mail.unsubscription tree New
reason UI for Providing Unsubscription Reasons ir.ui.view qweb New
reason_form Unsubscription Reason Form ir.ui.view qweb New
unsubscribe Add Reasons to Mailing List Management Form ir.ui.view qweb Inherits mass_mailing.unsubscribe
unsubscribed Add Reasons to Blacklist Management Form ir.ui.view qweb Inherits mass_mailing.unsubscribed
view_mail_mass_mailing_list_form mailing.list field Inherits mass_mailing.mailing_list_view_form
Models touched (5)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (10)
  • action Selection
    default='unsubscription' help='What did the (un)subscriber choose to do.' required=True selection=[('subscription', 'Subscription'), ('unsubscription', 'Unsubscription'), ('blacklist_add', 'Blacklisting'), ('blacklist_rm', 'De-blacklisting')]
  • date Datetime
    default=<expr> required=True
  • details Text
    help='More details on why the unsubscription was made.'
  • details_required Boolean
    related='reason_id.details_required'
  • email Char
    required=True
  • mailing_list_ids Many2many → mailing.list
    comodel_name='mailing.list' help='(Un)subscribed mass mailing lists, if any.' string='Mailing lists'
  • mass_mailing_id Many2one → mailing.mailing
    help='Mass mailing from which he was unsubscribed.' required=True args: 'mailing.mailing', 'Mass mailing'
  • metadata Text
    help='HTTP request metadata used when creating this record.' readonly=True
  • reason_id Many2one → mail.unsubscription.reason
    help='Why the unsubscription was made.' ondelete='restrict' args: 'mail.unsubscription.reason', 'Reason'
  • unsubscriber_id Reference
    help='Who was subscribed or unsubscribed.' args: <expr>, '(Un)subscriber'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (3)
  • details_required Boolean
    help='Check to ask for more details when this reason is selected.'
  • name Char
    index=True required=True translate=True
  • sequence Integer
    help='Position of the reason in the list.' index=True
Public methods (0)

No public methods.

New fields (1)
  • not_cross_unsubscriptable Boolean
    help="If you mark this field, this list won't be shown when unsubscribing from other mailing list, in the section: 'Is there any other mailing list you want to leave?'" string='Not cross unsubscriptable'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • update_opt_out(self, email, list_ids, value)
    Save unsubscription reason when opting out from mailing.
  • update_opt_out_other(self, email, res_ids, value)
    Method for changing unsubscription for models with opt_out field.
REPOSITORY
REPOSITORYOCA/social
GIT
GIThttps://github.com/OCA/social.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/social/tree/15.0/mass_mailing_custom_unsubscribe
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSErnesto Tejeda, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/social
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:40
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mass_mailing
    - contacts
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - utm
    - link_tracker
    - web_editor
    - web_kanban_gauge
    - social_media
    - digest
    - portal
    - http_routing
    - auth_signup
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
mail_unsubscription_reason_view_form Mail Unsubscription Reason Form mail.unsubscription.reason form New
mail_unsubscription_reason_view_search Mail Unsubscription Reason Search mail.unsubscription.reason search New
mail_unsubscription_reason_view_tree Mail Unsubscription Reason Tree mail.unsubscription.reason tree New
mail_unsubscription_view_form Mail Unsubscription Form mail.unsubscription form New
mail_unsubscription_view_graph Mail Unsubscription Graph mail.unsubscription graph New
mail_unsubscription_view_pivot Mail Unsubscription Pivot mail.unsubscription pivot New
mail_unsubscription_view_search Mail Unsubscription Search mail.unsubscription search New
mail_unsubscription_view_tree Mail Unsubscription Tree mail.unsubscription tree New
mass_mailing_custom_unsubscribe.layout mass_mailing_custom_unsubscribe.layout ir.ui.view qweb Inherits mass_mailing.layout
reason UI for Providing Unsubscription Reasons ir.ui.view qweb New
reason_form Unsubscription Reason Form ir.ui.view qweb New
unsubscribe Add Reasons to Mailing List Management Form ir.ui.view qweb Inherits mass_mailing.unsubscribe
unsubscribed Add Reasons to Blacklist Management Form ir.ui.view qweb Inherits mass_mailing.unsubscribed
view_mail_mass_mailing_list_form mailing.list field Inherits mass_mailing.mailing_list_view_form
Models touched (5)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (10)
  • action Selection
    default='unsubscription' help='What did the (un)subscriber choose to do.' required=True selection=[('subscription', 'Subscription'), ('unsubscription', 'Unsubscription'), ('blacklist_add', 'Blacklisting'), ('blacklist_rm', 'De-blacklisting')]
  • date Datetime
    default=<expr> required=True
  • details Text
    help='More details on why the unsubscription was made.'
  • details_required Boolean
    related='reason_id.details_required'
  • email Char
    required=True
  • mailing_list_ids Many2many → mailing.list
    comodel_name='mailing.list' help='(Un)subscribed mass mailing lists, if any.' string='Mailing lists'
  • mass_mailing_id Many2one → mailing.mailing
    help='Mass mailing from which he was unsubscribed.' required=True args: 'mailing.mailing', 'Mass mailing'
  • metadata Text
    help='HTTP request metadata used when creating this record.' readonly=True
  • reason_id Many2one → mail.unsubscription.reason
    help='Why the unsubscription was made.' ondelete='restrict' args: 'mail.unsubscription.reason', 'Reason'
  • unsubscriber_id Reference
    help='Who was subscribed or unsubscribed.' args: <expr>, '(Un)subscriber'
Public methods (1)
  • create(self, vals)
    @api.model

New fields (3)
  • details_required Boolean
    help='Check to ask for more details when this reason is selected.'
  • name Char
    index=True required=True translate=True
  • sequence Integer
    help='Position of the reason in the list.' index=True
Public methods (0)

No public methods.

New fields (1)
  • not_cross_unsubscriptable Boolean
    help="If you mark this field, this list won't be shown when unsubscribing from other mailing list, in the section: 'Is there any other mailing list you want to leave?'" string='Not cross unsubscriptable'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • update_opt_out(self, email, list_ids, value)
    Save unsubscription reason when opting out from mailing.
  • update_opt_out_other(self, email, res_ids, value)
    Method for changing unsubscription for models with opt_out field.
REPOSITORY
REPOSITORYOCA/social
GIT
GIThttps://github.com/OCA/social.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/social/tree/14.0/mass_mailing_custom_unsubscribe
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSEnric Tobella, Ernesto Tejeda, oca-travis, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/social
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:08
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mass_mailing
    - contacts
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - utm
    - link_tracker
    - web_editor
    - web_kanban_gauge
    - social_media
    - digest
    - portal
    - http_routing
    - auth_signup
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (16)
XML IDNameModelTypeStatus
assets_backend assets_backend ir.ui.view qweb Inherits mass_mailing.assets_backend
assets_frontend_demo assets_frontend_demo ir.ui.view qweb Inherits web.assets_frontend
mail_unsubscription_reason_view_form Mail Unsubscription Reason Form mail.unsubscription.reason form New
mail_unsubscription_reason_view_search Mail Unsubscription Reason Search mail.unsubscription.reason search New
mail_unsubscription_reason_view_tree Mail Unsubscription Reason Tree mail.unsubscription.reason tree New
mail_unsubscription_view_form Mail Unsubscription Form mail.unsubscription form New
mail_unsubscription_view_graph Mail Unsubscription Graph mail.unsubscription graph New
mail_unsubscription_view_pivot Mail Unsubscription Pivot mail.unsubscription pivot New
mail_unsubscription_view_search Mail Unsubscription Search mail.unsubscription search New
mail_unsubscription_view_tree Mail Unsubscription Tree mail.unsubscription tree New
mass_mailing_custom_unsubscribe.layout mass_mailing_custom_unsubscribe.layout ir.ui.view qweb Inherits mass_mailing.layout
reason UI for Providing Unsubscription Reasons ir.ui.view qweb New
reason_form Unsubscription Reason Form ir.ui.view qweb New
unsubscribe Add Reasons to Mailing List Management Form ir.ui.view qweb Inherits mass_mailing.unsubscribe
unsubscribed Add Reasons to Blacklist Management Form ir.ui.view qweb Inherits mass_mailing.unsubscribed
view_mail_mass_mailing_list_form mailing.list field Inherits mass_mailing.mailing_list_view_form
Models touched (5)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (10)
  • action Selection
    default='unsubscription' help='What did the (un)subscriber choose to do.' required=True selection=[('subscription', 'Subscription'), ('unsubscription', 'Unsubscription'), ('blacklist_add', 'Blacklisting'), ('blacklist_rm', 'De-blacklisting')]
  • date Datetime
    default=<expr> required=True
  • details Text
    help='More details on why the unsubscription was made.'
  • details_required Boolean
    related='reason_id.details_required'
  • email Char
    required=True
  • mailing_list_ids Many2many → mailing.list
    comodel_name='mailing.list' help='(Un)subscribed mass mailing lists, if any.' string='Mailing lists'
  • mass_mailing_id Many2one → mailing.mailing
    help='Mass mailing from which he was unsubscribed.' required=True args: 'mailing.mailing', 'Mass mailing'
  • metadata Text
    help='HTTP request metadata used when creating this record.' readonly=True
  • reason_id Many2one → mail.unsubscription.reason
    help='Why the unsubscription was made.' ondelete='restrict' args: 'mail.unsubscription.reason', 'Reason'
  • unsubscriber_id Reference
    help='Who was subscribed or unsubscribed.' args: <expr>, '(Un)subscriber'
Public methods (2)
  • create(self, vals)
    @api.model
  • map_mailing_list_models(self, models)

New fields (3)
  • details_required Boolean
    help='Check to ask for more details when this reason is selected.'
  • name Char
    index=True required=True translate=True
  • sequence Integer
    help='Position of the reason in the list.' index=True
Public methods (0)

No public methods.

New fields (1)
  • not_cross_unsubscriptable Boolean
    help="If you mark this field, this list won't be shown when unsubscribing from other mailing list, in the section: 'Is there any other mailing list you want to leave?'" string='Not cross unsubscriptable'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • update_opt_out(self, email, list_ids, value)
    Save unsubscription reason when opting out from mailing.
  • update_opt_out_other(self, email, res_ids, value)
    Method for changing unsubscription for models with opt_out field.
REPOSITORY
REPOSITORYOCA/social
GIT
GIThttps://github.com/OCA/social.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/social/tree/13.0/mass_mailing_custom_unsubscribe
VERSION
VERSION 2.0.0
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSPedro M. Baeza, Jairo Llopis, david, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Carlos Roca
WEBSITE
WEBSITEhttps://github.com/OCA/social
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:18
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mass_mailing
    - contacts
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - utm
    - link_tracker
    - web_editor
    - web_kanban_gauge
    - social_media
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (16)
XML IDNameModelTypeStatus
assets_backend assets_backend ir.ui.view qweb Inherits mass_mailing.assets_backend
assets_frontend_demo assets_frontend_demo ir.ui.view qweb Inherits web.assets_frontend
mail_unsubscription_reason_view_form Mail Unsubscription Reason Form mail.unsubscription.reason form New
mail_unsubscription_reason_view_search Mail Unsubscription Reason Search mail.unsubscription.reason search New
mail_unsubscription_reason_view_tree Mail Unsubscription Reason Tree mail.unsubscription.reason tree New
mail_unsubscription_view_form Mail Unsubscription Form mail.unsubscription form New
mail_unsubscription_view_graph Mail Unsubscription Graph mail.unsubscription graph New
mail_unsubscription_view_pivot Mail Unsubscription Pivot mail.unsubscription pivot New
mail_unsubscription_view_search Mail Unsubscription Search mail.unsubscription search New
mail_unsubscription_view_tree Mail Unsubscription Tree mail.unsubscription tree New
mass_mailing_custom_unsubscribe.layout mass_mailing_custom_unsubscribe.layout ir.ui.view qweb Inherits mass_mailing.layout
reason UI for Providing Unsubscription Reasons ir.ui.view qweb New
reason_form Unsubscription Reason Form ir.ui.view qweb New
unsubscribe Add Reasons to Mailing List Management Form ir.ui.view qweb Inherits mass_mailing.unsubscribe
unsubscribed Add Reasons to Blacklist Management Form ir.ui.view qweb Inherits mass_mailing.unsubscribed
view_mail_mass_mailing_list_form mailing.list field Inherits mass_mailing.mailing_list_view_form
Models touched (5)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (10)
  • action Selection
    default='unsubscription' help='What did the (un)subscriber choose to do.' required=True selection=[('subscription', 'Subscription'), ('unsubscription', 'Unsubscription'), ('blacklist_add', 'Blacklisting'), ('blacklist_rm', 'De-blacklisting')]
  • date Datetime
    default=<expr> required=True
  • details Text
    help='More details on why the unsubscription was made.'
  • details_required Boolean
    related='reason_id.details_required'
  • email Char
    required=True
  • mailing_list_ids Many2many → mailing.list
    comodel_name='mailing.list' help='(Un)subscribed mass mailing lists, if any.' string='Mailing lists'
  • mass_mailing_id Many2one → mailing.mailing
    help='Mass mailing from which he was unsubscribed.' required=True args: 'mailing.mailing', 'Mass mailing'
  • metadata Text
    help='HTTP request metadata used when creating this record.' readonly=True
  • reason_id Many2one → mail.unsubscription.reason
    help='Why the unsubscription was made.' ondelete='restrict' args: 'mail.unsubscription.reason', 'Reason'
  • unsubscriber_id Reference
    help='Who was subscribed or unsubscribed.' args: <expr>, '(Un)subscriber'
Public methods (2)
  • create(self, vals)
    @api.model
  • map_mailing_list_models(self, models)

New fields (3)
  • details_required Boolean
    help='Check to ask for more details when this reason is selected.'
  • name Char
    index=True required=True translate=True
  • sequence Integer
    help='Position of the reason in the list.' index=True
Public methods (0)

No public methods.

New fields (1)
  • not_cross_unsubscriptable Boolean
    help="If you mark this field, this list won't be shown when unsubscribing from other mailing list, in the section: 'Is there any other mailing list you want to leave?'" string='Not cross unsubscriptable'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • update_opt_out(self, email, list_ids, value)
    Save unsubscription reason when opting out from mailing.
  • update_opt_out_other(self, email, res_ids, value)
    Method for changing unsubscription for models with opt_out field.
REPOSITORY
REPOSITORYOCA/social
GIT
GIThttps://github.com/OCA/social.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/social/tree/12.0/mass_mailing_custom_unsubscribe
VERSION
VERSION 1.0.4
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSPedro M. Baeza, david, OCA Transbot, Víctor Martínez, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/social
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:23
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mass_mailing
    - contacts
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - utm
    - link_tracker
    - web_editor
    - web_kanban_gauge
    - social_media
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (16)
XML IDNameModelTypeStatus
assets_backend assets_backend ir.ui.view qweb Inherits mass_mailing.assets_backend
assets_frontend_demo assets_frontend_demo ir.ui.view qweb Inherits web.assets_frontend
mail_unsubscription_reason_view_form Mail Unsubscription Reason Form mail.unsubscription.reason form New
mail_unsubscription_reason_view_search Mail Unsubscription Reason Search mail.unsubscription.reason search New
mail_unsubscription_reason_view_tree Mail Unsubscription Reason Tree mail.unsubscription.reason tree New
mail_unsubscription_view_form Mail Unsubscription Form mail.unsubscription form New
mail_unsubscription_view_graph Mail Unsubscription Graph mail.unsubscription graph New
mail_unsubscription_view_pivot Mail Unsubscription Pivot mail.unsubscription pivot New
mail_unsubscription_view_search Mail Unsubscription Search mail.unsubscription search New
mail_unsubscription_view_tree Mail Unsubscription Tree mail.unsubscription tree New
mass_mailing_custom_unsubscribe.layout mass_mailing_custom_unsubscribe.layout ir.ui.view qweb Inherits mass_mailing.layout
reason UI for Providing Unsubscription Reasons ir.ui.view qweb New
reason_form Unsubscription Reason Form ir.ui.view qweb New
unsubscribe Add Reasons to Mailing List Management Form ir.ui.view qweb Inherits mass_mailing.unsubscribe
unsubscribed Add Reasons to Blacklist Management Form ir.ui.view qweb Inherits mass_mailing.unsubscribed
view_mail_mass_mailing_list_form mail.mass_mailing.list field Inherits mass_mailing.view_mail_mass_mailing_list_form
Models touched (5)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • update_opt_out(self, email, list_ids, value)
    Save unsubscription reason when opting out from mailing.
  • update_opt_out_other(self, email, res_ids, value)
    Method for changing unsubscription for models with opt_out field.

New fields (1)
  • not_cross_unsubscriptable Boolean
    help="If you mark this field, this list won't be shown when unsubscribing from other mailing list, in the section: 'Is there any other mailing list you want to leave?'" string='Not cross unsubscriptable'
Public methods (0)

No public methods.

New fields (10)
  • action Selection
    default='unsubscription' help='What did the (un)subscriber choose to do.' required=True selection=[('subscription', 'Subscription'), ('unsubscription', 'Unsubscription'), ('blacklist_add', 'Blacklisting'), ('blacklist_rm', 'De-blacklisting')]
  • date Datetime
    default=<expr> required=True
  • details Text
    help='More details on why the unsubscription was made.'
  • details_required Boolean
    related='reason_id.details_required'
  • email Char
    required=True
  • mailing_list_ids Many2many → mail.mass_mailing.list
    comodel_name='mail.mass_mailing.list' help='(Un)subscribed mass mailing lists, if any.' string='Mailing lists'
  • mass_mailing_id Many2one → mail.mass_mailing
    help='Mass mailing from which he was unsubscribed.' required=True args: 'mail.mass_mailing', 'Mass mailing'
  • metadata Text
    help='HTTP request metadata used when creating this record.' readonly=True
  • reason_id Many2one → mail.unsubscription.reason
    help='Why the unsubscription was made.' ondelete='restrict' args: 'mail.unsubscription.reason', 'Reason'
  • unsubscriber_id Reference
    help='Who was subscribed or unsubscribed.' args: <expr>, '(Un)subscriber'
Public methods (2)
  • create(self, vals)
    @api.model
  • map_mailing_list_models(self, models)

New fields (3)
  • details_required Boolean
    help='Check to ask for more details when this reason is selected.'
  • name Char
    index=True required=True translate=True
  • sequence Integer
    help='Position of the reason in the list.' index=True
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/social
GIT
GIThttps://github.com/OCA/social.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/social/tree/11.0/mass_mailing_custom_unsubscribe
VERSION
VERSION 2.1.0
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSGitHub, OCA Transbot, oca-travis, Weblate, OCA-git-bot, OCA Git Bot, David, ernesto
WEBSITE
WEBSITEhttps://github.com/OCA/social
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:24:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - website_mass_mailing
    - website
    - web
    - base
    - web_editor
    - web_planner
    - http_routing
    - portal
    - mail
    - base_setup
    - bus
    - web_tour
    - mass_mailing
    - utm
    - link_tracker
    - web_kanban_gauge
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (16)
XML IDNameModelTypeStatus
assets_frontend assets_frontend ir.ui.view qweb Inherits website.assets_frontend
assets_frontend_demo assets_frontend_demo ir.ui.view qweb Inherits website.assets_frontend
mail_unsubscription_reason_view_form Mail Unsubscription Reason Form mail.unsubscription.reason form New
mail_unsubscription_reason_view_search Mail Unsubscription Reason Search mail.unsubscription.reason search New
mail_unsubscription_reason_view_tree Mail Unsubscription Reason Tree mail.unsubscription.reason tree New
mail_unsubscription_view_form Mail Unsubscription Form mail.unsubscription form New
mail_unsubscription_view_graph Mail Unsubscription Graph mail.unsubscription graph New
mail_unsubscription_view_pivot Mail Unsubscription Pivot mail.unsubscription pivot New
mail_unsubscription_view_search Mail Unsubscription Search mail.unsubscription search New
mail_unsubscription_view_tree Mail Unsubscription Tree mail.unsubscription tree New
reason UI for Providing Unsubscription Reasons ir.ui.view qweb New
reason_form Unsubscription Reason Form ir.ui.view qweb New
unsubscribe Add Reasons to Mailing List Management Form ir.ui.view qweb Inherits website_mass_mailing.unsubscribe
view_mail_mass_mailing_contact_form mail.mass_mailing.contact field Inherits mass_mailing.view_mail_mass_mailing_contact_form
view_mail_mass_mailing_contact_tree mail.mass_mailing.contact field Inherits mass_mailing.view_mail_mass_mailing_contact_tree
view_mail_mass_mailing_list_form mail.mass_mailing.list div Inherits mass_mailing.view_mail_mass_mailing_list_form
Models touched (5)

New fields (0)

No new fields.

Public methods (1)
  • update_opt_out(self, email, res_ids, value)
    Save unsubscription reason when opting out from mailing.

New fields (1)
  • mailing_list_id Many2one → mail.mass_mailing.list
    compute='_compute_mailing_list_id' inverse='_inverse_mailing_list_id' ondelete='cascade' search='_search_mailing_list_id' string='Mailing List' args: 'mail.mass_mailing.list'
Public methods (0)

No public methods.

New fields (1)
  • not_cross_unsubscriptable Boolean
    help="If you mark this field, this list won't be shown when unsubscribing from other mailing list, in the section: 'Is there any other mailing list you want to leave?'" string="Don't show this list in the other unsubscriptions"
Public methods (0)

No public methods.

New fields (10)
  • action Selection
    default='unsubscription' help='What did the (un)subscriber choose to do.' required=True selection=[('subscription', 'Subscription'), ('unsubscription', 'Unsubscription')]
  • date Datetime
    default=<expr> required=True
  • details Char
    help='More details on why the unsubscription was made.'
  • details_required Boolean
    related='reason_id.details_required'
  • email Char
    required=True
  • mailing_list_id Many2many → mail.mass_mailing.list
    comodel_name='mail.mass_mailing.list' compute='_compute_mailing_list_id' help='(Un)subscribed mass mailing list, if any.' ondelete='set null' readonly=False store=True string='Mailing list'
  • mass_mailing_id Many2one → mail.mass_mailing
    help='Mass mailing from which he was unsubscribed.' required=True args: 'mail.mass_mailing', 'Mass mailing'
  • metadata Text
    help='HTTP request metadata used when creating this record.' readonly=True
  • reason_id Many2one → mail.unsubscription.reason
    help='Why the unsubscription was made.' ondelete='restrict' args: 'mail.unsubscription.reason', 'Reason'
  • unsubscriber_id Reference
    help='Who was subscribed or unsubscribed.' args: <expr>, '(Un)subscriber'
Public methods (2)
  • create(self, vals)
    @api.model
  • map_mailing_list_models(self, models)

New fields (3)
  • details_required Boolean
    help='Check to ask for more details when this reason is selected.'
  • name Char
    index=True required=True translate=True
  • sequence Integer
    help='Position of the reason in the list.' index=True
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/social
GIT
GIThttps://github.com/OCA/social.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/social/tree/10.0/mass_mailing_custom_unsubscribe
VERSION
VERSION 2.0.1
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSPedro M. Baeza, Jairo Llopis, OCA Transbot, Thierry Ducrest, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/social
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:20:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - website_mass_mailing
    - website
    - web
    - base
    - web_editor
    - web_planner
    - mass_mailing
    - mail
    - base_setup
    - web_kanban
    - bus
    - web_tour
    - utm
    - link_tracker
    - web_kanban_gauge
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
assets_frontend assets_frontend ir.ui.view qweb Inherits website.assets_frontend
assets_frontend_demo assets_frontend_demo ir.ui.view qweb Inherits website.assets_frontend
mail_unsubscription_reason_view_form Mail Unsubscription Reason Form mail.unsubscription.reason form New
mail_unsubscription_reason_view_search Mail Unsubscription Reason Search mail.unsubscription.reason search New
mail_unsubscription_reason_view_tree Mail Unsubscription Reason Tree mail.unsubscription.reason tree New
mail_unsubscription_view_form Mail Unsubscription Form mail.unsubscription form New
mail_unsubscription_view_graph Mail Unsubscription Graph mail.unsubscription graph New
mail_unsubscription_view_pivot Mail Unsubscription Pivot mail.unsubscription pivot New
mail_unsubscription_view_search Mail Unsubscription Search mail.unsubscription search New
mail_unsubscription_view_tree Mail Unsubscription Tree mail.unsubscription tree New
reason UI for Providing Unsubscription Reasons ir.ui.view qweb New
reason_form Unsubscription Reason Form ir.ui.view qweb New
unsubscribe Add Reasons to Mailing List Management Form ir.ui.view qweb Inherits website_mass_mailing.unsubscribe
view_mail_mass_mailing_list_form mail.mass_mailing.list div Inherits mass_mailing.view_mail_mass_mailing_list_form
Models touched (5)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • update_opt_out(self, email, res_ids, value)
    Save unsubscription reason when opting out from mailing.

New fields (1)
  • not_cross_unsubscriptable Boolean
    help="If you mark this field, this list won't be shown when unsubscribing from other mailing list, in the section: 'Is there any other mailing list you want to leave?'" string="Don't show this list in the other unsubscriptions"
Public methods (0)

No public methods.

New fields (10)
  • action Selection
    default='unsubscription' help='What did the (un)subscriber choose to do.' required=True selection=[('subscription', 'Subscription'), ('unsubscription', 'Unsubscription')]
  • date Datetime
    default=<expr> required=True
  • details Char
    help='More details on why the unsubscription was made.'
  • details_required Boolean
    related='reason_id.details_required'
  • email Char
    required=True
  • mailing_list_id Many2one → mail.mass_mailing.list
    compute='_compute_mailing_list_id' help='(Un)subscribed mass mailing list, if any.' ondelete='set null' store=True args: 'mail.mass_mailing.list', 'Mailing list'
  • mass_mailing_id Many2one → mail.mass_mailing
    help='Mass mailing from which he was unsubscribed.' required=True args: 'mail.mass_mailing', 'Mass mailing'
  • metadata Text
    help='HTTP request metadata used when creating this record.' readonly=True
  • reason_id Many2one → mail.unsubscription.reason
    help='Why the unsubscription was made.' ondelete='restrict' args: 'mail.unsubscription.reason', 'Reason'
  • unsubscriber_id Reference
    help='Who was subscribed or unsubscribed.' args: <expr>, '(Un)subscriber'
Public methods (1)
  • create(self, vals)
    @api.model

New fields (3)
  • details_required Boolean
    help='Check to ask for more details when this reason is selected.'
  • name Char
    index=True required=True translate=True
  • sequence Integer
    help='Position of the reason in the list.' index=True
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/social
GIT
GIThttps://github.com/OCA/social.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/social/tree/9.0/mass_mailing_custom_unsubscribe
VERSION
VERSION 3.0.0
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Antiun Ingeniería S.L.
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Antiun Ingeniería S.L.
COMMITTERS
COMMITTERSPedro M. Baeza, Jairo Llopis, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis, Weblate
WEBSITE
WEBSITEhttps://www.tecnativa.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:23
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - website_mass_mailing
    - website
    - web
    - base
    - web_editor
    - web_planner
    - mass_mailing
    - mail
    - base_setup
    - web_kanban
    - bus
    - marketing
    - utm
    - link_tracker
    - web_kanban_gauge
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
assets_frontend assets_frontend ir.ui.view qweb Inherits website.assets_frontend
assets_frontend_demo assets_frontend_demo ir.ui.view qweb Inherits website.assets_frontend
mail_unsubscription_reason_view_form Mail Unsubscription Reason Form mail.unsubscription.reason form New
mail_unsubscription_reason_view_search Mail Unsubscription Reason Search mail.unsubscription.reason search New
mail_unsubscription_reason_view_tree Mail Unsubscription Reason Tree mail.unsubscription.reason tree New
mail_unsubscription_view_form Mail Unsubscription Form mail.unsubscription form New
mail_unsubscription_view_graph Mail Unsubscription Graph mail.unsubscription graph New
mail_unsubscription_view_pivot Mail Unsubscription Pivot mail.unsubscription pivot New
mail_unsubscription_view_search Mail Unsubscription Search mail.unsubscription search New
mail_unsubscription_view_tree Mail Unsubscription Tree mail.unsubscription tree New
reason UI for Providing Unsubscription Reasons ir.ui.view qweb New
reason_form Unsubscription Reason Form ir.ui.view qweb New
unsubscribe Add Reasons to Mailing List Management Form ir.ui.view qweb Inherits website_mass_mailing.unsubscribe
view_mail_mass_mailing_list_form mail.mass_mailing.list div Inherits mass_mailing.view_mail_mass_mailing_list_form
Models touched (5)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • update_opt_out(self, mailing_id, email, res_ids, value)
    @api.model
    Save unsubscription reason when opting out from mailing.

New fields (1)
  • not_cross_unsubscriptable Boolean
    help="If you mark this field, this list won't be shown when unsubscribing from other mailing list, in the section: 'Is there any other mailing list you want to leave?'" string="Don't show this list in the other unsubscriptions"
Public methods (0)

No public methods.

New fields (10)
  • action Selection
    default='unsubscription' help='What did the (un)subscriber choose to do.' required=True selection=[('subscription', 'Subscription'), ('unsubscription', 'Unsubscription')]
  • date Datetime
    default=<expr> required=True
  • details Char
    help='More details on why the unsubscription was made.'
  • details_required Boolean
    related='reason_id.details_required'
  • email Char
    required=True
  • mailing_list_id Many2one → mail.mass_mailing.list
    compute='_compute_mailing_list_id' help='(Un)subscribed mass mailing list, if any.' ondelete='set null' store=True args: 'mail.mass_mailing.list', 'Mailing list'
  • mass_mailing_id Many2one → mail.mass_mailing
    help='Mass mailing from which he was unsubscribed.' required=True args: 'mail.mass_mailing', 'Mass mailing'
  • metadata Text
    help='HTTP request metadata used when creating this record.' readonly=True
  • reason_id Many2one → mail.unsubscription.reason
    help='Why the unsubscription was made.' ondelete='restrict' args: 'mail.unsubscription.reason', 'Reason'
  • unsubscriber_id Reference
    help='Who was subscribed or unsubscribed.' args: <expr>, '(Un)subscriber'
Public methods (1)
  • create(self, vals)
    @api.model

New fields (3)
  • details_required Boolean
    help='Check to ask for more details when this reason is selected.'
  • name Char
    index=True required=True translate=True
  • sequence Integer
    help='Position of the reason in the list.' index=True
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/social
GIT
GIThttps://github.com/OCA/social.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/social/tree/8.0/mass_mailing_custom_unsubscribe
VERSION
VERSION 2.1.0
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Antiun Ingeniería S.L.
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Antiun Ingeniería S.L.
COMMITTERS
COMMITTERSHolger Brunn, Pedro M. Baeza, Jairo Llopis, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis, Weblate, Antonio Espinosa
WEBSITE
WEBSITEhttp://www.antiun.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:26
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mass_mailing
    - mail
    - base
    - base_setup
    - web_kanban
    - web
    - email_template
    - marketing
    - web_kanban_gauge
    - web_kanban_sparkline
    - website_mail
    - website
    - share
    - website_crm
    - website_partner
    - crm
    - base_action_rule
    - resource
    - sales_team
    - calendar
    - web_calendar
    - board
    - fetchmail
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
assets_frontend assets_frontend ir.ui.view qweb Inherits website.assets_frontend
failure Unsubscription failed ir.ui.view qweb New
mail_unsubscription_reason_view_form Mail Unsubscription Reason Form mail.unsubscription.reason form New
mail_unsubscription_reason_view_search Mail Unsubscription Reason Search mail.unsubscription.reason search New
mail_unsubscription_reason_view_tree Mail Unsubscription Reason Tree mail.unsubscription.reason tree New
mail_unsubscription_view_form Mail Unsubscription Form mail.unsubscription form New
mail_unsubscription_view_search Mail Unsubscription Search mail.unsubscription search New
mail_unsubscription_view_tree Mail Unsubscription Tree mail.unsubscription tree New
reason_form Unsubscription Reason Form ir.ui.view qweb New
success Unsubscription worked ir.ui.view qweb New
view_mail_mass_mailing_list_form mail.mass_mailing.list div Inherits mass_mailing.view_mail_mass_mailing_list_form
Models touched (5)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • hash_create(self, mailing_id, res_id, email)
    @api.model
    Create a secure hash to know if the unsubscription is trusted. :return None/str: Secure hash, or ``None`` if the system parameter is empty.

New fields (1)
  • not_cross_unsubscriptable Boolean
    help="If you mark this field, this list won't be shown when unsubscribing from other mailing list, in the section: 'Is there any other mailing list you want to leave?'" string="Don't show this list in the other unsubscriptions"
Public methods (0)

No public methods.

New fields (8)
  • date Datetime
    default=<expr> required=True
  • details Char
    help='More details on why the unsubscription was made.'
  • details_required Boolean
    related='reason_id.details_required'
  • email Char
    required=True
  • mass_mailing_id Many2one → mail.mass_mailing
    help='Mass mailing from which he was unsubscribed.' required=True args: 'mail.mass_mailing', 'Mass mailing'
  • reason_id Many2one → mail.unsubscription.reason
    help='Why the unsubscription was made.' ondelete='restrict' required=True args: 'mail.unsubscription.reason', 'Reason'
  • success Boolean
    help='If this is unchecked, it indicates some failure happened in the unsubscription process.'
  • unsubscriber_id Reference
    help='Who was unsubscribed.' required=True args: <expr>, 'Unsubscriber'
Public methods (0)

No public methods.

New fields (3)
  • details_required Boolean
    help='Check to ask for more details when this reason is selected.'
  • name Char
    index=True required=True translate=True
  • sequence Integer
    help='Position of the reason in the list.' index=True
Public methods (0)

No public methods.