summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--[-rwxr-xr-x]addons/email_template/__init__.py0
-rw-r--r--[-rwxr-xr-x]addons/email_template/__openerp__.py0
-rw-r--r--[-rwxr-xr-x]addons/email_template/email_template.py30
-rw-r--r--[-rwxr-xr-x]addons/email_template/email_template_account.py0
-rw-r--r--[-rwxr-xr-x]addons/email_template/email_template_account_view.xml0
-rw-r--r--[-rwxr-xr-x]addons/email_template/email_template_engines.py0
-rw-r--r--[-rwxr-xr-x]addons/email_template/email_template_mailbox.py4
-rw-r--r--[-rwxr-xr-x]addons/email_template/email_template_mailbox_view.xml0
-rw-r--r--[-rwxr-xr-x]addons/email_template/email_template_scheduler_data.xml0
-rw-r--r--[-rwxr-xr-x]addons/email_template/email_template_view.xml0
-rw-r--r--[-rwxr-xr-x]addons/email_template/email_template_workflow.xml0
-rw-r--r--[-rwxr-xr-x]addons/email_template/html2text.py0
-rw-r--r--[-rwxr-xr-x]addons/marketing_campaign/__init__.py0
-rw-r--r--[-rwxr-xr-x]addons/marketing_campaign/__openerp__.py0
-rw-r--r--[-rwxr-xr-x]addons/marketing_campaign/marketing_campaign.py96
-rw-r--r--[-rwxr-xr-x]addons/marketing_campaign/marketing_campaign_view.xml10
16 files changed, 83 insertions, 57 deletions
diff --git a/addons/email_template/__init__.py b/addons/email_template/__init__.py
index c959f7204da..c959f7204da 100755..100644
--- a/addons/email_template/__init__.py
+++ b/addons/email_template/__init__.py
diff --git a/addons/email_template/__openerp__.py b/addons/email_template/__openerp__.py
index 9c5f7bb5c70..9c5f7bb5c70 100755..100644
--- a/addons/email_template/__openerp__.py
+++ b/addons/email_template/__openerp__.py
diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py
index 1cef7aac6e3..2d34a095ff5 100755..100644
--- a/addons/email_template/email_template.py
+++ b/addons/email_template/email_template.py
@@ -17,10 +17,10 @@ try:
TEMPLATE_ENGINES.append(('mako', 'Mako Templates'))
except:
LOGGER.notifyChannel(
- _("Email Template"),
- netsvc.LOG_ERROR,
- _("Mako templates not installed")
- )
+ _("Email Template"),
+ netsvc.LOG_WARNING,
+ _("Mako templates not installed")
+ )
try:
from django.template import Context, Template as DjangoTemplate
#Workaround for bug:
@@ -31,10 +31,10 @@ try:
TEMPLATE_ENGINES.append(('django', 'Django Template'))
except:
LOGGER.notifyChannel(
- _("Email Template"),
- netsvc.LOG_ERROR,
- _("Django templates not installed")
- )
+ _("Email Template"),
+ netsvc.LOG_WARNING,
+ _("Django templates not installed")
+ )
import email_template_engines
import tools
@@ -468,7 +468,7 @@ class email_template(osv.osv):
context)
return True
- def generate_mailbox_item_from_template(self,
+ def _generate_mailbox_item_from_template(self,
cursor,
user,
template,
@@ -559,6 +559,8 @@ class email_template(osv.osv):
'folder':'drafts',
'mail_type':'multipart/alternative'
}
+ if not mailbox_values['account_id']:
+ raise Exception("Unable to send the mail. No account linked to the template.")
#Use signatures if allowed
if template.use_sign:
sign = self.pool.get('res.users').read(cursor,
@@ -570,13 +572,17 @@ class email_template(osv.osv):
mailbox_values['body_text'] += sign
if mailbox_values['body_html']:
mailbox_values['body_html'] += sign
+ print 'Creating', mailbox_values
mailbox_id = self.pool.get('email_template.mailbox').create(
cursor,
user,
mailbox_values,
context)
+
+ print 'Sending', mailbox_id
+ self.pool.get('email_template.mailbox').send_this_mail(cursor, user, [mailbox_id], context)
return mailbox_id
-
+
def generate_mail(self,
cursor,
user,
@@ -588,6 +594,7 @@ class email_template(osv.osv):
template = self.browse(cursor, user, template_id, context=context)
if not template:
raise Exception("The requested template could not be loaded")
+ print 'loaded', record_ids
for record_id in record_ids:
mailbox_id = self._generate_mailbox_item_from_template(
cursor,
@@ -595,6 +602,7 @@ class email_template(osv.osv):
template,
record_id,
context)
+ print 'loaded'
mail = self.pool.get('email_template.mailbox').browse(
cursor,
user,
@@ -616,7 +624,7 @@ class email_template(osv.osv):
mailbox_id,
{'folder':'outbox'},
context=context
- )
+ )
return True
email_template()
diff --git a/addons/email_template/email_template_account.py b/addons/email_template/email_template_account.py
index 0bcf3c3d099..0bcf3c3d099 100755..100644
--- a/addons/email_template/email_template_account.py
+++ b/addons/email_template/email_template_account.py
diff --git a/addons/email_template/email_template_account_view.xml b/addons/email_template/email_template_account_view.xml
index 7a0bc84538f..7a0bc84538f 100755..100644
--- a/addons/email_template/email_template_account_view.xml
+++ b/addons/email_template/email_template_account_view.xml
diff --git a/addons/email_template/email_template_engines.py b/addons/email_template/email_template_engines.py
index 2fc58310e9b..2fc58310e9b 100755..100644
--- a/addons/email_template/email_template_engines.py
+++ b/addons/email_template/email_template_engines.py
diff --git a/addons/email_template/email_template_mailbox.py b/addons/email_template/email_template_mailbox.py
index 45eef77729e..fe9ca334d21 100755..100644
--- a/addons/email_template/email_template_mailbox.py
+++ b/addons/email_template/email_template_mailbox.py
@@ -41,9 +41,7 @@ class email_template_mailbox(osv.osv):
return True
def send_this_mail(self, cr, uid, ids=None, context=None):
- if ids is None:
- ids = []
- for id in ids:
+ for id in (ids or []):
try:
account_obj = self.pool.get('email_template.account')
values = self.read(cr, uid, id, [], context)
diff --git a/addons/email_template/email_template_mailbox_view.xml b/addons/email_template/email_template_mailbox_view.xml
index c521320bf3a..c521320bf3a 100755..100644
--- a/addons/email_template/email_template_mailbox_view.xml
+++ b/addons/email_template/email_template_mailbox_view.xml
diff --git a/addons/email_template/email_template_scheduler_data.xml b/addons/email_template/email_template_scheduler_data.xml
index 30d69f99398..30d69f99398 100755..100644
--- a/addons/email_template/email_template_scheduler_data.xml
+++ b/addons/email_template/email_template_scheduler_data.xml
diff --git a/addons/email_template/email_template_view.xml b/addons/email_template/email_template_view.xml
index 5158d7a5544..5158d7a5544 100755..100644
--- a/addons/email_template/email_template_view.xml
+++ b/addons/email_template/email_template_view.xml
diff --git a/addons/email_template/email_template_workflow.xml b/addons/email_template/email_template_workflow.xml
index 4d3176f0ae0..4d3176f0ae0 100755..100644
--- a/addons/email_template/email_template_workflow.xml
+++ b/addons/email_template/email_template_workflow.xml
diff --git a/addons/email_template/html2text.py b/addons/email_template/html2text.py
index f8be00adf0f..f8be00adf0f 100755..100644
--- a/addons/email_template/html2text.py
+++ b/addons/email_template/html2text.py
diff --git a/addons/marketing_campaign/__init__.py b/addons/marketing_campaign/__init__.py
index d37d8604380..d37d8604380 100755..100644
--- a/addons/marketing_campaign/__init__.py
+++ b/addons/marketing_campaign/__init__.py
diff --git a/addons/marketing_campaign/__openerp__.py b/addons/marketing_campaign/__openerp__.py
index 992731c1332..992731c1332 100755..100644
--- a/addons/marketing_campaign/__openerp__.py
+++ b/addons/marketing_campaign/__openerp__.py
diff --git a/addons/marketing_campaign/marketing_campaign.py b/addons/marketing_campaign/marketing_campaign.py
index 4773a190a41..70cd541ef98 100755..100644
--- a/addons/marketing_campaign/marketing_campaign.py
+++ b/addons/marketing_campaign/marketing_campaign.py
@@ -242,7 +242,7 @@ class marketing_campaign_activity(osv.osv):
self._actions = {'paper' : self.process_wi_report,
'email' : self.process_wi_email,
'server_action' : self.process_wi_action,
- }
+ }
return super(marketing_campaign_activity, self).__init__(*args)
def search(self, cr, uid, args, offset=0, limit=None, order=None,
@@ -259,7 +259,7 @@ class marketing_campaign_activity(osv.osv):
return super(marketing_campaign_activity, self).search(cr, uid, args,
offset, limit, order, context, count)
- def process_wi_report(self, cr, uid, activity, workitem):
+ def process_wi_report(self, cr, uid, activity, workitem, context={}):
service = netsvc.LocalService('report.%s'%activity.report_id.report_name)
(report_data, format) = service.create(cr, uid, [], {}, {})
attach_vals = {
@@ -274,46 +274,58 @@ class marketing_campaign_activity(osv.osv):
self.pool.get('ir.attachment').create(cr, uid, attach_vals)
return True
- def process_wi_email(self, cr, uid, activity, workitem):
- template = activity.email_template_id
- accounts = template.enforce_from_account
- if not template.enforce_from_account:
- return {'error_msg' : "There is no account defined for the email"}
- if not workitem.partner_id.email:
- return {'error_msg' : "There is no email defined for the partner"}
- vals = {
- 'email_from': tools.ustr(accounts.name) + "<" + tools.ustr(accounts.email_id) + ">",
- 'email_to': workitem.partner_id.email,
- 'subject': template.def_subject,
- 'body_text': template.def_body_text,
- 'body_html': template.def_body_html,
- 'account_id':accounts.id,
- 'state':'na',
- 'mail_type':'multipart/alternative' #Options:'multipart/mixed','multipart/alternative','text/plain','text/html'
- }
-# if accounts.use_sign:
-# signature = self.pool.get('res.users').read(cr, uid, uid, ['signature'], context)['signature']
-# if signature:
-# vals['pem_body_text'] = tools.ustr(vals['pem_body_text'] or '') + signature
-# vals['pem_body_html'] = tools.ustr(vals['pem_body_html'] or '') + signature
-
- #Create partly the mail and later update attachments
- mail_id = self.pool.get('email_template.mailbox').create(cr, uid, vals, context)
+ def process_wi_email(self, cr, uid, activity, workitem, context=None):
+ print 'Sending Email Init', activity.name
+ return self.pool.get('email.template').generate_mail(cr, uid, activity.email_template_id.id, [workitem.res_id], context=context)
+
+ #if not template.enforce_from_account:
+ # self.pool.get('marketing.campaign.workitem').write(cr, uid, [workitem.id], {
+ # 'error_msg': 'There is no account defined for the email',
+ # 'state': 'exception'
+ # })
+ # return False
+ #if not workitem.partner_id.email:
+ # self.pool.get('marketing.campaign.workitem').write(cr, uid, [workitem.id], {
+ # 'error_msg': "There is no email defined for the partner",
+ # 'state': 'exception'
+ # })
+ # return False
+ #vals = {
+ # 'email_from': tools.ustr(accounts.name) + "<" + tools.ustr(accounts.email_id) + ">",
+ # 'email_to': template.email_to,
+ # 'email_cc': template.email_cc,
+ # 'email_bcc': template.email_bcc,
+ # 'subject': template.def_subject,
+ # 'body_text': template.def_body_text,
+ # 'body_html': template.def_body_html,
+ # 'account_id': accounts.id,
+ # 'state':'na',
+ # 'mail_type':'multipart/alternative' #Options:'multipart/mixed','multipart/alternative','text/plain','text/html'
+ #}
+# # if accounts.use_sign:
+# # signature = self.pool.get('res.users').read(cr, uid, uid, ['signature'], context)['signature']
+# # if signature:
+# # vals['pem_body_text'] = tools.ustr(vals['pem_body_text'] or '') + signature
+# # vals['pem_body_html'] = tools.ustr(vals['pem_body_html'] or '') + signature
+
+ ##Create partly the mail and later update attachments
+ #print 'Sending Email', vals
+ #mail_id = self.pool.get('email_template.mailbox').create(cr, uid, vals, context)
return True
-
- def process_wi_action(self, cr, uid, activity, workitem):
+
+ def process_wi_action(self, cr, uid, activity, workitem, context={}):
context = {}
server_obj = self.pool.get('ir.actions.server')
- server_obj.run(cr, uid, [activity.server_action_id.id], context)
+ server_obj.run(cr, uid, [activity.server_action_id.id], context)
return True
-
def process(self, cr, uid, act_id, wi_id, context={}):
activity = self.browse(cr, uid, act_id)
+ print 'Process', activity.name
workitem_obj = self.pool.get('marketing.campaign.workitem')
- workitem = workitem_obj.browse(cr, uid, wi_id)
- self._actions[activity.type](cr, uid, activity, workitem)
- return True
+ workitem = workitem_obj.browse(cr, uid, wi_id, context=context)
+ print 'WI', workitem, activity.type
+ return self._actions[activity.type](cr, uid, activity, workitem, context)
marketing_campaign_activity()
@@ -419,14 +431,18 @@ class marketing_campaign_workitem(osv.osv):
}
expr = eval(str(wi.activity_id.condition), eval_context)
if expr:
- try :
+ try:
+ result = True
if wi.campaign_id.mode in ('manual','active'):
- self.pool.get('marketing.campaign.activity').process(
+ result = self.pool.get('marketing.campaign.activity').process(
cr, uid, wi.activity_id.id, wi.id, context)
- self.write(cr, uid, wi.id, {'state': 'done'})
- self.process_chain(cr, uid, wi.id, context)
+ if result:
+ self.write(cr, uid, wi.id, {'state': 'done'})
+ self.process_chain(cr, uid, wi.id, context)
+ else:
+ self.write(cr, uid, wi.id, {'state': 'exception'})
except Exception,e:
- self.write(cr, uid, wi.id, {'state': 'exception'})
+ self.write(cr, uid, wi.id, {'state': 'exception', 'error_msg': str(e)})
else :
self.write(cr, uid, wi.id, {'state': 'cancelled'})
@@ -444,7 +460,7 @@ class marketing_campaign_workitem(osv.osv):
workitem_ids = self.search(cr, uid, [('state', '=', 'todo')])
else:
# manual states are not processed automatically
- pass
+ workitem_ids = []
if workitem_ids:
self.process(cr, uid, workitem_ids, context)
diff --git a/addons/marketing_campaign/marketing_campaign_view.xml b/addons/marketing_campaign/marketing_campaign_view.xml
index ea25e0d3163..c606f7500e0 100755..100644
--- a/addons/marketing_campaign/marketing_campaign_view.xml
+++ b/addons/marketing_campaign/marketing_campaign_view.xml
@@ -182,15 +182,15 @@
</group>
<group colspan="2" col="2">
<separator string="Synchronization" colspan="2"/>
- <field name="sync_last_date"/>
<field name="sync_mode" required="True"/>
+ <field name="sync_last_date"/>
<label string="" colspan="1"/>
<button string="Synchronize" states="running" name="synchroniz" icon="gtk-apply" type="object"/>
</group>
<group colspan="2" col="2">
<separator string="Dates" colspan="2"/>
- <field name="date_run" attrs="{'readonly':[('date_run','!=',False),('state','=','running')]}"/>
- <field name="date_done"/>
+ <field name="date_run" readonly="1"/>
+ <field name="date_done" readonly="1"/>
</group>
<separator string="Status" colspan="4"/>
<group col="10" colspan="4">
@@ -397,6 +397,10 @@
<button string="Preview" states="todo" name="preview" icon="gtk-apply" type="object"/>
</group>
</group>
+ <group colspan="4" col="4" attrs="{'invisible':[('state','!=','exception')]}">
+ <separator string="Error Message" colspan="4"/>
+ <field name="error_msg" nolabel="1" colspan="4"/>
+ </group>
<separator string="Status" colspan="4"/>
<group colspan="4" col="11">
<field name="state" nolabel="1" readonly="True" select="1"/>