mirror of
https://github.com/bringout/oca-ocb-test.git
synced 2026-04-19 23:22:00 +02:00
95 lines
3.5 KiB
Python
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()
|