Skip to content

Commit

Permalink
Merge pull request #9 from gisce/template_attachment
Browse files Browse the repository at this point in the history
Template attachments
  • Loading branch information
lcbautista authored Aug 26, 2022
2 parents 140e5f7 + 67a983c commit b596e31
Show file tree
Hide file tree
Showing 7 changed files with 1,079 additions and 559 deletions.
37 changes: 37 additions & 0 deletions poweremail_demo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,43 @@ Benvolgut/da ${object.login},
Això és un email generic de prova per les poweremail_camapign.
Atentament,
un mort de gana.
</body>
</html>
]]>
</field>
</record>

<record model="poweremail.templates" id="default_template_poweremail_2">
<field name="name">Plantilla poweremail test 2</field>
<field name="object_name" model="ir.model" search="[('model', '=', 'res.users')]"/>
<field eval="0" name="save_to_drafts"/>
<field name="model_int_name">res.users</field>
<field eval="0" name="use_filter"/>
<field name="file_name">${object.number}</field>
<field name="def_to">${object.address_invoice_id.email}</field>
<field eval="0" name="auto_email"/>
<field eval="0" name="single_email"/>
<field eval="0" name="use_sign"/>
<field name="def_subject">Factura ${object.number}</field>
<field name="template_language">mako</field>
<field eval="0" name="send_on_create"/>
<field name="lang">${object.partner_id.lang}</field>
<field name="copyvalue">${object.partner_id.lang}</field>
<field eval="0" name="send_on_write"/>
<field name="def_body_text">
<![CDATA[
<!doctype html>
<html>
<head></head>
<body>
Benvolgut/da ${object.login},
Això és un email generic de prova per les poweremail_camapign.
Atentament,
un mort de gana.
Expand Down
376 changes: 239 additions & 137 deletions poweremail_send_wizard.py

Large diffs are not rendered by default.

309 changes: 134 additions & 175 deletions poweremail_template.py

Large diffs are not rendered by default.

24 changes: 15 additions & 9 deletions poweremail_template_view.xml
Original file line number Diff line number Diff line change
Expand Up @@ -238,15 +238,21 @@
<field name="ref_ir_value" colspan="2"/>
</group>
<field name="server_action" readonly="1" />
<separator string="Attachments (Report to attach)"
colspan="4" />
<field name="file_name" colspan="2" />
<field name="report_template" colspan="2"
domain="[('model','=',model_int_name)]" />
<field name="tmpl_attachment_ids" colspan="4" nolabel="1"/>
<separator string="Log partner events"
colspan="4" />
<field name="partner_event" />
<group colspan="4">
<notebook>
<page string="Report attachments">
<separator string="Attachments (Report to attach)" colspan="4" />
<field name="file_name" colspan="2" />
<field name="report_template" colspan="2" domain="[('model','=',model_int_name)]" />
<field name="tmpl_attachment_ids" colspan="4" nolabel="1"/>
<separator string="Log partner events" colspan="4" />
<field name="partner_event" />
</page>
<page string="Attachments">
<field name="ir_attachment_ids" colspan="2" nolabel="1"/>
</page>
</notebook>
</group>
</page>
</notebook>
</form>
Expand Down
240 changes: 2 additions & 238 deletions tests/__init__.py
Original file line number Diff line number Diff line change
@@ -1,238 +1,2 @@
# coding=utf-8
from destral import testing
from destral.transaction import Transaction


class TestPoweremailTemplates(testing.OOTestCaseWithCursor):

def create_account(self, extra_vals=None):
acc_obj = self.openerp.pool.get('poweremail.core_accounts')
cursor = self.cursor
uid = self.uid

vals = {
'name': 'Test account',
'user': self.uid,
'email_id': '[email protected]',
'smtpserver': 'smtp.example.com',
'smtpport': 587,
'smtpuname': 'test',
'smtppass': 'test',
'company': 'yes'
}
if extra_vals:
vals.update(extra_vals)

acc_id = acc_obj.create(cursor, uid, vals)
return acc_id

def create_template(self, extra_vals=None):

imd_obj = self.openerp.pool.get('ir.model.data')
tmpl_obj = self.openerp.pool.get('poweremail.templates')
cursor = self.cursor
uid = self.uid
acc_id = self.create_account()

model_partner = imd_obj.get_object_reference(
cursor, uid, 'base', 'model_res_partner'
)[1]

vals = {
'name': 'Test template',
'object_name': model_partner,
'enforce_from_account': acc_id,
'template_language': 'mako',
'def_priority': '2'
}
if extra_vals:
vals.update(extra_vals)

tmpl_id = tmpl_obj.create(cursor, uid, vals)
return tmpl_id

def test_creating_email_gets_default_priority(self):

tmpl_obj = self.openerp.pool.get('poweremail.templates')
mail_obj = self.openerp.pool.get('poweremail.mailbox')
imd_obj = self.openerp.pool.get('ir.model.data')

cursor = self.cursor
uid = self.uid
partner_id = imd_obj.get_object_reference(
cursor, uid, 'base', 'res_partner_asus'
)[1]

tmpl_id = self.create_template()

template = tmpl_obj.browse(cursor, uid, tmpl_id)

mailbox_id = tmpl_obj._generate_mailbox_item_from_template(
cursor, uid, template, partner_id
)

mail = mail_obj.browse(cursor, uid, mailbox_id)
self.assertEqual(mail.priority, '2')

def test_send_wizards_gets_default_priority_from_template(self):
imd_obj = self.openerp.pool.get('ir.model.data')
send_obj = self.openerp.pool.get('poweremail.send.wizard')

cursor = self.cursor
uid = self.uid
partner_id = imd_obj.get_object_reference(
cursor, uid, 'base', 'res_partner_asus'
)[1]

tmpl_id = self.create_template()

wiz_id = send_obj.create(cursor, uid, {}, context={
'active_id': partner_id,
'active_ids': [partner_id],
'src_rec_ids': [partner_id],
'src_model': 'res.partner',
'template_id': tmpl_id
})
wiz = send_obj.browse(cursor, uid, wiz_id)
self.assertEqual(wiz.priority, '2')


class TestPoweremailMailbox(testing.OOTestCase):

def create_account(self, cursor, uid, extra_vals=None):
acc_obj = self.openerp.pool.get('poweremail.core_accounts')

vals = {
'name': 'Test account',
'user': uid,
'email_id': '[email protected]',
'smtpserver': 'smtp.example.com',
'smtpport': 587,
'smtpuname': 'test',
'smtppass': 'test',
'company': 'yes'
}
if extra_vals:
vals.update(extra_vals)

acc_id = acc_obj.create(cursor, uid, vals)
return acc_id

def create_template(self, cursor, uid, extra_vals=None):

imd_obj = self.openerp.pool.get('ir.model.data')
tmpl_obj = self.openerp.pool.get('poweremail.templates')
acc_id = False
if 'enforce_from_account' not in extra_vals:
acc_id = self.create_account(cursor, uid)

model_partner = imd_obj.get_object_reference(
cursor, uid, 'base', 'model_res_partner'
)[1]

vals = {
'name': 'Test template',
'object_name': model_partner,
'enforce_from_account': acc_id,
'template_language': 'mako',
'def_priority': '2'
}
if extra_vals:
vals.update(extra_vals)

tmpl_id = tmpl_obj.create(cursor, uid, vals)
return tmpl_id

def test_poweremail_n_mails_per_batch(self, extra_vals=None):
self.openerp.install_module('base_extended')

with Transaction().start(self.database) as txn:
cursor = txn.cursor
uid = txn.user
mail_o = self.openerp.pool.get('poweremail.mailbox')
varconf_o = self.openerp.pool.get('res.config')
imd_obj = self.openerp.pool.get('ir.model.data')
tmpl_id = self.create_template(cursor, uid)
tmpl_obj = self.openerp.pool.get('poweremail.templates')

partner_id = imd_obj.get_object_reference(
cursor, uid, 'base', 'res_partner_asus'
)[1]
template = tmpl_obj.browse(cursor, uid, tmpl_id)
for i in range(3):
mail_id = tmpl_obj._generate_mailbox_item_from_template(
cursor, uid, template, partner_id
)
mail_wv = {'folder': 'outbox', 'state': 'na'}
mail_o.write(cursor, uid, mail_id, mail_wv)

varconf_o.set(cursor, uid, 'poweremail_n_mails_per_batch', 1)
mails_per_enviar = mail_o._get_mails_to_send(cursor, uid)
self.assertEqual(len(mails_per_enviar), 1)
mails_per_enviar = mail_o._get_mails_to_send(cursor, uid, context={'limit': 2})
self.assertEqual(len(mails_per_enviar), 2)

varconf_o.set(cursor, uid, 'poweremail_n_mails_per_batch', 0)
mails_per_enviar = mail_o._get_mails_to_send(cursor, uid)
self.assertEqual(len(mails_per_enviar), 3)

def test_poweremail_n_mails_per_batch_per_account(self, extra_vals=None):
self.openerp.install_module('base_extended')

with Transaction().start(self.database) as txn:
cursor = txn.cursor
uid = txn.user
mail_o = self.openerp.pool.get('poweremail.mailbox')
varconf_o = self.openerp.pool.get('res.config')
imd_obj = self.openerp.pool.get('ir.model.data')
tmpl_obj = self.openerp.pool.get('poweremail.templates')

acc1_id = self.create_account(cursor, uid, extra_vals={'name': 'acc1', 'email_id': '[email protected]'})
acc2_id = self.create_account(cursor, uid, extra_vals={'name': 'acc2', 'email_id': '[email protected]'})
acc3_id = self.create_account(cursor, uid, extra_vals={'name': 'acc3', 'email_id': '[email protected]'})

tmpl1_id = self.create_template(cursor, uid, extra_vals={'enforce_from_account': acc1_id, 'name': 'Test template 1'})
tmpl2_id = self.create_template(cursor, uid, extra_vals={'enforce_from_account': acc2_id, 'name': 'Test template 2'})
tmpl3_id = self.create_template(cursor, uid, extra_vals={'enforce_from_account': acc3_id, 'name': 'Test template 3'})

partner_id = imd_obj.get_object_reference(
cursor, uid, 'base', 'res_partner_asus'
)[1]
mails_per_acc = {'acc1': set(), 'acc2': set(), 'acc3': set()}
for tmpl_id in (tmpl1_id, tmpl2_id, tmpl3_id):
template = tmpl_obj.browse(cursor, uid, tmpl_id)
for i in range(3):
mail_id = tmpl_obj._generate_mailbox_item_from_template(
cursor, uid, template, partner_id
)
mail_wv = {'folder': 'outbox', 'state': 'na'}
mail_o.write(cursor, uid, mail_id, mail_wv)
mails_per_acc[template.enforce_from_account.name].add(mail_id)

varconf_o.set(
cursor, uid, 'poweremail_n_mails_per_batch_per_account',
"{'acc1': 1, 'acc2': 2}"
)
mails_per_enviar = mail_o._get_mails_to_send(cursor, uid)
self.assertEqual(len(mails_per_enviar), 6) # 1 + 2 + 3
self.assertEqual(len(set(mails_per_enviar) - mails_per_acc['acc1']), 5)
self.assertEqual(len(set(mails_per_enviar) - mails_per_acc['acc2']), 4)
self.assertEqual(len(set(mails_per_enviar) - mails_per_acc['acc3']), 3)
mails_per_enviar = mail_o._get_mails_to_send(cursor, uid, context={'limit': 2})
self.assertEqual(len(mails_per_enviar), 2)

varconf_o.set(
cursor, uid, 'poweremail_n_mails_per_batch_per_account',
"{'acc1': 1, 'acc2': 1, 'acc3': 1}"
)
mails_per_enviar = mail_o._get_mails_to_send(cursor, uid)
self.assertEqual(len(mails_per_enviar), 3)
for acc, mails in mails_per_acc.items():
self.assertEqual(len(set(mails_per_enviar) - mails), 2)

varconf_o.set(
cursor, uid, 'poweremail_n_mails_per_batch_per_account',
"{}"
)
mails_per_enviar = mail_o._get_mails_to_send(cursor, uid)
self.assertEqual(len(mails_per_enviar), 9)
from test_poweremail_mailbox import *
from test_poweremail_templates import *
Loading

0 comments on commit b596e31

Please sign in to comment.