+ class="oe_inline" placeholder="Choose mailing lists"
+ on_change="on_change_contact_list_ids(mailing_model, contact_list_ids, context)"/>
+
@@ -293,12 +308,11 @@
-
-
+
+
diff --git a/addons/mass_mailing/wizard/mail_compose_message.py b/addons/mass_mailing/wizard/mail_compose_message.py
index 792f1c346e3..97620632a73 100644
--- a/addons/mass_mailing/wizard/mail_compose_message.py
+++ b/addons/mass_mailing/wizard/mail_compose_message.py
@@ -19,6 +19,7 @@
#
##############################################################################
+from openerp import tools
from openerp.osv import osv, fields
@@ -29,9 +30,15 @@ class MailComposeMessage(osv.TransientModel):
_columns = {
'mass_mailing_campaign_id': fields.many2one(
- 'mail.mass_mailing.campaign', 'Mass mailing campaign',
+ 'mail.mass_mailing.campaign', 'Mass Mailing Campaign',
+ ),
+ 'mass_mailing_id': fields.many2one(
+ 'mail.mass_mailing', 'Mass Mailing'
),
'mass_mailing_name': fields.char('Mass Mailing'),
+ 'mailing_list_ids': fields.many2many(
+ 'mail.mass_mailing.list', string='Mailing List'
+ ),
}
def get_mail_values(self, cr, uid, wizard, res_ids, context=None):
@@ -40,27 +47,44 @@ class MailComposeMessage(osv.TransientModel):
email mass mailing. """
res = super(MailComposeMessage, self).get_mail_values(cr, uid, wizard, res_ids, context=context)
# use only for allowed models in mass mailing
- if wizard.composition_mode == 'mass_mail' and wizard.mass_mailing_name and \
- wizard.model in [item[0] for item in self.pool['mail.mass_mailing']._get_mailing_model()]:
- list_id = self.pool['mail.mass_mailing.list'].create(
- cr, uid, {
- 'name': wizard.mass_mailing_name,
- 'model': wizard.model,
- 'domain': wizard.active_domain,
- }, context=context)
- mass_mailing_id = self.pool['mail.mass_mailing'].create(
- cr, uid, {
- 'mass_mailing_campaign_id': wizard.mass_mailing_campaign_id and wizard.mass_mailing_campaign_id.id or False,
- 'name': wizard.mass_mailing_name,
- 'template_id': wizard.template_id and wizard.template_id.id or False,
- 'state': 'done',
- 'mailing_type': wizard.model,
- 'contact_list_ids': [(4, list_id)],
- }, context=context)
+ if wizard.composition_mode == 'mass_mail' and \
+ (wizard.mass_mailing_name or wizard.mass_mailing_id) and \
+ wizard.model in [item[0] for item in self.pool['mail.mass_mailing']._get_mailing_model(cr, uid, context=context)]:
+ if wizard.mailing_list_ids:
+ list_ids = [l.id for l in wizard.mailing_list_ids]
+ if not list_ids:
+ list_ids = [self.pool['mail.mass_mailing.list'].create(
+ cr, uid, {
+ 'name': wizard.mass_mailing_name,
+ 'model': wizard.model,
+ 'domain': wizard.active_domain,
+ }, context=context)]
+ mass_mailing = wizard.mass_mailing_id
+ if not mass_mailing:
+ mass_mailing_id = self.pool['mail.mass_mailing'].create(
+ cr, uid, {
+ 'mass_mailing_campaign_id': wizard.mass_mailing_campaign_id and wizard.mass_mailing_campaign_id.id or False,
+ 'name': wizard.mass_mailing_name,
+ 'template_id': wizard.template_id and wizard.template_id.id or False,
+ 'state': 'done',
+ 'mailing_type': wizard.model,
+ 'contact_list_ids': [(4, list_id) for list_id in list_ids],
+ }, context=context)
+ mass_mailing = self.pool['mail.mass_mailing'].browse(cr, uid, mass_mailing_id, context=context)
+ recipient_values = self.pool['mail.mass_mailing'].get_recipients_data(cr, uid, mass_mailing, res_ids, context=context)
for res_id in res_ids:
+ mail_values = res[res_id]
+ recipient = recipient_values[res_id]
+ unsubscribe_url = self.pool['mail.mass_mailing'].get_unsubscribe_url(cr, uid, mass_mailing.id, res_id, recipient['email'], context=context)
+ if unsubscribe_url:
+ mail_values['body_html'] = tools.append_content_to_html(mail_values['body_html'], unsubscribe_url, plaintext=False, container_tag='p')
+ mail_values.update({
+ 'email_to': '"%s" <%s>' % (recipient['name'], recipient['email'])
+ })
+ recipient = recipient_values[res_id]
res[res_id]['statistics_ids'] = [(0, 0, {
'model': wizard.model,
'res_id': res_id,
- 'mass_mailing_id': mass_mailing_id,
+ 'mass_mailing_id': mass_mailing.id,
})]
return res
diff --git a/addons/website_mail/controllers/email_designer.py b/addons/website_mail/controllers/email_designer.py
index fc10abccf2a..e44782227b4 100644
--- a/addons/website_mail/controllers/email_designer.py
+++ b/addons/website_mail/controllers/email_designer.py
@@ -7,12 +7,21 @@ from openerp.addons.web.http import request
class WebsiteEmailDesigner(http.Controller):
- @http.route('/website_mail/email_designer/
', type='http', auth="user", website=True, multilang=True)
- def index(self, template, **kw):
+ @http.route('/website_mail/email_designer', type='http', auth="user", website=True, multilang=True)
+ def index(self, model=None, res_id=None, **kw):
+ if not model or not model in request.registry or not res_id:
+ return request.redirect('/')
+ if not 'body' in request.registry[model]._all_columns and not 'body_html' in request.registry[model]._all_columns:
+ return request.redirect('/')
+ obj_ids = request.registry[model].exists(request.cr, request.uid, [res_id], context=request.context)
+ if not obj_ids:
+ return request.redirect('/')
values = {
- 'template': template,
+ 'object': request.registry[model].browse(request.cr, request.uid, obj_ids[0], context=request.context),
+ 'model': request.registry[model],
+ 'model_name': model,
+ 'res_id': res_id,
}
- print template
return request.website.render("website_mail.designer_index", values)
@http.route(['/website_mail/snippets'], type='json', auth="user", website=True)
diff --git a/addons/website_mail/views/website_email_designer.xml b/addons/website_mail/views/website_email_designer.xml
index dc2014c9310..54d9c3fc78e 100644
--- a/addons/website_mail/views/website_email_designer.xml
+++ b/addons/website_mail/views/website_email_designer.xml
@@ -13,38 +13,38 @@