summaryrefslogtreecommitdiff
path: root/addons/email_template/email_template_mailbox.py
diff options
context:
space:
mode:
authorMeera Trambadia (OpenERP) <mtr@tinyerp.com>2011-09-16 11:11:38 +0530
committerMeera Trambadia (OpenERP) <mtr@tinyerp.com>2011-09-16 11:11:38 +0530
commitd979aad3de95ae24aa1db52cf17c4eecf3d3ce6b (patch)
tree592698c8e0dab53fcd157dd456a800bd4a80b5bf /addons/email_template/email_template_mailbox.py
parenteea80125f7d1c739260929fb1f38866ef21439e1 (diff)
parentd101d3fbaaffe2d0219ac6cfeef50338a2501664 (diff)
[MERGE] branch merged with lp:openobject-addons
bzr revid: mtr@tinyerp.com-20110916054138-93b3caomaij5dyp4
Diffstat (limited to 'addons/email_template/email_template_mailbox.py')
-rw-r--r--addons/email_template/email_template_mailbox.py214
1 files changed, 0 insertions, 214 deletions
diff --git a/addons/email_template/email_template_mailbox.py b/addons/email_template/email_template_mailbox.py
deleted file mode 100644
index 4486cb5451e..00000000000
--- a/addons/email_template/email_template_mailbox.py
+++ /dev/null
@@ -1,214 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2009 Sharoon Thomas
-# Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>)
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>
-#
-##############################################################################
-
-from osv import osv, fields
-import time
-import netsvc
-from tools.translate import _
-import tools
-
-LOGGER = netsvc.Logger()
-
-class email_template_mailbox(osv.osv):
- _name = "email_template.mailbox"
- _description = 'Email Mailbox'
- _rec_name = "subject"
- _order = "date_mail desc"
-
- def run_mail_scheduler(self, cursor, user, context=None):
- """
- This method is called by OpenERP Scheduler
- to periodically send emails
- """
- try:
- self.send_all_mail(cursor, user, context=context)
- except Exception, e:
- LOGGER.notifyChannel(
- "Email Template",
- netsvc.LOG_ERROR,
- _("Error sending mail: %s") % e)
-
- def send_all_mail(self, cr, uid, ids=None, context=None):
- if ids is None:
- ids = []
- if context is None:
- context = {}
- filters = [('folder', '=', 'outbox'), ('state', '!=', 'sending')]
- if 'filters' in context.keys():
- for each_filter in context['filters']:
- filters.append(each_filter)
- ids = self.search(cr, uid, filters, context=context)
- self.write(cr, uid, ids, {'state':'sending'}, context)
- self.send_this_mail(cr, uid, ids, context)
- return True
-
- def send_this_mail(self, cr, uid, ids=None, context=None):
- #previous method to send email (link with email account can be found at the revision 4172 and below
- result = True
- attachment_pool = self.pool.get('ir.attachment')
- for id in (ids or []):
- try:
- account_obj = self.pool.get('email_template.account')
- values = self.read(cr, uid, id, [], context)
- payload = {}
- if values['attachments_ids']:
- for attid in values['attachments_ids']:
- attachment = attachment_pool.browse(cr, uid, attid, context)#,['datas_fname','datas'])
- payload[attachment.datas_fname] = attachment.datas
- result = account_obj.send_mail(cr, uid,
- [values['account_id'][0]],
- {'To':values.get('email_to') or u'',
- 'CC':values.get('email_cc') or u'',
- 'BCC':values.get('email_bcc') or u'',
- 'Reply-To':values.get('reply_to') or u''},
- values['subject'] or u'',
- {'text':values.get('body_text') or u'', 'html':values.get('body_html') or u''},
- payload=payload,
- message_id=values['message_id'],
- context=context)
- if result == True:
- account = account_obj.browse(cr, uid, values['account_id'][0], context=context)
- if account.auto_delete:
- self.write(cr, uid, id, {'folder': 'trash'}, context=context)
- self.unlink(cr, uid, [id], context=context)
- # Remove attachments for this mail
- attachment_pool.unlink(cr, uid, values['attachments_ids'], context=context)
- return result
- else:
- self.write(cr, uid, id, {'folder':'sent', 'state':'na', 'date_mail':time.strftime("%Y-%m-%d %H:%M:%S")}, context)
- self.historise(cr, uid, [id], "Email sent successfully", context)
- else:
- error = result['error_msg']
- self.historise(cr, uid, [id], error, context)
-
- except Exception, error:
- logger = netsvc.Logger()
- logger.notifyChannel("email-template", netsvc.LOG_ERROR, _("Sending of Mail %s failed. Probable Reason:Could not login to server\nError: %s") % (id, error))
- self.historise(cr, uid, [id], error, context)
- self.write(cr, uid, id, {'state':'na'}, context)
- return result
-
- def historise(self, cr, uid, ids, message='', context=None):
- for id in ids:
- history = self.read(cr, uid, id, ['history'], context).get('history', '')
- self.write(cr, uid, id, {'history': (history or '' )+ "\n" + time.strftime("%Y-%m-%d %H:%M:%S") + ": " + tools.ustr(message)}, context)
-
- _columns = {
- 'email_from':fields.char(
- 'From',
- size=64),
- 'email_to':fields.char(
- 'Recipient (To)',
- size=250,),
- 'email_cc':fields.char(
- 'CC',
- size=250),
- 'email_bcc':fields.char(
- 'BCC',
- size=250),
- 'reply_to':fields.char(
- 'Reply-To',
- size=250),
- 'message_id':fields.char(
- 'Message-ID',
- size=250),
- 'subject':fields.char(
- 'Subject',
- size=200,),
- 'body_text':fields.text(
- 'Standard Body (Text)'),
- 'body_html':fields.text(
- 'Body (Rich Text Clients Only)'),
- 'attachments_ids':fields.many2many(
- 'ir.attachment',
- 'mail_attachments_rel',
- 'mail_id',
- 'att_id',
- 'Attachments'),
- 'account_id' :fields.many2one(
- 'email_template.account',
- 'User account',
- required=True),
- 'user':fields.related(
- 'account_id',
- 'user',
- type="many2one",
- relation="res.users",
- string="User"),
- 'server_ref':fields.integer(
- 'Server Reference of mail',
- help="Applicable for inward items only"),
- 'mail_type':fields.selection([
- ('multipart/mixed',
- 'Has Attachments'),
- ('multipart/alternative',
- 'Plain Text & HTML with no attachments'),
- ('multipart/related',
- 'Intermixed content'),
- ('text/plain',
- 'Plain Text'),
- ('text/html',
- 'HTML Body'),
- ], 'Mail Contents'),
- #I like GMAIL which allows putting same mail in many folders
- #Lets plan it for 0.9
- 'folder':fields.selection([
- ('drafts', 'Drafts'),
- ('outbox', 'Outbox'),
- ('trash', 'Trash'),
- ('sent', 'Sent Items'),
- ], 'Folder', required=True),
- 'state':fields.selection([
- ('na', 'Not Applicable'),
- ('sending', 'Sending'),
- ], 'Status', required=True),
- 'date_mail':fields.datetime('Rec/Sent Date', help="Date on which Email Sent or Received"),
- 'history':fields.text(
- 'History',
- readonly=True,
- store=True)
- }
-
- _defaults = {
- 'state': lambda * a: 'na',
- 'folder': lambda * a: 'outbox',
- }
-
- def unlink(self, cr, uid, ids, context=None):
- """
- It just changes the folder of the item to "Trash", if it is no in Trash folder yet,
- or completely deletes it if it is already in Trash.
- """
- to_update = []
- to_remove = []
- for mail in self.browse(cr, uid, ids, context=context):
- if mail.folder == 'trash':
- to_remove.append(mail.id)
- else:
- to_update.append(mail.id)
- # Changes the folder to trash
- self.write(cr, uid, to_update, {'folder': 'trash'}, context=context)
- return super(email_template_mailbox, self).unlink(cr, uid, to_remove, context=context)
-
-email_template_mailbox()
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: