|
@ -10,7 +10,7 @@ from io import BytesIO |
|
|
import base64 |
|
|
import base64 |
|
|
import csv |
|
|
import csv |
|
|
import os,secrets |
|
|
import os,secrets |
|
|
|
|
|
|
|
|
|
|
|
from datetime import datetime,timedelta,date |
|
|
_logger = logging.getLogger(__name__) |
|
|
_logger = logging.getLogger(__name__) |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -19,7 +19,7 @@ class opendons_operation(models.Model): |
|
|
_description = 'opération marketing : mailing, emailing evenements' |
|
|
_description = 'opération marketing : mailing, emailing evenements' |
|
|
_inherit = ['mail.thread'] |
|
|
_inherit = ['mail.thread'] |
|
|
_check_company_auto = True |
|
|
_check_company_auto = True |
|
|
#_order = "__last_update desc" |
|
|
|
|
|
|
|
|
#_order = "__last_update asc" |
|
|
code=fields.Char(string='Code',required=True, translate=True,track_visibility='always') |
|
|
code=fields.Char(string='Code',required=True, translate=True,track_visibility='always') |
|
|
name=fields.Char(string='Name',required=True, translate=True,copy=False,default='campagne',track_visibility='always') |
|
|
name=fields.Char(string='Name',required=True, translate=True,copy=False,default='campagne',track_visibility='always') |
|
|
partner_count = fields.Integer(string="count",readonly=True) |
|
|
partner_count = fields.Integer(string="count",readonly=True) |
|
@ -143,10 +143,13 @@ class opendons_operation(models.Model): |
|
|
if self.chanel=='mail': |
|
|
if self.chanel=='mail': |
|
|
writer.writerow(['id','key','name','firstname','title','street','street2','city','cp','country_name','operation','segment']) |
|
|
writer.writerow(['id','key','name','firstname','title','street','street2','city','cp','country_name','operation','segment']) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#sélections des contacts |
|
|
#sélections des contacts |
|
|
|
|
|
res=self.select_partner_operation() |
|
|
segments=self.env['opendons.segment'].search(['&',('operation_id','=',self.id),('exclusion','=',False)]) |
|
|
segments=self.env['opendons.segment'].search(['&',('operation_id','=',self.id),('exclusion','=',False)]) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#extraction des contacts sélectionnés sur chaque segment |
|
|
#extraction des contacts sélectionnés sur chaque segment |
|
|
|
|
|
q=0 |
|
|
for seg in segments: |
|
|
for seg in segments: |
|
|
if seg.partner_ids: |
|
|
if seg.partner_ids: |
|
|
for p in seg.partner_ids: |
|
|
for p in seg.partner_ids: |
|
@ -155,6 +158,7 @@ class opendons_operation(models.Model): |
|
|
id=p.id |
|
|
id=p.id |
|
|
key=p.key |
|
|
key=p.key |
|
|
name=p.name |
|
|
name=p.name |
|
|
|
|
|
email=p.email |
|
|
firstname=p.firstname if p.firstname else '' |
|
|
firstname=p.firstname if p.firstname else '' |
|
|
street=p.street if p.street else '' |
|
|
street=p.street if p.street else '' |
|
|
street2=p.street2 if p.street2 else '' |
|
|
street2=p.street2 if p.street2 else '' |
|
@ -168,15 +172,23 @@ class opendons_operation(models.Model): |
|
|
writer.writerow([id,key,name,firstname,email,operation,segment]) |
|
|
writer.writerow([id,key,name,firstname,email,operation,segment]) |
|
|
if self.chanel=='mail': |
|
|
if self.chanel=='mail': |
|
|
writer.writerow([id,key,name,firstname,title,street,street2,city,cp,country_name,operation,segment]) |
|
|
writer.writerow([id,key,name,firstname,title,street,street2,city,cp,country_name,operation,segment]) |
|
|
|
|
|
q=q+1 |
|
|
|
|
|
|
|
|
with open(csv_filename, 'r', encoding="utf-8") as f2: |
|
|
with open(csv_filename, 'r', encoding="utf-8") as f2: |
|
|
|
|
|
|
|
|
data = str.encode(f2.read(), 'utf-8') |
|
|
data = str.encode(f2.read(), 'utf-8') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
self.quantity=q |
|
|
self.csv_export=base64.encodestring(data) |
|
|
self.csv_export=base64.encodestring(data) |
|
|
self.document_fname='operation'+str(self.id)+'.csv' |
|
|
self.document_fname='operation'+str(self.id)+'.csv' |
|
|
self.exported_date=fields.Date.context_today(self) |
|
|
self.exported_date=fields.Date.context_today(self) |
|
|
|
|
|
#generation des exports par lot |
|
|
|
|
|
for batch_export_id in self.batch_export_ids: |
|
|
|
|
|
batch_export_id.csv_export_batch() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
os.unlink(csv_filename) |
|
|
os.unlink(csv_filename) |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -200,8 +212,10 @@ class opendons_operation(models.Model): |
|
|
|
|
|
|
|
|
for sg in segments: |
|
|
for sg in segments: |
|
|
if i==1: |
|
|
if i==1: |
|
|
|
|
|
|
|
|
mailing_domain='["&","!",'+segexcl.mailing_domain[1:-1]+','+ sg.mailing_domain[1:-1]+']' |
|
|
|
|
|
|
|
|
if segexcl.mailing_domain: |
|
|
|
|
|
mailing_domain='["&","!",'+segexcl.mailing_domain[1:-1]+','+ sg.mailing_domain[1:-1]+']' |
|
|
|
|
|
else: |
|
|
|
|
|
mailing_domain='['+sg.mailing_domain[1:-1]+']' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
partners=self.env['res.partner'].search(eval(mailing_domain)) |
|
|
partners=self.env['res.partner'].search(eval(mailing_domain)) |
|
@ -229,8 +243,11 @@ class opendons_operation(models.Model): |
|
|
else: |
|
|
else: |
|
|
str_domain='' |
|
|
str_domain='' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mailing_domain='["&","!",'+str_domain+ segexcl.mailing_domain[1:-1]+',' +sg.mailing_domain[1:-1]+']' |
|
|
|
|
|
|
|
|
if segexcl.mailing_domain: |
|
|
|
|
|
mailing_domain='["&","!",'+str_domain+ segexcl.mailing_domain[1:-1]+',' +sg.mailing_domain[1:-1]+']' |
|
|
|
|
|
else: |
|
|
|
|
|
mailing_domain='["&",'+sg.mailing_domain[1:-1]+']' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
partners=self.env['res.partner'].search(eval(mailing_domain)) |
|
|
partners=self.env['res.partner'].search(eval(mailing_domain)) |
|
|
#ajouts des contact à l'opération |
|
|
#ajouts des contact à l'opération |
|
@ -241,7 +258,7 @@ class opendons_operation(models.Model): |
|
|
|
|
|
|
|
|
i=i+1 |
|
|
i=i+1 |
|
|
|
|
|
|
|
|
self.exported_date=fields.Date.context_today(self, readonly=True) |
|
|
|
|
|
|
|
|
self.exported_date=datetime.now() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|