Mail digest

mail_digest
REPOSITORY
REPOSITORYOCA/social
GIT
GIThttps://github.com/OCA/social.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/social/tree/11.0/mail_digest
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSHolger Brunn, GitHub, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis, Weblate, Simone Orsi
WEBSITE
WEBSITEhttps://github.com/OCA/social
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:24:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
default_digest_tmpl Mail digest default template ir.ui.view qweb New
digest_layout Mail digest layout ir.ui.view qweb New
digest_layout_preview Mail digest layout preview ir.ui.view qweb New
mail_digest_form mail_digest mail.digest.form mail.digest form New
mail_digest_tree mail_digest mail.digest.tree mail.digest tree New
notification_form user.notification.conf form user.notification.conf form New
notification_tree user.notification.conf tree user.notification.conf tree New
view_users_form_mail mail_digest res.users notification settings res.users field Inherits mail.view_users_form_mail
view_users_form_simple_modif_mail mail_digest res.users notification preferences res.users field Inherits mail.view_users_form_simple_modif_mail
Models touched (4)

New fields (8)
  • digest_template_id Many2one → ir.ui.view
    default=<expr> domain=[('type', '=', 'qweb')] ondelete='set null' args: 'ir.ui.view', 'Qweb mail template'
  • frequency Selection
    readonly=True related='user_id.digest_frequency'
  • mail_id Many2one → mail.mail
    ondelete='set null' args: 'mail.mail', 'Mail'
  • message_ids Many2many → mail.message
    comodel_name='mail.message' string='Messages'
  • name Char
    compute='_compute_name' readonly=True string='Name'
  • sanitize_msg_body Boolean
    default=True help='Collected messages can have different styles applied on each element. If this flag is enabled (default) each message content will be sanitized before generating the email.' string='Sanitize message body'
  • state Selection
    readonly=True related='mail_id.state'
  • user_id Many2one → res.users
    comodel_name='res.users' ondelete='cascade' readonly=True required=True string='User'
Public methods (5)
  • action_create_email(self)
    @api.multi
  • create_email(self, template=None)
    @api.multi
    Create `mail.message` records for current digests. :param template: qweb template instance to override default digest one.
  • create_or_update(self, partners, message)
    @api.model
    Create or update digest. :param partners: recipients as `res.partner` browse list :param message: `mail.message` to include in digest
  • message_body(self, msg, strip_style=True)
    @api.model
    Return body message prepared for email content. Message's body can contains styles and other stuff that can screw the look and feel of digests' mails. Here we sanitize it if `sanitize_msg_body` is set on the digest.
  • process(self, frequency='daily', domain=None)
    @api.model
    Process existing digest records to create emails via cron. :param frequency: lookup digest records by users' `digest_frequency` :param domain: pass custom domain to lookup only specific digests

New fields (0)

No new fields.

Public methods (1)
  • real_user_id(self)
    @property

New fields (5)
  • digest_frequency Selection
    default='weekly' required=True selection=[('daily', 'Daily'), ('weekly', 'Weekly')] string='Frequency'
  • digest_mode Boolean
    default=False help='If enabled, email notifications will be sent in digest mode.'
  • disabled_notify_subtype_ids Many2many → mail.message.subtype
    comodel_name='mail.message.subtype' compute='_compute_notify_subtype_ids' search='_search_disabled_notify_subtype_ids' string='User disabled subtypes'
  • enabled_notify_subtype_ids Many2many → mail.message.subtype
    comodel_name='mail.message.subtype' compute='_compute_notify_subtype_ids' search='_search_enabled_notify_subtype_ids' string='User enabled subtypes'
  • notify_conf_ids One2many → user.notification.conf
    comodel_name='user.notification.conf' inverse_name='user_id' string='Notifications'
Public methods (0)

No public methods.

New fields (3)
  • enabled Boolean
    default=True index=True
  • subtype_id Many2one → mail.message.subtype
    index=True ondelete='cascade' required=True args: 'mail.message.subtype', 'Notification type'
  • user_id Many2one → res.users
    comodel_name='res.users' index=True ondelete='cascade' readonly=True required=True string='User'
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/mail_digest
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSStéphane Bidoul (ACSONE), OCA Transbot, oca-travis, Weblate, Simone Orsi
WEBSITE
WEBSITEhttps://github.com/OCA/social
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:20:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mail
    - base
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
default_digest_tmpl Mail digest default template ir.ui.view qweb New
digest_layout Mail digest layout ir.ui.view qweb New
digest_layout_preview Mail digest layout preview ir.ui.view qweb New
mail_digest_form mail_digest mail.digest.form mail.digest form New
mail_digest_tree mail_digest mail.digest.tree mail.digest tree New
notification_form partner.notification.conf form partner.notification.conf form New
notification_tree partner.notification.conf tree partner.notification.conf tree New
notifications_emails_partner_info_form mail.notifications res.partner.form res.partner xpath Inherits mail.view_emails_partner_info_form
view_email_template_corporate_identity view_email_template_corporate_identity ir.ui.view qweb New
view_email_template_demo1 view_email_template_demo1 ir.ui.view qweb New
view_users_form_mail mail_digest res.users notification settings res.users field Inherits mail.view_users_form_mail
view_users_form_simple_modif_mail mail_digest res.users notification preferences res.users field Inherits mail.view_users_form_simple_modif_mail
Models touched (4)

New fields (8)
  • digest_template_id Many2one → ir.ui.view
    default=<expr> domain=[('type', '=', 'qweb')] oldname='template_id' ondelete='set null' args: 'ir.ui.view', 'Qweb mail template'
  • frequency Selection
    readonly=True related='partner_id.notify_frequency'
  • mail_id Many2one → mail.mail
    ondelete='set null' args: 'mail.mail', 'Mail'
  • message_ids Many2many → mail.message
    comodel_name='mail.message' string='Messages'
  • name Char
    compute='_compute_name' readonly=True string='Name'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' ondelete='cascade' readonly=True required=True string='Partner'
  • sanitize_msg_body Boolean
    default=True help='Collected messages can have different styles applied on each element. If this flag is enabled (default) each message content will be sanitized before generating the email.' string='Sanitize message body'
  • state Selection
    readonly=True related='mail_id.state'
Public methods (5)
  • action_create_email(self)
    @api.multi
  • create_email(self, template=None)
    @api.multi
    Create `mail.message` records for current digests. :param template: qweb template instance to override default digest one.
  • create_or_update(self, partners, message, subtype_id=None)
    @api.model
    Create or update digest. :param partners: recipients as `res.partner` browse list :param message: `mail.message` to include in digest :param subtype_id: `mail.message.subtype` instance
  • message_body(self, msg, strip_style=True)
    @api.model
    Return body message prepared for email content. Message's body can contains styles and other stuff that can screw the look and feel of digests' mails. Here we sanitize it if `sanitize_msg_body` is set on the digest.
  • process(self, frequency='daily', domain=None)
    @api.model
    Process existing digest records to create emails via cron. :param frequency: lookup digest records by partners' `notify_frequency` :param domain: pass custom domain to lookup only specific digests

New fields (3)
  • enabled Boolean
    default=True index=True
  • partner_id Many2one → res.partner
    comodel_name='res.partner' index=True ondelete='cascade' readonly=True required=True string='Partner'
  • subtype_id Many2one → mail.message.subtype
    index=True ondelete='cascade' required=True args: 'mail.message.subtype', 'Notification type'
Public methods (0)

No public methods.

New fields (5)
  • disabled_notify_subtype_ids Many2many → mail.message.subtype
    comodel_name='mail.message.subtype' compute='_compute_disabled_notify_subtype_ids' search='_search_disabled_notify_subtype_ids' string='Partner disabled subtypes'
  • enabled_notify_subtype_ids Many2many → mail.message.subtype
    comodel_name='mail.message.subtype' compute='_compute_enabled_notify_subtype_ids' search='_search_enabled_notify_subtype_ids' string='Partner enabled subtypes'
  • notify_conf_ids One2many → partner.notification.conf
    comodel_name='partner.notification.conf' inverse_name='partner_id' string='Notifications'
  • notify_email Selection
    selection_add=[('digest', _('Digest'))]
  • notify_frequency Selection
    default='weekly' required=True selection=[('daily', 'Daily'), ('weekly', 'Weekly')] string='Frequency'
Public methods (0)

No public methods.

New fields (0)

No new fields.

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/mail_digest
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSJairo Llopis, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis, Weblate, Simone Orsi
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:23
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mail
    - base
    - base_setup
    - web_kanban
    - web
    - bus
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
default_digest_tmpl Mail digest default template ir.ui.view qweb New
digest_layout Mail digest layout ir.ui.view qweb New
mail_digest_form mail_digest mail.digest.form mail.digest form New
mail_digest_tree mail_digest mail.digest.tree mail.digest tree New
notification_form partner.notification.conf form partner.notification.conf form New
notification_tree partner.notification.conf tree partner.notification.conf tree New
notifications_email_user_info_form mail.notifications res.users.form res.users xpath Inherits mail.view_users_form_mail
notifications_emails_partner_info_form mail.notifications res.partner.form res.partner xpath Inherits mail.view_emails_partner_info_form
view_email_template_corporate_identity view_email_template_corporate_identity ir.ui.view qweb New
view_email_template_demo1 view_email_template_demo1 ir.ui.view qweb New
Models touched (3)

New fields (6)
  • frequency Selection
    readonly=True related='partner_id.notify_frequency'
  • mail_id Many2one → mail.mail
    ondelete='set null' args: 'mail.mail', 'Mail'
  • message_ids Many2many → mail.message
    comodel_name='mail.message' string='Messages'
  • name Char
    compute='_compute_name' readonly=True string='Name'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' ondelete='cascade' readonly=True required=True string='Partner'
  • state Selection
    related='mail_id.state'
Public methods (3)
  • create_email(self, template=None)
    @api.multi
  • create_or_update(self, partners, message, subtype_id=None)
    @api.model
  • process(self, frequency='daily', domain=None)
    @api.model

New fields (3)
  • enabled Boolean
    default=True index=True
  • partner_id Many2one → res.partner
    comodel_name='res.partner' index=True ondelete='cascade' readonly=True required=True string='Partner'
  • subtype_id Many2one → mail.message.subtype
    ondelete='cascade' required=True args: 'mail.message.subtype', 'Notification type'
Public methods (0)

No public methods.

New fields (5)
  • disabled_notify_subtype_ids Many2many → mail.message.subtype
    comodel_name='mail.message.subtype' compute='_compute_disabled_notify_subtype_ids' search='_search_disabled_notify_subtype_ids' string='Partner disabled subtypes'
  • enabled_notify_subtype_ids Many2many → mail.message.subtype
    comodel_name='mail.message.subtype' compute='_compute_enabled_notify_subtype_ids' search='_search_enabled_notify_subtype_ids' string='Partner enabled subtypes'
  • notify_conf_ids One2many → partner.notification.conf
    comodel_name='partner.notification.conf' inverse_name='partner_id' string='Notifications'
  • notify_email Selection
    selection_add=[('digest', _('Digest'))]
  • notify_frequency Selection
    default='weekly' required=True selection=[('daily', 'Daily'), ('weekly', 'Weekly')] string='Frequency'
Public methods (0)

No public methods.