Repository
odoo/odoo · module folder
Module version
1.1
Category
Uncategorized
Folder size
3.01 MB
License
LGPL-3
Application
No
Auto-installable
No
Website
None
Last tracking update
2026-08-15 22:44:19
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Raphael Collet, Thibault Delavallée, Odoo Translation Bot, Géry Debongnie, qsm-odoo, Julien Castiaux, Alvaro Fuentes, std-odoo, Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, William Braeckman, Renaud Thiry, Victor Piryns (pivi), Dylan Kiss (dyki), adsh-odoo, Sébastien (blse), Anton Romanova (roan), Krzysztof Magusiak (krma), saurabh, alan-odoo, panj-odoo
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
website_mail_group
Description
Manage your mailing lists from Odoo.
    

Code Analysis

Views touched (26)
XML IDNameModelTypeStatus
confirmation_subscription Mailing List Confirmation ir.ui.view qweb New
email_template_mail_group_closed email_template_mail_group_closed ir.ui.view qweb New
group_archive_menu group_archive_menu ir.ui.view qweb New
group_message group_message ir.ui.view qweb New
group_messages Message Threads ir.ui.view qweb New
group_name group_name ir.ui.view qweb New
invalid_token_subscription Invalid Token Submitted ir.ui.view qweb New
mail_group_footer Mail Group: Footer ir.ui.view qweb New
mail_group_member_view_search mail.group.member.view.search mail.group.member search New
mail_group_member_view_tree mail.group.member.view.list mail.group.member list New
mail_group_message_reject_form mail.group.message.reject.form mail.group.message.reject form New
mail_group_message_view_form mail.group.message.view.form mail.group.message form New
mail_group_message_view_list mail.group.message.view.list mail.group.message list New
mail_group_message_view_search mail.group.message.view.search mail.group.message search New
mail_group_moderation_view_search mail.group.moderation.view.search mail.group.moderation search New
mail_group_moderation_view_tree mail.group.moderation.view.list mail.group.moderation list New
mail_group_notify_moderation mail_group_notify_moderation ir.ui.view qweb New
mail_group_view_form mail.group.view.form mail.group form New
mail_group_view_kanban mail.group.view.kanban mail.group kanban New
mail_group_view_list mail.group.view.list mail.group list New
mail_group_view_search mail.group.view.search mail.group search New
mail_groups Mailing Lists ir.ui.view qweb New
message_attachments message_attachments ir.ui.view qweb New
message_footer Message Footer ir.ui.view qweb New
messages_short messages_short ir.ui.view qweb New
portal_breadcrumbs_group Portal layout : mail group menu entry ir.ui.view qweb Inherits portal.portal_breadcrumbs
HTTP endpoints (9)
Route(s)HandlerAuthTypeMethodsFlags
/groups/<model("mail.group"):group>/<model("mail.group.message"):message>/get_replies PortalMailGroup.group_message_get_replies public jsonrpc POST sudo website
/group/subscribe PortalMailGroup.group_subscribe public jsonrpc ALL website
/group/subscribe-confirm PortalMailGroup.group_subscribe_confirm public http ALL sudo website
/group/unsubscribe PortalMailGroup.group_unsubscribe public jsonrpc ALL website
/group/unsubscribe-confirm PortalMailGroup.group_unsubscribe_confirm public http ALL website
/group/<int:group_id>/unsubscribe_oneclick PortalMailGroup.group_unsubscribe_oneclick public http POST csrf off sudo website
/groups/<model("mail.group"):group>/<model("mail.group.message"):message> PortalMailGroup.group_view_message public http ALL sudo website
/groups/<model("mail.group"):group>, /groups/<model("mail.group"):group>/page/<int:page> PortalMailGroup.group_view_messages public http ALL sudo website
/groups PortalMailGroup.groups_index public http ALL sudo website
Models touched (5)

New fields (25)
  • access_group_id Many2one → res.groups
    default=<expr> string='Authorized Group' args: 'res.groups'
  • access_mode Selection
    default='public' required=True string='Privacy' args: [('public', 'Everyone'), ('members', 'Members only'), ('groups', 'Selected group of users')]
  • active Boolean
    default=True args: 'Active'
  • can_manage_group Boolean
    compute='_compute_can_manage_group' help='Can manage the members' args: 'Can Manage'
  • description Text
    args: 'Description'
  • image_128 Image
    max_height=128 max_width=128 args: 'Image'
  • is_closed Boolean
    copy=False help='Closed groups might still be accessed, but emails sent to it will bounce' args: 'Is Closed'
  • is_member Boolean
    compute='_compute_is_member' args: 'Is Member'
  • is_moderator Boolean
    compute='_compute_is_moderator' help='Current user is a moderator of the group' string='Moderator'
  • mail_group_message_count Integer
    compute='_compute_mail_group_message_count' help='Number of message in this group' args: 'Messages Count'
  • mail_group_message_ids One2many → mail.group.message
    string='Pending Messages' args: 'mail.group.message', 'mail_group_id'
  • mail_group_message_last_month_count Integer
    compute='_compute_mail_group_message_last_month_count' args: 'Messages Per Month'
  • mail_group_message_moderation_count Integer
    compute='_compute_mail_group_message_moderation_count' help='Messages that need an action' args: 'Pending Messages Count'
  • member_count Integer
    compute='_compute_member_count' args: 'Members Count'
  • member_ids One2many → mail.group.member
    string='Members' args: 'mail.group.member', 'mail_group_id'
  • member_partner_ids Many2many → res.partner
    compute='_compute_member_partner_ids' search='_search_member_partner_ids' string='Partners Member' args: 'res.partner'
  • moderation Boolean
    string='Moderate'
  • moderation_guidelines Boolean
    help='Newcomers on this moderated group will automatically receive the guidelines.' string='Send guidelines to new members'
  • moderation_guidelines_msg Html
    string='Guidelines'
  • moderation_notify Boolean
    help='People receive an automatic notification about their message being waiting for moderation.' string='Automatic notification'
  • moderation_notify_msg Html
    string='Notification message'
  • moderation_rule_count Integer
    compute='_compute_moderation_rule_count' string='Moderated emails count'
  • moderation_rule_ids One2many → mail.group.moderation
    string='Moderated Emails' args: 'mail.group.moderation', 'mail_group_id'
  • moderator_ids Many2many → res.users
    domain=<expr> string='Moderators' args: 'res.users', 'mail_group_moderator_rel'
  • name Char
    required=True translate=True args: 'Name'
Public methods (9)
  • action_close(self)
  • action_join(self)
  • action_leave(self)
  • action_open(self)
  • action_send_guidelines(self, members=None)
    Send guidelines to given members.
  • default_get(self, fields)
    @api.model
  • message_new(self, msg_dict, custom_values=None)
    @api.model
    Add the method to make the mail gateway flow work with this model.
  • message_post(self, body='', subject=None, email_from=None, author_id=None, **kwargs)
    Custom posting process. This model does not inherit from ``mail.thread`` but uses the mail gateway so few methods should be defined. This custom posting process works as follow * create a ``mail.message`` based on incoming email; * create linked ``mail.group.message`` that encapsulates message in a format used in mail groups; * apply moderation rules; :returns: newly-created mail.message
  • message_update(self, msg_dict, update_vals=None)
    @api.model
    Add the method to make the mail gateway flow work with this model.

New fields (4)
  • email Char
    compute='_compute_email' readonly=False store=True string='Email'
  • email_normalized Char
    compute='_compute_email_normalized' index=True store=True string='Normalized Email'
  • mail_group_id Many2one → mail.group
    index=True ondelete='cascade' required=True string='Group' args: 'mail.group'
  • partner_id Many2one → res.partner
    ondelete='cascade' args: 'res.partner', 'Partner'
Public methods (0)

No public methods.

New fields (15)
  • attachment_ids Many2many
    readonly=False related='mail_message_id.attachment_ids'
  • author_id Many2one
    readonly=False related='mail_message_id.author_id'
  • author_moderation Selection
    compute='_compute_author_moderation' string='Author Moderation Status' args: [('ban', 'Banned'), ('allow', 'Whitelisted')]
  • body Html
    readonly=False related='mail_message_id.body'
  • create_date Datetime
    string='Posted'
  • email_from Char
    readonly=False related='mail_message_id.email_from'
  • email_from_normalized Char
    compute='_compute_email_from_normalized' store=True args: 'Normalized From'
  • group_message_child_ids One2many → mail.group.message
    string='Children' args: 'mail.group.message', 'group_message_parent_id'
  • group_message_parent_id Many2one → mail.group.message
    index=True store=True string='Parent' args: 'mail.group.message'
  • is_group_moderated Boolean
    related='mail_group_id.moderation' args: 'Is Group Moderated'
  • mail_group_id Many2one → mail.group
    index=True ondelete='cascade' required=True string='Group' args: 'mail.group'
  • mail_message_id Many2one → mail.message
    copy=False index=True ondelete='cascade' required=True args: 'mail.message', 'Mail Message'
  • moderation_status Selection
    copy=False default='pending_moderation' index=True required=True string='Status' args: [('pending_moderation', 'Pending Moderation'), ('accepted', 'Accepted'), ('rejected', 'Rejected')]
  • moderator_id Many2one → res.users
    string='Moderated By' args: 'res.users'
  • subject Char
    readonly=False related='mail_message_id.subject'
Public methods (8)
  • action_moderate_accept(self)
    Accept the incoming email. Will send the incoming email to all members of the group.
  • action_moderate_allow(self)
  • action_moderate_ban(self)
  • action_moderate_ban_with_comment(self, ban_subject, ban_comment)
  • action_moderate_reject(self)
  • action_moderate_reject_with_comment(self, reject_subject, reject_comment)
  • copy_data(self, default=None)
  • create(self, vals_list)
    @api.model_create_multi

New fields (6)
  • action Selection
    required=True string='Action' args: [('reject', 'Reject'), ('ban', 'Ban')]
  • body Html
    default='' sanitize_style=True args: 'Contents'
  • email_from_normalized Char
    related='mail_group_message_id.email_from_normalized' args: 'Email From'
  • mail_group_message_id Many2one → mail.group.message
    readonly=True required=True string='Message' args: 'mail.group.message'
  • send_email Boolean
    compute='_compute_send_email' help='Send an email to the author of the message' args: 'Send Email'
  • subject Char
    compute='_compute_subject' readonly=False store=True args: 'Subject'
Public methods (1)
  • action_send_mail(self)

New fields (3)
  • email Char
    required=True string='Email'
  • mail_group_id Many2one → mail.group
    index=True ondelete='cascade' required=True string='Group' args: 'mail.group'
  • status Selection
    default='ban' required=True string='Status' args: [('allow', 'Always Allow'), ('ban', 'Permanent Ban')]
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

Loading…

Loading…

Loading…

Loading…