oca-ocb-test/odoo-bringout-oca-ocb-test_mail/test_mail/models/test_mail_feature_models.py
Ernad Husremovic d9452d2060 19.0 vanilla
2026-03-09 09:32:39 +01:00

95 lines
3.5 KiB
Python

from odoo import api, fields, models
from odoo.fields import Domain
# ------------------------------------------------------------
# RECIPIENTS
# ------------------------------------------------------------
class MailTestRecipients(models.Model):
_name = 'mail.test.recipients'
_description = "Test Recipients Computation"
_inherit = ['mail.thread.cc']
_primary_email = 'customer_email'
company_id = fields.Many2one('res.company')
contact_ids = fields.Many2many('res.partner')
customer_id = fields.Many2one('res.partner')
customer_email = fields.Char('Customer Email', compute='_compute_customer_email', readonly=False, store=True)
customer_phone = fields.Char('Customer Phone', compute='_compute_customer_phone', readonly=False, store=True)
name = fields.Char()
@api.depends('customer_id')
def _compute_customer_email(self):
for source in self.filtered(lambda r: r.customer_id and not r.customer_email):
source.customer_email = source.customer_id.email_formatted
@api.depends('customer_id')
def _compute_customer_phone(self):
for source in self.filtered(lambda r: r.customer_id and not r.customer_phone):
source.customer_phone = source.customer_id.phone
def _mail_get_partner_fields(self, introspect_fields=False):
return ['customer_id', 'contact_ids']
class MailTestThreadCustomer(models.Model):
_name = 'mail.test.thread.customer'
_description = "Test Customer Thread Model"
_inherit = ['mail.test.recipients']
_mail_thread_customer = True
_primary_email = 'customer_email'
# ------------------------------------------------------------
# PROPERTIES
# ------------------------------------------------------------
class MailTestProperties(models.Model):
_name = 'mail.test.properties'
_description = 'Mail Test Properties'
_inherit = ['mail.thread']
name = fields.Char('Name')
parent_id = fields.Many2one('mail.test.properties', string='Parent')
properties = fields.Properties('Properties', definition='parent_id.definition_properties')
definition_properties = fields.PropertiesDefinition('Definitions')
# ------------------------------------------------------------
# ROTTING RESOURCES
# ------------------------------------------------------------
class MailTestStageField(models.Model):
_description = 'Fake model to be a stage to help test rotting implementation'
_name = 'mail.test.rotting.stage'
name = fields.Char()
rotting_threshold_days = fields.Integer(default=3)
no_rot = fields.Boolean(default=False)
class MailTestRottingMixin(models.Model):
_description = 'Fake model to test the rotting part of the mixin mail.thread.tracking.duration.mixin'
_name = 'mail.test.rotting.resource'
_track_duration_field = 'stage_id'
_inherit = ['mail.tracking.duration.mixin']
name = fields.Char()
date_last_stage_update = fields.Datetime(
'Last Stage Update', compute='_compute_date_last_stage_update', index=True, readonly=True, store=True)
stage_id = fields.Many2one('mail.test.rotting.stage', 'Stage')
done = fields.Boolean(default=False)
def _get_rotting_depends_fields(self):
return super()._get_rotting_depends_fields() + ['done', 'stage_id.no_rot']
def _get_rotting_domain(self):
return super()._get_rotting_domain() & Domain([
('done', '=', False),
('stage_id.no_rot', '=', False),
])
@api.depends('stage_id')
def _compute_date_last_stage_update(self):
self.date_last_stage_update = fields.Datetime.now()