diff --git a/addons/survey/survey.py b/addons/survey/survey.py
index a885f4f5d4a..9f1f0bca6e3 100644
--- a/addons/survey/survey.py
+++ b/addons/survey/survey.py
@@ -153,7 +153,7 @@ class survey(osv.osv):
'view_mode': 'form',
'res_model': 'survey.question.wiz',
'type': 'ir.actions.act_window',
- 'target': 'new',
+ 'target': 'inline',
'name': self.browse(cr, uid, id, context=context).title,
'context': context
}
@@ -200,7 +200,7 @@ class survey(osv.osv):
'default_use_template': bool(template_id),
'default_template_id': template_id,
'default_composition_mode': 'comment',
- 'mark_invoice_as_sent': True,
+ 'survey_state': survey_browse.state
})
return {
'type': 'ir.actions.act_window',
diff --git a/addons/survey/wizard/survey_email_compose_message.py b/addons/survey/wizard/survey_email_compose_message.py
index 75c29e9b604..a0e3fc9d4ca 100644
--- a/addons/survey/wizard/survey_email_compose_message.py
+++ b/addons/survey/wizard/survey_email_compose_message.py
@@ -20,12 +20,15 @@
##############################################################################
import re
+from urllib import urlencode
+from urlparse import urljoin
from openerp.osv import osv
from openerp.osv import fields
from datetime import datetime
from openerp.tools.translate import _
import uuid
+
class survey_mail_compose_message(osv.TransientModel):
_name = 'survey.mail.compose.message'
_inherit = 'mail.compose.message'
@@ -40,7 +43,7 @@ class survey_mail_compose_message(osv.TransientModel):
'survey_mail_compose_message_ir_attachments_rel',
'wizard_id', 'attachment_id', 'Attachments'),
'multi_email': fields.text(string='List of emails', help="This list of emails of recipients will not converted in partner. Emails separated by commas, semicolons or newline."),
- 'date_deadline': fields.date(string="Deadline date", help=""),
+ 'date_deadline': fields.date(string="Deadline date", help="Deadline to complete the survey. If the field is empty, the invitation is still valid."),
}
#------------------------------------------------------
# Wizard validation and send
@@ -55,15 +58,14 @@ class survey_mail_compose_message(osv.TransientModel):
emails_split = re.compile(r"[;,\n\r]+")
survey_response_obj = self.pool.get('survey.response')
partner_obj = self.pool.get('res.partner')
- user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
+ mail_mail_obj = self.pool.get('mail.mail')
+ mail_message_obj = self.pool.get('mail.message')
+ base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url')
- def send_mail_survey(wizard, token, partner_id, email):
+ def create_token_and_send_mail_survey(wizard, token, partner_id, email):
""" Create one mail by recipients and replace __URL__ by link with identification token
"""
- if not partner_id:
- partner_id = partner_obj.search(cr, uid, [('email', '=', email)], context=context)
- partner_id = partner_id and partner_id[0] or None
-
+ # create response with token
survey_response_obj.create(cr, uid, {
'date_deadline': wizard.date_deadline,
'survey_id': wizard.res_id,
@@ -75,37 +77,43 @@ class survey_mail_compose_message(osv.TransientModel):
'email': email,
})
- post_values = {
- 'subject': wizard.subject,
- 'body_html': wizard.body.replace("__URL__", "#active_id=%s¶ms=%s" % (wizard.res_id, token)),
- 'parent_id': None,
- 'partner_ids': partner_id and [partner_id] or None,
- 'attachments': attachments,
- 'email_from': wizard.email_from or user.partner_id.email or None,
- 'email_to': email,
- 'notification': False,
+ # create url
+ query = {
+ 'db': cr.dbname
}
- print ""
- print post_values
- print ""
-
-
- # # post the message
- # active_model_pool.message_post(cr, uid, [res_id], type='comment', subtype='mt_comment', context=context, **post_values)
+ fragment = {
+ 'active_id': wizard.res_id,
+ 'params': token,
+ 'action': 'survey.action_answer_survey',
+ }
+ url = urljoin(base_url, "?%s#%s" % (urlencode(query), urlencode(fragment)))
+ # post the message
+ values = {
+ 'model': 'survey',
+ 'res_id': wizard.res_id or False,
+ 'subject': wizard.subject,
+ 'body': wizard.body.replace("__URL__", url),
+ 'parent_id': None,
+ 'partner_ids': partner_id and [(4, partner_id)] or None,
+ 'notified_partner_ids': partner_id and [(4, partner_id)] or None,
+ 'attachment_ids': wizard.attachment_ids or None,
+ 'email_from': wizard.email_from or None,
+ 'email_to': email,
+ }
+ mail_obj = partner_id and mail_message_obj or mail_mail_obj
+ mail_id = mail_obj.create(cr, uid, values, context=context)
+ if mail_obj == mail_mail_obj:
+ mail_obj.send(cr, uid, [mail_id], context=context)
for wizard in self.browse(cr, uid, ids, context=context):
if wizard.model == 'survey':
-
- # default values, according to the wizard options
- attachments = [(attach.datas_fname or attach.name, base64.b64decode(attach.datas)) for attach in wizard.attachment_ids]
-
# check if __URL__ is in the text
if wizard.body.find("__URL__") < 0:
- raise osv.except_osv(_('Warning!'),_("The content of the text don't contain '__URL__'. \
+ raise osv.except_osv(_('Warning!'), _("The content of the text don't contain '__URL__'. \
__URL__ is automaticaly converted into the special url of the survey."))
- emails = list(set(emails_split.split( wizard.multi_email or "")) - set([partner.email for partner in wizard.partner_ids]))
+ emails = list(set(emails_split.split(wizard.multi_email or "")) - set([partner.email for partner in wizard.partner_ids]))
# quick check of email list
emails_checked = []
@@ -113,17 +121,17 @@ class survey_mail_compose_message(osv.TransientModel):
email = email.strip()
if email:
if not re.search(r"^[^@]+@[^@]+$", email):
- raise osv.except_osv(_('Warning!'),_("An email address is incorrect: '%s'" % email))
+ raise osv.except_osv(_('Warning!'), _("An email address is incorrect: '%s'" % email))
else:
emails_checked.append(email)
if not len(emails_checked) and not len(wizard.partner_ids):
- raise osv.except_osv(_('Warning!'),_("Please enter at least one recipient."))
+ raise osv.except_osv(_('Warning!'), _("Please enter at least one recipient."))
for email in emails_checked:
- send_mail_survey(wizard, uuid.uuid4(), None, email)
+ partner_id = partner_obj.search(cr, uid, [('email', '=', email)], context=context)
+ partner_id = partner_id and partner_id[0] or None
+ create_token_and_send_mail_survey(wizard, uuid.uuid4(), partner_id, email)
for partner in wizard.partner_ids:
- send_mail_survey(wizard, uuid.uuid4(), partner.id, partner.email)
+ create_token_and_send_mail_survey(wizard, uuid.uuid4(), partner.id, partner.email)
- return None
return {'type': 'ir.actions.act_window_close'}
-
diff --git a/addons/survey/wizard/survey_email_compose_message.xml b/addons/survey/wizard/survey_email_compose_message.xml
index ca33b28968c..4a8f11aebe2 100644
--- a/addons/survey/wizard/survey_email_compose_message.xml
+++ b/addons/survey/wizard/survey_email_compose_message.xml
@@ -35,7 +35,7 @@
-
+