1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- # -*- coding: utf-8 -*-
- from lxml import etree
- from openerp import tools, models, fields, api
- from openerp.tools.translate import _
- class vieterp_mail_inbox(models.Model):
- _inherit = ['mail.mail']
- _name = 'mail.inbox'
- fetchmail_server_id = fields.Many2one('fetchmail.server.inbox', "Inbound Mail Server", readonly=True, index=True,
- oldname='server_id')
- template_id = fields.Many2one('email.template', string='Mail Template', select=True)
- state = fields.Selection([
- ('inbox', 'Inbox'),
- ('outgoing', 'Outgoing'),
- ('sent', 'Sent'),
- ('received', 'Received'),
- ('exception', 'Delivery Failed'),
- ('cancel', 'Cancelled'),
- ], 'Status', readonly=True, copy=False, default='outgoing')
- @api.model
- def message_new(self, msg_dict, custom_values=None):
- self = self.with_context(default_user_id=False)
- mail_data = {
- 'subject': msg_dict.get('subject') or _("No Subject"),
- 'email_from': msg_dict.get('from'),
- 'email_to': msg_dict.get('to'),
- 'email_cc': msg_dict.get('cc'),
- 'partner_id': msg_dict.get('author_id', False),
- 'body_html': msg_dict.get('body', ''),
- 'attachment_ids': msg_dict.get('attachments', []),
- 'state': 'inbox',
- }
- result = self.create(mail_data)
- return result
- @api.multi
- @api.returns('mail.message', lambda value: value.id)
- def message_post(self, subtype=None, **kwargs):
- message_data = {
- 'subject': kwargs.get('subject'),
- 'date': kwargs.get('date'),
- 'body': kwargs.get('body'),
- 'email_from': kwargs.get('email_from'),
- 'reply_to': kwargs.get('email_from'),
- }
- return self.env['mail.message'].create(message_data)
- # @api.model
- # def fields_view_get(self, view_id=None, view_type=False, toolbar=False, submenu=False):
- # context = self._context
- # result = super(vieterp_mail_inbox, self).fields_view_get(view_id, view_type, toolbar, submenu)
- # if view_type == 'form':
- # current_id = context.get('active_id', False)
- # my_state = self.browse(current_id).state
- # if my_state in ['inbox', 'outgoing']:
- # doc = etree.XML(result['arch'])
- # for node in doc.xpath('//form'):
- # node.set('edit', 'true')
- # result['arch'] = etree.tostring(doc)
- # return result
- @api.onchange('template_id') # if template are changed, call method
- def check_template_change(self):
- """ - mass_mailing: we cannot render, so return the template values
- - normal mode: return rendered values """
- if self.template_id and self.template_id.id:
- self.subject = self.template_id.subject
- self.body_html = self.template_id.body_html
- self.reply_to = self.template_id.reply_to
- self.mail_server_id = self.template_id.mail_server_id
- if self.template_id.attachment_ids:
- self.attachment_ids = [att.id for att in template.attachment_ids]
- if self.template_id.mail_server_id:
- self.mail_server_id = self.template_id.mail_server_id.id
- if self.template_id.user_signature and self.body_html:
- signature = self.env['res.users'].browse(self._uid).signature
- self.body = tools.append_content_to_html(self.body, signature, plaintext=False)
- else:
- if not self.body_html:
- signature = self.env['res.users'].browse(self._uid).signature
- self.body_html = signature
|