summaryrefslogtreecommitdiff
path: root/addons/test_mail/models
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/test_mail/models
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/test_mail/models')
-rw-r--r--addons/test_mail/models/__init__.py5
-rw-r--r--addons/test_mail/models/test_mail_corner_case_models.py53
-rw-r--r--addons/test_mail/models/test_mail_models.py125
-rw-r--r--addons/test_mail/models/test_mail_thread_models.py12
4 files changed, 195 insertions, 0 deletions
diff --git a/addons/test_mail/models/__init__.py b/addons/test_mail/models/__init__.py
new file mode 100644
index 00000000..0f5cea0a
--- /dev/null
+++ b/addons/test_mail/models/__init__.py
@@ -0,0 +1,5 @@
+# -*- coding: utf-8 -*-
+
+from . import test_mail_models
+from . import test_mail_corner_case_models
+from . import test_mail_thread_models
diff --git a/addons/test_mail/models/test_mail_corner_case_models.py b/addons/test_mail/models/test_mail_corner_case_models.py
new file mode 100644
index 00000000..6ede8e2f
--- /dev/null
+++ b/addons/test_mail/models/test_mail_corner_case_models.py
@@ -0,0 +1,53 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models
+
+
+class MailPerformanceThread(models.Model):
+ _name = 'mail.performance.thread'
+ _description = 'Performance: mail.thread'
+ _inherit = ['mail.thread']
+
+ name = fields.Char()
+ value = fields.Integer()
+ value_pc = fields.Float(compute="_value_pc", store=True)
+ track = fields.Char(default='test', tracking=True)
+ partner_id = fields.Many2one('res.partner', string='Customer')
+
+ @api.depends('value')
+ def _value_pc(self):
+ for record in self:
+ record.value_pc = float(record.value) / 100
+
+
+class MailPerformanceTracking(models.Model):
+ _name = 'mail.performance.tracking'
+ _description = 'Performance: multi tracking'
+ _inherit = ['mail.thread']
+
+ name = fields.Char(required=True, tracking=True)
+ field_0 = fields.Char(tracking=True)
+ field_1 = fields.Char(tracking=True)
+ field_2 = fields.Char(tracking=True)
+
+
+class MailTestTrackCompute(models.Model):
+ _name = 'mail.test.track.compute'
+ _description = "Test tracking with computed fields"
+ _inherit = ['mail.thread']
+
+ partner_id = fields.Many2one('res.partner', tracking=True)
+ partner_name = fields.Char(related='partner_id.name', store=True, tracking=True)
+ partner_email = fields.Char(related='partner_id.email', store=True, tracking=True)
+ partner_phone = fields.Char(related='partner_id.phone', tracking=True)
+
+
+class MailTestMultiCompany(models.Model):
+ """ This model can be used in multi company tests"""
+ _name = 'mail.test.multi.company'
+ _description = "Test Multi Company Mail"
+ _inherit = 'mail.thread'
+
+ name = fields.Char()
+ company_id = fields.Many2one('res.company')
diff --git a/addons/test_mail/models/test_mail_models.py b/addons/test_mail/models/test_mail_models.py
new file mode 100644
index 00000000..76fc0921
--- /dev/null
+++ b/addons/test_mail/models/test_mail_models.py
@@ -0,0 +1,125 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models
+
+
+class MailTestSimple(models.Model):
+ """ A very simple model only inheriting from mail.thread when only
+ communication history is necessary. """
+ _description = 'Simple Chatter Model'
+ _name = 'mail.test.simple'
+ _inherit = ['mail.thread']
+
+ name = fields.Char()
+ email_from = fields.Char()
+
+
+class MailTestGateway(models.Model):
+ """ A very simple model only inheriting from mail.thread to test pure mass
+ mailing features and base performances. """
+ _description = 'Simple Chatter Model for Mail Gateway'
+ _name = 'mail.test.gateway'
+ _inherit = ['mail.thread.blacklist']
+ _primary_email = 'email_from'
+
+ name = fields.Char()
+ email_from = fields.Char()
+ custom_field = fields.Char()
+
+
+class MailTestStandard(models.Model):
+ """ This model can be used in tests when automatic subscription and simple
+ tracking is necessary. Most features are present in a simple way. """
+ _description = 'Standard Chatter Model'
+ _name = 'mail.test.track'
+ _inherit = ['mail.thread']
+
+ name = fields.Char()
+ email_from = fields.Char()
+ user_id = fields.Many2one('res.users', 'Responsible', tracking=True)
+ container_id = fields.Many2one('mail.test.container', tracking=True)
+ company_id = fields.Many2one('res.company')
+
+
+class MailTestActivity(models.Model):
+ """ This model can be used to test activities in addition to simple chatter
+ features. """
+ _description = 'Activity Model'
+ _name = 'mail.test.activity'
+ _inherit = ['mail.thread', 'mail.activity.mixin']
+
+ name = fields.Char()
+ date = fields.Date()
+ email_from = fields.Char()
+ active = fields.Boolean(default=True)
+
+ def action_start(self, action_summary):
+ return self.activity_schedule(
+ 'test_mail.mail_act_test_todo',
+ summary=action_summary
+ )
+
+ def action_close(self, action_feedback):
+ self.activity_feedback(['test_mail.mail_act_test_todo'], feedback=action_feedback)
+
+
+class MailTestTicket(models.Model):
+ """ This model can be used in tests when complex chatter features are
+ required like modeling tasks or tickets. """
+ _description = 'Ticket-like model'
+ _name = 'mail.test.ticket'
+ _inherit = ['mail.thread']
+
+ name = fields.Char()
+ email_from = fields.Char(tracking=True)
+ count = fields.Integer(default=1)
+ datetime = fields.Datetime(default=fields.Datetime.now)
+ mail_template = fields.Many2one('mail.template', 'Template')
+ customer_id = fields.Many2one('res.partner', 'Customer', tracking=2)
+ user_id = fields.Many2one('res.users', 'Responsible', tracking=1)
+ container_id = fields.Many2one('mail.test.container', tracking=True)
+
+ def _track_template(self, changes):
+ res = super(MailTestTicket, self)._track_template(changes)
+ record = self[0]
+ if 'customer_id' in changes and record.mail_template:
+ res['customer_id'] = (record.mail_template, {'composition_mode': 'mass_mail'})
+ elif 'datetime' in changes:
+ res['datetime'] = ('test_mail.mail_test_ticket_tracking_view', {'composition_mode': 'mass_mail'})
+ return res
+
+ def _creation_subtype(self):
+ if self.container_id:
+ return self.env.ref('test_mail.st_mail_test_ticket_container_upd')
+ return super(MailTestTicket, self)._creation_subtype()
+
+ def _track_subtype(self, init_values):
+ self.ensure_one()
+ if 'container_id' in init_values and self.container_id:
+ return self.env.ref('test_mail.st_mail_test_ticket_container_upd')
+ return super(MailTestTicket, self)._track_subtype(init_values)
+
+
+class MailTestContainer(models.Model):
+ """ This model can be used in tests when container records like projects
+ or teams are required. """
+ _description = 'Project-like model with alias'
+ _name = 'mail.test.container'
+ _mail_post_access = 'read'
+ _inherit = ['mail.thread', 'mail.alias.mixin']
+
+ name = fields.Char()
+ description = fields.Text()
+ customer_id = fields.Many2one('res.partner', 'Customer')
+ alias_id = fields.Many2one(
+ 'mail.alias', 'Alias',
+ delegate=True)
+
+ def _alias_get_creation_values(self):
+ values = super(MailTestContainer, self)._alias_get_creation_values()
+ values['alias_model_id'] = self.env['ir.model']._get('mail.test.container').id
+ if self.id:
+ values['alias_force_thread_id'] = self.id
+ values['alias_parent_thread_id'] = self.id
+ return values
diff --git a/addons/test_mail/models/test_mail_thread_models.py b/addons/test_mail/models/test_mail_thread_models.py
new file mode 100644
index 00000000..29bbe725
--- /dev/null
+++ b/addons/test_mail/models/test_mail_thread_models.py
@@ -0,0 +1,12 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models
+
+
+class MailTestCC(models.Model):
+ _name = 'mail.test.cc'
+ _description = "Test Email CC Thread"
+ _inherit = ['mail.thread.cc']
+
+ name = fields.Char()