| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/19.0/mail_group |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo S.A. |
| MAINTAINERS | |
| MAINTAINERS | Odoo S.A. |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Thibault Delavallée, 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 |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 01:51:45 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour - html_editor - portal - http_routing - auth_signup |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Manage your mailing lists from Odoo.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
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 |
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
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'
action_close(self)
action_join(self)
action_leave(self)
action_open(self)
action_send_guidelines(self, members=None)
default_get(self, fields)
message_new(self, msg_dict, custom_values=None)
message_post(self, body='', subject=None, email_from=None, author_id=None, **kwargs)
message_update(self, msg_dict, update_vals=None)
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'
No public methods.
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'
action_moderate_accept(self)
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)
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'
action_send_mail(self)
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')]
create(self, vals_list)
write(self, vals)
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/18.0/mail_group |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Thibault Delavallée, Xavier Morel, Géry Debongnie, Aaron Bohy, Jeremy Kersten, Odoo Online, Alvaro Fuentes, Tiffany Chang (tic), Gorash, Vincent Larcin, Dylan Kiss (dyki), Nguyễn Đại Dương, Noe Antoine, omra-odoo, Andrzej(pian), Tanguy Quéguineur, aath-odoo, sami odoo, Louis (wil), saurabh |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 01:25:58 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour - html_editor - portal - web_editor - http_routing - auth_signup |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Manage your mailing lists from Odoo.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
confirmation_subscription |
Mailing List Confirmation | 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 |
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
image_128
Image
max_height=128
max_width=128
args: 'Image'
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 this group'
moderation_guidelines
Boolean
help='Newcomers on this moderated group will automatically receive the guidelines.'
string='Send guidelines to new subscribers'
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'
action_join(self)
action_leave(self)
action_send_guidelines(self, members=None)
default_get(self, fields)
message_new(self, msg_dict, custom_values=None)
message_post(self, body='', subject=None, email_from=None, author_id=None, **kwargs)
message_update(self, msg_dict, update_vals=None)
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
ondelete='cascade'
required=True
string='Group'
args: 'mail.group'
partner_id
Many2one → res.partner
ondelete='cascade'
args: 'res.partner', 'Partner'
No public methods.
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
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
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'
action_moderate_accept(self)
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, values_list)
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'
action_send_mail(self)
email
Char
required=True
string='Email'
mail_group_id
Many2one → mail.group
ondelete='cascade'
required=True
string='Group'
args: 'mail.group'
status
Selection
default='ban'
required=True
string='Status'
args: [('allow', 'Always Allow'), ('ban', 'Permanent Ban')]
create(self, vals_list)
write(self, values)
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/17.0/mail_group |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Xavier ALT, Aaron Bohy, Jeremy Kersten, Damien Bouvy, qsm-odoo, Odoo Online, Victor Feyens, Samuel Degueldre, Alvaro Fuentes, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Pierre Paridans, Louis Wicket (wil), Pierre-Yves Dufays, Dylan Kiss (dyki), Michael (mcm), Nguyễn Đại Dương, Andrzej(pian), Tanguy Quéguineur, aath-odoo, Louis (wil), Pierre Pulinckx (pipu), Bastien PIERRE |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 01:02:09 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour - portal - web_editor - http_routing - auth_signup |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Manage your mailing lists from Odoo.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
confirmation_subscription |
Mailing List Confirmation | 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.tree | mail.group.member | tree | 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 | tree | 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.tree | mail.group.moderation | tree | 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 | tree | 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 |
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
image_128
Image
max_height=128
max_width=128
args: 'Image'
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 this group'
moderation_guidelines
Boolean
help='Newcomers on this moderated group will automatically receive the guidelines.'
string='Send guidelines to new subscribers'
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'
action_join(self)
action_leave(self)
action_send_guidelines(self, members=None)
default_get(self, fields)
message_new(self, msg_dict, custom_values=None)
message_post(self, body='', subject=None, email_from=None, author_id=None, **kwargs)
message_update(self, msg_dict, update_vals=None)
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
ondelete='cascade'
required=True
string='Group'
args: 'mail.group'
partner_id
Many2one → res.partner
ondelete='cascade'
args: 'res.partner', 'Partner'
No public methods.
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
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
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'
action_moderate_accept(self)
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(self, default=None)
create(self, values_list)
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'
action_send_mail(self)
email
Char
required=True
string='Email'
mail_group_id
Many2one → mail.group
ondelete='cascade'
required=True
string='Group'
args: 'mail.group'
status
Selection
default='ban'
required=True
string='Status'
args: [('allow', 'Always Allow'), ('ban', 'Permanent Ban')]
create(self, vals_list)
write(self, values)
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/16.0/mail_group |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Jeremy Kersten, Damien Bouvy, Romeo Fragomeli, Victor Feyens, Alvaro Fuentes, std-odoo, Tiffany Chang (tic), Csaba Tóth, Fabio Barbero, Andrzej(pian), Tanguy Quéguineur, aath-odoo |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:40:53 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour - portal - web_editor - http_routing - auth_signup |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Manage your mailing lists from Odoo.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
confirmation_subscription |
Mailing List Confirmation | 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.tree | mail.group.member | tree | 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 | tree | 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.tree | mail.group.moderation | tree | 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 | tree | 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 |
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'
alias_fullname
Char
compute='_compute_alias_fullname'
args: 'Alias Full Name'
alias_name
Char
copy=False
readonly=False
related='alias_id.alias_name'
args: 'Alias Name'
can_manage_group
Boolean
compute='_compute_can_manage_group'
help='Can manage the members'
args: 'Can Manage'
description
Text
image_128
Image
max_height=128
max_width=128
args: 'Image'
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 this group'
moderation_guidelines
Boolean
help='Newcomers on this moderated group will automatically receive the guidelines.'
string='Send guidelines to new subscribers'
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'
action_join(self)
action_leave(self)
action_send_guidelines(self, members=None)
default_get(self, fields)
message_new(self, msg_dict, custom_values=None)
message_post(self, body='', subject=None, email_from=None, author_id=None, **kwargs)
message_update(self, msg_dict, update_vals=None)
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
ondelete='cascade'
required=True
string='Group'
args: 'mail.group'
partner_id
Many2one → res.partner
ondelete='cascade'
args: 'res.partner', 'Partner'
No public methods.
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
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
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'
action_moderate_accept(self)
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(self, default=None)
create(self, values_list)
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'
action_send_mail(self)
email
Char
required=True
string='Email'
mail_group_id
Many2one → mail.group
ondelete='cascade'
required=True
string='Group'
args: 'mail.group'
status
Selection
default='ban'
required=True
string='Status'
args: [('allow', 'Always Allow'), ('ban', 'Permanent Ban')]
create(self, vals_list)
write(self, values)
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/15.0/mail_group |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Jeremy Kersten, Xavier-Do, std-odoo, Tiffany Chang (tic), Csaba Tóth, Nicolas Bayet, Andrzej(pian), Tanguy Quéguineur |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:25:29 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour - portal - web_editor - http_routing - auth_signup |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Manage your mailing lists from Odoo.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
confirmation_subscription |
Mailing List Confirmation | 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.tree | mail.group.member | tree | 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 | tree | 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.tree | mail.group.moderation | tree | 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 | tree | 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 |
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'
alias_fullname
Char
compute='_compute_alias_fullname'
args: 'Alias Full Name'
alias_name
Char
copy=False
readonly=False
related='alias_id.alias_name'
args: 'Alias Name'
can_manage_group
Boolean
compute='_compute_can_manage_group'
help='Can manage the members'
args: 'Can Manage'
description
Text
image_128
Image
max_height=128
max_width=128
args: 'Image'
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 this group'
moderation_guidelines
Boolean
help='Newcomers on this moderated group will automatically receive the guidelines.'
string='Send guidelines to new subscribers'
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'
action_join(self)
action_leave(self)
action_send_guidelines(self, members=None)
default_get(self, fields)
message_new(self, msg_dict, custom_values=None)
message_post(self, body='', subject=None, email_from=None, author_id=None, **kwargs)
message_update(self, msg_dict, update_vals=None)
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
ondelete='cascade'
required=True
string='Group'
args: 'mail.group'
partner_id
Many2one → res.partner
ondelete='cascade'
args: 'res.partner', 'Partner'
No public methods.
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'
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='Childs'
args: 'mail.group.message', 'group_message_parent_id'
group_message_parent_id
Many2one → mail.group.message
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
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'
action_moderate_accept(self)
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(self, default=None)
create(self, values_list)
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'
action_send_mail(self)
email
Char
required=True
string='Email'
mail_group_id
Many2one → mail.group
ondelete='cascade'
required=True
string='Group'
args: 'mail.group'
status
Selection
default='ban'
required=True
string='Status'
args: [('allow', 'Always Allow'), ('ban', 'Permanent Ban')]
create(self, vals_list)
write(self, values)