Skip to content

Commit 77f2769

Browse files
authored
Merge pull request #32 from gisce/resend_mails
Nuevo asistente para reenviar los correos que ya se hayan enviado
2 parents 3020767 + 7c1d573 commit 77f2769

File tree

6 files changed

+162
-2
lines changed

6 files changed

+162
-2
lines changed

poweremail_campaign/__terp__.py

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
],
1616
"update_xml": [
1717
"wizard/wizard_poweremail_campaign.xml",
18+
"wizard/wizard_resend_mails_view.xml",
1819
"poweremail_campaign_view.xml",
1920
"poweremail_campaign_line_view.xml",
2021
"security/ir.model.access.csv",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# -*- coding: utf-8 -*-
2+
import logging
3+
import pooler
4+
from oopgrade.oopgrade import load_data, load_access_rules_from_model_name
5+
6+
7+
def up(cursor, installed_version):
8+
if not installed_version:
9+
return
10+
11+
logger = logging.getLogger('openerp.migration')
12+
13+
logger.info("Creating pooler")
14+
pool = pooler.get_pool(cursor.dbname)
15+
16+
models = [
17+
"wizard.resend.mails"
18+
]
19+
20+
for model in models:
21+
# Crear les diferents taules
22+
logger.info("Creating table: {}".format(model))
23+
pool.get(model)._auto_init(cursor, context={'module': 'poweremail_campaign'})
24+
logger.info("Table created succesfully.")
25+
26+
# Indiquem les vistes que volem carregar
27+
views = [
28+
"wizard/wizard_resend_mails_view.xml"
29+
]
30+
31+
for view in views:
32+
# Crear les diferents vistes
33+
logger.info("Updating XML {}".format(view))
34+
load_data(cursor, 'poweremail_campaign', view, idref=None, mode='update')
35+
logger.info("XMLs succesfully updatd.")
36+
37+
load_access_rules_from_model_name(
38+
cursor, 'poweremail_campaign', [
39+
'model_wizard_resend_mails'
40+
], mode='init'
41+
)
42+
43+
logger.info('Migration successful.')
44+
45+
46+
def down(cursor, installed_version):
47+
pass
48+
49+
50+
migrate = up

poweremail_campaign/security/ir.model.access.csv

+4-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,7 @@
77
"access_poweremail_campaign_line_u","poweremail.campaign.line","model_poweremail_campaign_line","poweremail.res_groups_pemanager",1,1,1,1
88
"access_wizard_poweremail_campaign_r","wizard.poweremail.campaign","model_wizard_poweremail_campaign","poweremail.res_groups_peuserse",1,0,0,0
99
"access_wizard_poweremail_campaign_w","wizard.poweremail.campaign","model_wizard_poweremail_campaign","poweremail.res_groups_peusersi",1,1,1,0
10-
"access_wizard_poweremail_campaign_u","wizard.poweremail.campaign","model_wizard_poweremail_campaign","poweremail.res_groups_pemanager",1,1,1,1
10+
"access_wizard_poweremail_campaign_u","wizard.poweremail.campaign","model_wizard_poweremail_campaign","poweremail.res_groups_pemanager",1,1,1,1
11+
"access_wizard_resend_mails_r","wizard.resend.mails","model_wizard_resend_mails","poweremail.res_groups_peuserse",1,0,0,0
12+
"access_wizard_resend_mails_w","wizard.resend.mails","model_wizard_resend_mails","poweremail.res_groups_peusersi",1,1,1,0
13+
"access_wizard_resend_mails_u","wizard.resend.mails","model_wizard_resend_mails","poweremail.res_groups_pemanager",1,1,1,1
+2-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
import wizard_poweremail_campaign
1+
import wizard_poweremail_campaign
2+
import wizard_resend_mails
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# -*- coding: utf-8 -*-
2+
from osv import osv, fields
3+
4+
5+
class WizardResendMails(osv.osv_memory):
6+
7+
_name = 'wizard.resend.mails'
8+
9+
def send_mails(self, cursor, uid, ids, context=None):
10+
if context is None:
11+
context = {}
12+
13+
# Aquest mètode el que fa és posar els correus un altre cop
14+
# a la carpeta de outbox, d'aquesta forma els correus ja es
15+
# tornaran a enviar automàticament.
16+
pw_mail_obj = self.pool.get('poweremail.mailbox')
17+
pw_line_obj = self.pool.get('poweremail.campaign.line')
18+
19+
lines_ids = self.read(cursor, uid, ids, ['lines_ids'])[0]['lines_ids']
20+
mail_ids = [x['mail_id'][0] for x in pw_line_obj.read(cursor, uid, lines_ids, ['mail_id'])]
21+
pw_mail_obj.write(cursor, uid, mail_ids, {'folder': 'outbox'})
22+
23+
return {}
24+
25+
def onchange_domain(self, cursor, uid, ids, line_ids, context=None):
26+
if context is None:
27+
context = {}
28+
29+
pw_line_obj = self.pool.get('poweremail.campaign.line')
30+
31+
res = {'domain': {}}
32+
pw_camp_ids = context.get('active_ids', [])
33+
pw_line_ids = pw_line_obj.search(cursor, uid, [
34+
('campaign_id', 'in', pw_camp_ids),
35+
('state', '=', 'sent')
36+
])
37+
38+
res['domain'].update(
39+
{'lines_ids': [('id', 'in', pw_line_ids)]}
40+
)
41+
42+
return res
43+
44+
_columns = {
45+
'state': fields.char('State', size=10),
46+
'lines_ids': fields.many2many(
47+
'poweremail.campaign.line',
48+
'poweremail_lines_on_campaign',
49+
'wizard_id', 'line_id',
50+
'Poweremails Campaign Lines'
51+
),
52+
}
53+
54+
_defaults = {
55+
'state': lambda *a: 'init',
56+
}
57+
58+
59+
WizardResendMails()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<openerp>
3+
<data>
4+
<record id="view_wizard_resend_mails" model="ir.ui.view">
5+
<field name="name">wizard.resend.mails</field>
6+
<field name="model">wizard.resend.mails</field>
7+
<field name="type">form</field>
8+
<field name="arch" type="xml">
9+
<form string="Resend emails">
10+
<label string="Select the emails you want to resend" colspan="4"/>
11+
<field name="state" invisible="1" on_change="onchange_domain(lines_ids, context)"/>
12+
<group colspan="4">
13+
<field
14+
name="lines_ids"
15+
widget="many2many"
16+
colspan="4"
17+
nolabel="1"
18+
width="600"
19+
height="300"
20+
/>
21+
</group>
22+
<group col="2" colspan="4">
23+
<button special="cancel" string="Cancel" icon="gtk-no"/>
24+
<button icon="gtk-ok" name="send_mails" string="Accept" type="object"/>
25+
</group>
26+
</form>
27+
</field>
28+
</record>
29+
<record id="action_wizard_resend_mails" model="ir.actions.act_window">
30+
<field name="name">Resend emails</field>
31+
<field name="res_model">wizard.resend.mails</field>
32+
<field name="view_type">form</field>
33+
<field name="view_mode">form</field>
34+
<field name="target">new</field>
35+
<field name="view_id" ref="view_wizard_resend_mails"/>
36+
</record>
37+
<record id="value_wizard_resend_mails" model="ir.values">
38+
<field name="object" eval="1"/>
39+
<field name="name">Resend emails</field>
40+
<field name="key2">client_action_multi</field>
41+
<field name="key">action</field>
42+
<field name="model">poweremail.campaign</field>
43+
<field name="value" eval="'ir.actions.act_window,'+str(ref('action_wizard_resend_mails'))" />
44+
</record>
45+
</data>
46+
</openerp>

0 commit comments

Comments
 (0)