diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/test_mail/models/test_mail_models.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/test_mail/models/test_mail_models.py')
| -rw-r--r-- | addons/test_mail/models/test_mail_models.py | 125 |
1 files changed, 125 insertions, 0 deletions
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 |
