43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
import logging
|
|
|
|
from odoo import api, fields, models
|
|
from odoo.tools import email_normalize
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class MailGroupMember(models.Model):
|
|
"""Models a group member that can be either an email address either a full partner."""
|
|
_name = 'mail.group.member'
|
|
_description = 'Mailing List Member'
|
|
_rec_name = 'email'
|
|
|
|
email = fields.Char(string='Email', compute='_compute_email', readonly=False, store=True)
|
|
email_normalized = fields.Char(
|
|
string='Normalized Email', compute='_compute_email_normalized',
|
|
index=True, store=True)
|
|
mail_group_id = fields.Many2one('mail.group', string='Group', required=True, ondelete='cascade')
|
|
partner_id = fields.Many2one('res.partner', 'Partner', ondelete='cascade')
|
|
|
|
_sql_constraints = [(
|
|
'unique_partner',
|
|
'UNIQUE(partner_id, mail_group_id)',
|
|
'This partner is already subscribed to the group',
|
|
)]
|
|
|
|
@api.depends('partner_id.email')
|
|
def _compute_email(self):
|
|
for member in self:
|
|
if member.partner_id:
|
|
member.email = member.partner_id.email
|
|
elif not member.email:
|
|
member.email = False
|
|
|
|
@api.depends('email')
|
|
def _compute_email_normalized(self):
|
|
for moderation in self:
|
|
moderation.email_normalized = email_normalize(moderation.email)
|