[FIX] email_template: wip - trying to make templates work again
bzr revid: odo@openerp.com-20120830174452-59q43k1x13at4i37
This commit is contained in:
parent
088dc6a3d3
commit
9aabe91bbf
|
@ -28,6 +28,8 @@ from osv import osv
|
||||||
from osv import fields
|
from osv import fields
|
||||||
import tools
|
import tools
|
||||||
from tools.translate import _
|
from tools.translate import _
|
||||||
|
from tools.html_sanitize import html_sanitize
|
||||||
|
from tools import html2plaintext
|
||||||
from urllib import quote as quote
|
from urllib import quote as quote
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -134,7 +136,7 @@ class email_template(osv.osv):
|
||||||
"This is useful for CRM leads for example"),
|
"This is useful for CRM leads for example"),
|
||||||
|
|
||||||
# Overridden mail.message.common fields for technical reasons:
|
# Overridden mail.message.common fields for technical reasons:
|
||||||
'model': fields.related('model_id','model', type='char', string='Related Document Model',
|
'model': fields.related('model_id', 'model', type='char', string='Related Document Model',
|
||||||
size=128, select=True, store=True, readonly=True),
|
size=128, select=True, store=True, readonly=True),
|
||||||
# we need a separate m2m table to avoid ID collisions with the original mail.message entries
|
# we need a separate m2m table to avoid ID collisions with the original mail.message entries
|
||||||
#'attachment_ids': fields.many2many('ir.attachment', 'email_template_attachment_rel', 'email_template_id',
|
#'attachment_ids': fields.many2many('ir.attachment', 'email_template_attachment_rel', 'email_template_id',
|
||||||
|
@ -143,7 +145,7 @@ class email_template(osv.osv):
|
||||||
# "emails created from this template"),
|
# "emails created from this template"),
|
||||||
|
|
||||||
# Overridden mail.message.common fields to make tooltips more appropriate:
|
# Overridden mail.message.common fields to make tooltips more appropriate:
|
||||||
#'subject':fields.char('Subject', size=512, translate=True, help="Subject (placeholders may be used here)",),
|
'subject': fields.char('Subject', translate=True, help="Subject (placeholders may be used here)",),
|
||||||
'email_from': fields.char('From', size=128, help="Sender address (placeholders may be used here)"),
|
'email_from': fields.char('From', size=128, help="Sender address (placeholders may be used here)"),
|
||||||
'email_to': fields.char('To', size=256, help="Comma-separated recipient addresses (placeholders may be used here)"),
|
'email_to': fields.char('To', size=256, help="Comma-separated recipient addresses (placeholders may be used here)"),
|
||||||
'email_cc': fields.char('Cc', size=256, help="Carbon copy recipients (placeholders may be used here)"),
|
'email_cc': fields.char('Cc', size=256, help="Carbon copy recipients (placeholders may be used here)"),
|
||||||
|
@ -151,13 +153,7 @@ class email_template(osv.osv):
|
||||||
'mail_server_id': fields.many2one('ir.mail_server', 'Outgoing Mail Server', readonly=False,
|
'mail_server_id': fields.many2one('ir.mail_server', 'Outgoing Mail Server', readonly=False,
|
||||||
help="Optional preferred server for outgoing mails. If not set, the highest "
|
help="Optional preferred server for outgoing mails. If not set, the highest "
|
||||||
"priority one will be used."),
|
"priority one will be used."),
|
||||||
#'body': fields.text('Text Contents', translate=True, help="Plaintext version of the message (placeholders may be used here)"),
|
|
||||||
'body_html': fields.text('Rich-text Contents', translate=True, help="Rich-text/HTML version of the message (placeholders may be used here)"),
|
'body_html': fields.text('Rich-text Contents', translate=True, help="Rich-text/HTML version of the message (placeholders may be used here)"),
|
||||||
#'message_id': fields.char('Message-Id', size=256, help="Message-ID SMTP header to use in outgoing messages based on this template. "
|
|
||||||
# "Please note that this overrides the 'Resource Tracking' option, "
|
|
||||||
# "so if you simply need to track replies to outgoing emails, enable "
|
|
||||||
# "that option instead.\n"
|
|
||||||
# "Placeholders must be used here, as this value always needs to be unique!"),
|
|
||||||
|
|
||||||
# Fake fields used to implement the placeholder assistant
|
# Fake fields used to implement the placeholder assistant
|
||||||
'model_object_field': fields.many2one('ir.model.fields', string="Field",
|
'model_object_field': fields.many2one('ir.model.fields', string="Field",
|
||||||
|
@ -300,7 +296,6 @@ class email_template(osv.osv):
|
||||||
context = {}
|
context = {}
|
||||||
values = {
|
values = {
|
||||||
'subject': False,
|
'subject': False,
|
||||||
'body': False,
|
|
||||||
'body_html': False,
|
'body_html': False,
|
||||||
'email_from': False,
|
'email_from': False,
|
||||||
'email_to': False,
|
'email_to': False,
|
||||||
|
@ -314,7 +309,6 @@ class email_template(osv.osv):
|
||||||
'attachment_ids': False,
|
'attachment_ids': False,
|
||||||
'message_id': False,
|
'message_id': False,
|
||||||
'state': 'outgoing',
|
'state': 'outgoing',
|
||||||
'content_subtype': 'plain',
|
|
||||||
}
|
}
|
||||||
if not template_id:
|
if not template_id:
|
||||||
return values
|
return values
|
||||||
|
@ -322,15 +316,15 @@ class email_template(osv.osv):
|
||||||
report_xml_pool = self.pool.get('ir.actions.report.xml')
|
report_xml_pool = self.pool.get('ir.actions.report.xml')
|
||||||
template = self.get_email_template(cr, uid, template_id, res_id, context)
|
template = self.get_email_template(cr, uid, template_id, res_id, context)
|
||||||
|
|
||||||
for field in ['subject', 'body', 'body_html', 'email_from',
|
for field in ['subject', 'body_html', 'email_from',
|
||||||
'email_to', 'email_cc', 'reply_to',
|
'email_to', 'email_cc', 'reply_to']:
|
||||||
'message_id']:
|
|
||||||
values[field] = self.render_template(cr, uid, getattr(template, field),
|
values[field] = self.render_template(cr, uid, getattr(template, field),
|
||||||
template.model, res_id, context=context) \
|
template.model, res_id, context=context) \
|
||||||
or False
|
or False
|
||||||
|
|
||||||
if values['body_html']:
|
if values['body_html']:
|
||||||
values.update(content_subtype='html')
|
values['body'] = html_sanitize(values['body_html'])
|
||||||
|
values['body_text'] = html2plaintext(values['body_html'])
|
||||||
|
|
||||||
if template.user_signature:
|
if template.user_signature:
|
||||||
signature = self.pool.get('res.users').browse(cr, uid, uid, context).signature
|
signature = self.pool.get('res.users').browse(cr, uid, uid, context).signature
|
||||||
|
|
|
@ -22,10 +22,7 @@
|
||||||
<field name="reply_to"/>
|
<field name="reply_to"/>
|
||||||
<field name="subject" required="1"/>
|
<field name="subject" required="1"/>
|
||||||
<notebook colspan="4">
|
<notebook colspan="4">
|
||||||
<page string="Body (Text)">
|
<page string="Body (HTML)">
|
||||||
<field name="body" colspan="4" width="250" height="250" nolabel="1"/>
|
|
||||||
</page>
|
|
||||||
<page string="Body (Rich/HTML)">
|
|
||||||
<field name="body_html" colspan="4" width="250" height="250" nolabel="1"/>
|
<field name="body_html" colspan="4" width="250" height="250" nolabel="1"/>
|
||||||
<label string="Note: This is Raw HTML." colspan="4"/>
|
<label string="Note: This is Raw HTML." colspan="4"/>
|
||||||
</page>
|
</page>
|
||||||
|
|
|
@ -95,17 +95,21 @@ class mail_compose_message(osv.osv_memory):
|
||||||
else: # restore defaults
|
else: # restore defaults
|
||||||
values = self.default_get(cr, uid, fields, context=context)
|
values = self.default_get(cr, uid, fields, context=context)
|
||||||
|
|
||||||
if values.get('body_html') is not None:
|
if values.get('body_html') and not values.get('body'):
|
||||||
values['body'] = values.get('body_html')
|
values['body'] = values.get('body_html')
|
||||||
|
|
||||||
values.update(use_template=use_template, template_id=template_id)
|
values.update(use_template=use_template, template_id=template_id)
|
||||||
|
|
||||||
|
print 'returning ', values
|
||||||
|
|
||||||
return {'value': values}
|
return {'value': values}
|
||||||
|
|
||||||
def toggle_template(self, cr, uid, ids, context=None):
|
def toggle_template(self, cr, uid, ids, context=None):
|
||||||
""" hit toggle template mode button: calls onchange_use_template to
|
""" hit toggle template mode button: calls onchange_use_template to
|
||||||
emulate an on_change, then writes the value to update the form. """
|
emulate an on_change, then writes the value to update the form. """
|
||||||
for record in self.browse(cr, uid, ids, context=context):
|
for record in self.browse(cr, uid, ids, context=context):
|
||||||
onchange_res = self.onchange_use_template(cr, uid, ids, not record.use_template, context=context)['value']
|
onchange_res = self.onchange_use_template(cr, uid, ids, not record.use_template,
|
||||||
|
record.template_id, record.composition_mode, record.res_id, context=context)['value']
|
||||||
record.write(onchange_res)
|
record.write(onchange_res)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
|
@ -54,10 +54,10 @@ class mail_mail(osv.Model):
|
||||||
'auto_delete': fields.boolean('Auto Delete',
|
'auto_delete': fields.boolean('Auto Delete',
|
||||||
help="Permanently delete this email after sending it, to save space"),
|
help="Permanently delete this email after sending it, to save space"),
|
||||||
'references': fields.text('References', help='Message references, such as identifiers of previous messages', readonly=1),
|
'references': fields.text('References', help='Message references, such as identifiers of previous messages', readonly=1),
|
||||||
'email_from': fields.char('From', size=128, help='Message sender, taken from user preferences.'),
|
'email_from': fields.char('From', help='Message sender, taken from user preferences.'),
|
||||||
'email_to': fields.text('To', help='Message recipients'),
|
'email_to': fields.text('To', help='Message recipients'),
|
||||||
'email_cc': fields.char('Cc', size=256, help='Carbon copy message recipients'),
|
'email_cc': fields.char('Cc', help='Carbon copy message recipients'),
|
||||||
'reply_to':fields.char('Reply-To', size=256, help='Preferred response address for the message'),
|
'reply_to':fields.char('Reply-To', help='Preferred response address for the message'),
|
||||||
'body_html': fields.text('Rich-text Contents', help="Rich-text/HTML message"),
|
'body_html': fields.text('Rich-text Contents', help="Rich-text/HTML message"),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,11 +75,11 @@ class mail_compose_message(osv.TransientModel):
|
||||||
active_ids = context.get('active_ids')
|
active_ids = context.get('active_ids')
|
||||||
|
|
||||||
# get default values according to the composition mode
|
# get default values according to the composition mode
|
||||||
if composition_mode in ['reply']:
|
if composition_mode == 'reply':
|
||||||
vals = self.get_message_data(cr, uid, active_id, context=context)
|
vals = self.get_message_data(cr, uid, active_id, context=context)
|
||||||
elif composition_mode in ['comment'] and model and res_id:
|
elif composition_mode == 'comment' and model and res_id:
|
||||||
vals = self.get_record_data(cr, uid, model, res_id, context=context)
|
vals = self.get_record_data(cr, uid, model, res_id, context=context)
|
||||||
elif composition_mode in ['mass_mail'] and model and active_ids:
|
elif composition_mode == 'mass_mail' and model and active_ids:
|
||||||
vals = {'model': model, 'res_id': res_id, 'content_subtype': 'html'}
|
vals = {'model': model, 'res_id': res_id, 'content_subtype': 'html'}
|
||||||
else:
|
else:
|
||||||
vals = {'model': model, 'res_id': res_id}
|
vals = {'model': model, 'res_id': res_id}
|
||||||
|
|
Loading…
Reference in New Issue