OCA Membership Groups (custom)

oca_membership_groups
REPOSITORY
REPOSITORYOCA/oca-custom
GIT
GIThttps://github.com/OCA/oca-custom.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/oca-custom/tree/18.0/oca_membership_groups
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYCustom
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSSébastien BEAU, OCA-git-bot, oca-ci, Arnaud LAYEC
WEBSITE
WEBSITEhttps://github.com/OCA/oca-custom
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:13
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/oca-custom:
    - oca_membership
    - oca_vcp
OCA/version-control-platform:
    - vcp_odoo
    - vcp_management
    - vcp_github
    - vcp_git
OCA/vertical-association:
    - membership_extension
odoo/odoo:
    - mail_group
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - account
    - onboarding
    - product
    - uom
    - analytic
    - digest
    - resource
    - membership
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES pypandoc
pathspec
github3.py
markdown
GitPython
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES cloc
DESCRIPTION
DESCRIPTION
This module manages the mailing lists inside the OCA. It relies on the
native Odoo model *Mailing Group* mail.group.

## Main features

This module allows:

- to distinguish Working Groups from other Mail Groups, so they are
  published on the website on members' page
- to keep up-to-date the Mail Groups compared to Members roles in the
  association (like *Members* and *Delegate* mailing list)
- removes the expired members **with a grace period**
- retain the wish of the members who unsubscribed, to prevent spamming
  them by re-adding them to the mailing lists

## Notes

- Any Mailing Group member, being a portal or internal Odoo users, may
  subscribe or unsubscribed from */groups* controller
- The *Board Members* mailing list is managed manually (not automatized)
- The *Contributor* mailing list too, and is public

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
mail_group_member_view_search mail.group.member.view.search.membership_groups mail.group.member search Inherits mail_group.mail_group_member_view_search
mail_group_member_view_tree mail.group.member.view.list.membership_groups mail.group.member list Inherits mail_group.mail_group_member_view_tree
mail_group_view_form mail.group.view.form.oca_membership mail.group notebook Inherits mail_group.mail_group_view_form
mail_group_view_kanban mail.group.view.kanban.oca_membership mail.group field Inherits mail_group.mail_group_view_kanban
mail_group_view_search mail.group.view.search.oca_membership mail.group filter Inherits mail_group.mail_group_view_search
membership_category_tree_view membership.category.oca_membership membership.membership_category list Inherits membership_extension.membership_category_tree_view
view_partner_form res.partner.form.membership_extension.oca_membership_groups res.partner div Inherits membership_extension.view_partner_form
Models touched (4)

New fields (3)
  • grace_days Integer
    default=90 help='Number of days before the expired members are automatically retired from this group. Only relevant for groups with auto-subscription from the membership category.'
  • is_working_group Boolean
    default=False help='Working Group are visible on the website page, on members profile.' string='Is a Working Group'
  • membership_category_ids Many2many → membership.membership_category
    column1='mail_group_id' column2='category_id' comodel_name='membership.membership_category' help='The members of this Mailing Group follows the members of those membership categories.' relation='membership_category_mail_group_rel' string='Membership Categories'
Public methods (0)

No public methods.

New fields (3)
  • active Boolean
    default=True
  • grace_date_deadline Date
    compute='_compute_grace_date_deadline' help='Date on which the member will be retired automatically from this Mailing Group, unless he/she renew its membership.' string='Grace Deadline'
  • grace_date_start Date
    help='Date on which the member is not legitimate anymore to belong in this Mailing'
Public methods (2)
  • unlink(self)
    When a user leaves a group, remember its unsubscription (=archive instead of unlink) to avoid provisioning it automatically
  • write(self, vals)
    When called from `_join_group`, if a user re-subscribe a previously unsubscribed group, re-active its membership instead of creating a duplicate

New fields (1)
  • mail_group_ids Many2many → mail.group
    column1='category_id' column2='mail_group_id' comodel_name='mail.group' help='The members of this category will automatically subscribe to these Mail Groups. They will be able to unsubscribe too.' relation='membership_category_mail_group_rel' string='Mail Groups'
Public methods (0)

No public methods.

New fields (2)
  • mail_group_count Integer
    compute='_compute_mail_group_count' string='Mail Groups'
  • mail_group_member_ids One2many → mail.group.member
    comodel_name='mail.group.member' inverse_name='partner_id'
Public methods (0)

No public methods.